zoukankan      html  css  js  c++  java
  • 你会几种语言写hello world?编程语言的发展

    汇编语言

    #hello.s 
    .data                    # 数据段声明
            msg : .string "Hello, world!\n" # 要输出的字符串
            len = . - msg                   # 字串长度
    .text                    # 代码段声明
    .global _start           # 指定入口函数
    
    _start:                  # 在屏幕上显示一个字符串
            movl $len, %edx  # 参数三:字符串长度
            movl $msg, %ecx  # 参数二:要显示的字符串
            movl $1, %ebx    # 参数一:文件描述符(stdout) 
            movl $4, %eax    # 系统调用号(sys_write) 
            int  $0x80       # 调用内核功能
    
                             # 退出程序
            movl $0,%ebx     # 参数一:退出代码
            movl $1,%eax     # 系统调用号(sys_exit) 
            int  $0x80       # 调用内核功能
    

    1、第一个计算机语言:Fortran
    Fortran I诞生于1957年,由IBM设计,是世界上第一个真正的计算机语言。
    Fortran I运行于IBM 704计算机上。
    Fortran I支持:变量(变量名最多6个字符)、If和do语句、格式化IO。
    不支持:数据类型声明、单独编译子程序
    Fortran II 发布于1958年,主要对Fortran I的编译器做了优化,并支持了单独编译的子程序。
    Fortran IV发布于1962年,并在1966年被标准化为Fortran 66,这也是第一个Fortran的标准化版本。
    1978年的Fortran 77是非重要的标准化版本,这时的Fortran语言已经大量的引进了其他计算机语言的特点,例如字符串处理、逻辑判断、带else子句的if语句等。
    Fortran的最新标准化版本是Fortran 2008。
    Fortran的设计思想基于冯诺依曼体系结构是命令式语言的鼻祖。

    program main
    print *,'Hello world'
    end
    

    2、源于数学的计算机语言:Lisp
    人工智能语言IPL(Information Processing Language)诞生于1956年。IPL相当于一种假想的计算机的机器语言,这种计算机是以列表处理为基础,这有别于冯诺依曼体系结构。IPL的关键是证明了:基于列表处理的计算机的可行性。
    1958年夏,约翰.麦卡锡在IBM研究代数表达式的微分运算时,产生了一系列对语言需求,包括:用数学函数控制流程的方法(即,递归和条件表达式);列表的自动分配;废弃列表的隐士回收。这些语言需求,显然IPL不能满足,所以需要设计新的语言。
    1958年秋,麦卡锡在MIT成立了人工智能小组,开始着手设计这种新的列表处理语言。这最终导致1960年,Lisp的诞生。
    1960年的Lisp并没有来得及设计自己的语法,就被麦卡锡的学生实现了,因为没有语法,麦卡锡的学生就以列表格式的语法分析树(即,S(Symbolic)表达式)作为临时语法。 但没有想到的是随着Lisp语言广泛流传,这种语法被程序员迅速介绍,并发现了其独特的魅力。
    麦卡锡希望Lisp的语法是数学表达式的元语言,命名为M(Mate)表达式,类似于后面的ML语言的语法。但是这种想法遭到了当时Lisp程序员的反对,最后麦卡锡开了MIT,从此Lisp的语法凝固在S表达式上。
    Lisp建立在列表和lambda演算和基础上,是函数式编程的鼻祖。

    (format t "hello, world")
    

    3、面向对象的起源:SIMULA 67
    1964年,在挪威计算机中心诞生了SIMULA I,然后不断的做改进最终于1967年,产生了SIMULA 67。
    SIMULA 67是对Algol 60的扩展,是第一个定义类结构的语言,这也被认为是面向对象的起源。
    将命令式编程中的数据和数据的有关函数集成在一起,就形成了面向对象编程中的对象,而对象的类型就是类。将命令式编程中主程序调用子程序的从属关系,变为面向对象编程中对象之间互相发送消息的平等关系。

    我也不会
    

    4、初学者的语言:BASIC
    BASIC语言诞生于1971年,设计的主要目的是:使得计算机语言可以被非理工科生使用(当时理工科学生使用的Fortran和Algol 60很难被文科生掌握)。
    这样的设计目的使得BASIC非常适合于初学者。
    BASIC来自于Fortran IV,语法受到Algol 60影响。是BASIC是第一个被广泛使用的分时处理语言。

    Private Sub Form_Load()
    Label1.Caption = "Helloworld"
    End Sub
    

    5、学院派语言:Pascal
    Pascal语言诞生于1971年,来自于Algol 68。
    Pascal重大影响来自于程序设计教学。它的出现取代了Fortran作为程序设计入门语言的地位。
    Pascal在工业界也有广泛的使用。

    program helloworld;
    writeln('hello, world')
    

    6、系统语言:C
    贝尔实验室的UNIX操作系统,最初版本使用汇编语言写成,并1970年,在UNIX上实现的第一个高级语言叫做B语言,B的目的是:用于开发UNIX系统程序,以及新版本的UNIX操作系统。B以BCPL语言为基础。
    BCPL,诞生于1967剑桥大写,它的祖先是1962年诞生诞生于同一所大学的CPL语言。
    B和汇编一样数据类型就是机器字,这极大的限制了B程序在不同位数的机器之间的迁移。B的这种不可一致性导致了C的产生。
    C语言就是B的改进版本,同样以BCPL基础,诞生引入了Algol 68的特点,使得C语言称为了一个可移植系统程序语言。
    C语言语法中对操作符的大量灵活的使用,极大的印象了后来的一批程序语言。

    #include <stdio.h>
    int main()
    {
    	printf("hello world
    ");
    	return 0;
    }
    

    7、强类型惰性纯函数式语言:Haskell
    Haskell是1990年标准化Miranda语言的结果。
    Miranda诞生于1986年,部分基于ML语言。
    Haskell最大的特点是惰性求值。

    main = print "Hello World"
    

    8、命令式面向对象语言:C++
    C++诞生于1983年,是在C的基础上,以SIMUAL 67的方式对命令式编程的面向对象扩展。C++的成功在于完全兼容C的情况下支持了面向对象,从而使面向对象编程成为了命令式编程的一个子类,传统的命令式编程被叫做面向过程编程。
    因为对C的完全兼容,ASNI在1989年的标准化版本C 89,合并的两种语言,叫做C/C++。
    C/C++的最重要版本是1999年的C 99。几乎吸收了当时被认为比较有效的计算机语言特性:面向过程编程、面向对象编程、泛型编程、自定义操作符重载等。
    C/C++的最新是2011年发布的C 11。引入的lambda表达式,垃圾回收等机制。
    由于C/C++吸收了太多的语言特性,使得C/C++成为世界上最难精通的语言,没有之一
    C/C++是目前使用人数最多的语言,和它一直竞争的是Java(具体可查看马海祥博客《关于C语言、C++、Java和Python这4种程序开发语言的评价》的相关介绍)。

    #include <iostream>
    using namespace std;
    int main()
    {
    	cout << "hello world" << endl;
    	return 0;
    }
    

    9、另一个对C进行面向对象扩展的语言:Objective-C
    Objective-C诞生于1983年,后来被苹果公司选中,和C++相似,也是对C的面向对象扩展。所不同的是C++以SIMUAL 67的面向对象为基础,Objective-C以Smalltalk的面向对象基础。
    Object-C一直伴随着苹果公司的操作系统一起发展,这两年随着iOS的开发被广泛使用。

    #import <Foundation/Foundation.h>
    
    int main(int argc,const char *argv[])
    
    {
    
        NSLog(@"Hello, Objective-C!");//输出“Hello, Objective-C!”
    
        return (0);
    
    }//main
    

    10、对Pascal进行面向对象扩展的语言:Delphi

    unit HelloWord;
    
    interface
    
    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls;
    
    type
     TForm1 = class(TForm)
       Button1: TButton;
       Label1: TLabel;
       procedure Button1Click(Sender: TObject);
     private
       { Private declarations }
     public
       { Public declarations }
     end;
    
    var
     Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    label1.Caption := 'hello word';
    end;
    
    end.
    

    Delphi诞生于1995年,是对Pascal的面向对象扩展,借鉴了C/C++的经验,但没有像C/C++后来那样的疯狂变化。
    11、脚本语言:Perl
    Perl发布于1987年。Perl起源于操作系统的控制台(shell)的命令。用户将完成某个工作的所有命令保存在一个sh文件里,这样只要执行这个文件就可完成对应功能,省去每次都要输入所有命令的麻烦。sh文件就叫做脚本。
    脚本只是一些命令行,可是发展到Perl时已经是一个相当成熟的语言了。

    #!/usr/bin/perl
    
    print "Hello World!/n";
    

    12、关联列表函数式面向对象脚本语言:Lua
    Lua诞生于1993年,设计目的是嵌入引用程序,成为其脚本。Lua以其小巧性著称。
    Lua基于Self和Scheme,它是第一个以关联列表最为主要数据的函数式语言。

    function printHello(printString)
        print(printString)
    end
     
    printHello("Hello World!")
    

    13、虚拟机面向对象语言:Java
    诞生于1995年的Java 1.0,来自于Sun公司,是第一个在虚拟机上运行的语言。
    再这之前计算机语言要么:由解释器解释执行源代码(大多数命令式语言),叫做动态语言;要么:将源代码编译连接成实际的计算机指令后再由计算机执行(大多数命令式语言),叫做静态语言。
    Java运行于JM(Java虚拟机)上,JM和解释器的区别是:JM会将Java源代码编译成字节码,然后然后再由JM解释执行。由于编译和执行过程是交错的,所以从外部来看就像是JM直接执行Java源代码一样。当然也可以,事先将Java源文件编译好,这样JM就可以直接执行了。
    Java的强有力竞争对手是C#。

    public class HelloWorld {
           public static void main(String[] args) {
                  System.out.println("我的第一个Java程序:Hello World。");
           }
    }
    

    14、面向对象解释式脚本语言:Python
    Python诞生于1989年,作者为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为 ABC语言的一种继承。ABC是作者开发的教学语言。
    Python和Perl用于相同领域,是面向过程+面向对象语言(具体可查看马海祥博客《Python语言代码的性能优化方法大全》的相关介绍)。

    print("hello world")
    

    15、纯面向对象解释式脚本语言:Ruby
    Ruby诞生于1996年,作者基于对Perl和Python的不满而设计,的纯面向对象脚本语言。
    Ruby基本等于Smalltalk + Lisp。

    <span style="font-size:18px;">puts "Hello World!"</span>
    

    16、Web服务器脚本语言:PHP
    PHP诞生于1994年,是Web服务器脚本语言。
    PHP和JavaScript的语发相似,都是嵌入在HTML中,只不过一个在服务器端,一个在浏览器端。

    <?php
    namespace HomeController;
    use ThinkController;
    
    class Demo1Controller extends Controller {
        public function index(){
                echo 'hello world';
            }
    }
    

    17、浏览器脚本语言:JavaScript
    1995年,网景公司发行的 Netscape Navigator 2.0,它的脚步语言就是JavaScript。
    JavaScript和Java没有任何关系,它的前身是ScriptEase。
    ScriptEase的诞生于1992年原名C-minus-minus,是一个足够强大可以替代宏操作(macro)的脚本语言,同时保持与 C足够的相似性,以便开发人员能很快学会。
    ScriptEase基于C和Self语言,支持面向过程和原型面向对象编程。
    JavaScript后来由引入了Lua语言,支持以关联列表作为数据格式的函数式编程,这种关联列表这就是著名的JSON。
    最后JavaScript是一个:表面叫Java脚本,但是和Java没有任何关系;表面上是一个像C语言一样的面向过程语言,但实际上是一个原型面向对象语言;表面上你创建了一个对象,但其实只是一个关联列表;表面上你在定义变量和赋值,其实只是<键,值>对;表面上你声明函数,其实只是<键,lambda表达式>对。表面上是一个命令式编程语言,但本质上是一个以关联列表为数据格式的函数式编程语言。

    console.log("Hello world")
    

    18、.NET平台主语言:C#
    C#于2000年和.NET开发平台一起由微软发布。
    C#是.NET开发平台的主语言。.NET开发平台包括,运行IL语言的虚拟机CLR,基于IL语言的公共类库,用于编译产生IL语言程序的高级语言,以及支持这些高级语言开发的编译的基础开发环境。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace demo1
    {
        class Program
        {
            static void Main(string[] args)
            {
            }
        }
    }
    
  • 相关阅读:
    iOS:Objective-C中Self和Super详解
    调试工具Instruments----Core Animation
    iOS开发之复制字符串到剪贴板
    Copy 和 mutableCopy
    TCP/IP,Http,Socket,XMPP的区别
    iOS程序中的内存分配 栈区堆区全局区(转)
    iOS常见算法(二分法 冒泡 选择 快排)
    老司机带你走进Core Animation
    C# 爬虫小程序
    C# 房贷计算器
  • 原文地址:https://www.cnblogs.com/coding365/p/12872254.html
Copyright © 2011-2022 走看看