设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

编程语言简史

2014-11-10 12:12| 发布者: joejoe0332| 查看: 4500| 评论: 0|原作者: deepinmind.com|来自: deepinmind.com

摘要: 一个朋友在跟我一块吃午饭的时候问了我一个问题:现代编程语言的发展历程是什么样的,它是如何发展到现在这样的?他觉得我应该能答得上来,但其实我只能说个大概。我跟他提了下机器语言,以及人们为了简化它所做的努 ...


汇编语言

  汇编语言并不是机器代码,不过也差不多。它直接关系到底层的架构,因此也就是没有任何抽象。

  可以通过汇编程序来将汇编语言翻译成机器代码。汇编程序是第一个发明出来的软件工具。

  下面是一段代码:

MOV AL, 1h ; Load AL with immediate value 1
MOV CL, 2h ; Load CL with immediate value 2
MOV DL, 3h ; Load DL with immediate value 3

  汇编程序早在50年代就已经出现了,因为它们并不需要太多的代码分析:大多数时候它们只是把指令翻译成对应的可执行的指令就好了。程序员需要像底层的机器或者架构一样来进行思考。

  一些资源有限的电子设备仍然在使用汇编语言,由汇编语言的程序去加载高级语言以及相关的库(比如说,硬件固件)。

  70年代和80年代间汇编语言非常流行。比如说,几乎所有的控制台游戏都使用汇编语言,因为可用的内存少到仅有几KB。最早的1984的Macintosh机上许多代码都是用汇编语言写的,因为这样比较节省资源。


Fortran

  它出现的时候,人们已经对高级编程语言(就是比汇编语言抽象程序更高的语言)进行了大量的研究了。

  Fortran最早是在50年代由IBM所发明的。

  这个时候,发明特定的编程语言是为了解决特定领域的问题的:Fortran的发明是用于科学计算的,它很快便成为了这一领域的主流语言,并在随后的50年间取得了大量的成就。

  到目前为止,在高性能计算领域它还是最流行的编程语言之一,世界上最快的超级计算机的测试及排名的程序就是由它编写的(参见http://en.wikipedia.org/wiki/Fortran)。

  Fortran开创了使用星号来进行乘法的惯例,现在几乎所有的语言都仍在沿用这一规。

  Fortran程序是这样的:

Program Hello
Print *, "Hello World!"
End Program Hello

  下面是一张包含了一个Fortran程序的穿孔卡:


COBOL

  COBOL(COmmon Business-Oriented Language, 面向商业的通用语言)的设计目标是用于商业用途。它试图使得编程语言看上去更像是英语,这样编程人员和维护人员都能看得懂。

  Grace Hopper 也是它的设计者之一(就是发现了“BUG”的那位女士),她还发明了一门类英语的数据处理语言FLOW-MATIC,要实现一门类英语的通用的业务开发语言,她绝对是不二人选。

  下面是COBOL中一个"Hello World!"程序的例子:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
ENVIRONMENT DIVISION.       
DATA DIVISION.
PROCEDURE DIVISION.
MAIN.
    DISPLAY 'Hello, world.'.
    STOP RUN.
  
  

BASIC

  BASIC(初学者通用符号指令代码,Beginner’s All-purpose Symbolic Instruction Code)由John G. Kemeny与Thomas E.Kurtz于1964年在新罕布什尔州的达特茅斯学院所发明。

  BASIC就是为了分时系统所设计的。它是简化版的Fortran,更容易进行编程。

  它提供了一种非常聪明的按行号来编辑程序的方式,不仅编写程序的时候会用到,像GOTO行跳转这样的操作也会用到。

  从70年代中期到80年代,微机上通常都安装有不同版本的BASIC,这通常都是随着机器的固件一起发布的,这样小企业,教授,业余爱好者,咨询师等都可以在他们买得起的计算机上定制软件。

  BASIC孕育了许多不同的语言,包括Visual BASIC,很长一段时间内它都是世界上最流行的编程语言,它是微软从Microsoft BASIC中改进而来的。

  下面是一个简单的BASIC程序(用GW-BASIC写的):

10 INPUT "What is your name: ", U$
20 PRINT "Hello "; U$
30 INPUT "How many stars do you want: ", N
40 S$ = ""
50 FOR I = 1 TO N
60 S$ = S$ + "*"
70 NEXT I
80 PRINT S$
90 INPUT "Do you want more stars? ", A$
100 IF LEN(A$) = 0 THEN GOTO 90
110 A$ = LEFT$(A$, 1)
120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30
130 PRINT "Goodbye "; U$
140 END

ALGOL 60

  ALGOL60(算法语言1960,ALGOrithmic Language 1960)是1960年在专业协会推动下所诞生的非常优秀且影响巨大的一门编程语言。

  它从未流行过但是它引入了许多重要的概念,包括取消GOTO语句。

  像BASIC这样的语言里会需要用到行间跳转,这样使得程序的可读性很差,写出来的程序也很容易出错。

  ALGOL 60引入了结构体与块的概念:它使用BEGIN和END(当时还没有花括号呢),多亏了ALGOL 60才开始有了块的概念,而不用再使用GOTO语句了。

  ALGOL的目标是通用性更强一些,以便科学计算和业务开发都能使用。

  ALGOL程序是这样的:

procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k);
    value n, m; array a; integer n, m, i, k; real y;
comment The absolute greatest element of the matrix a, of size n by m
is transferred to y, and the subscripts of this element to i and k;
begin integer p, q;
    y := 0; i := k := 1;
    for p:=1 step 1 until n do
    for q:=1 step 1 until m do
        if abs(a[p, q]) > y then
            begin y := abs(a[p, q]);
            i := p; k := q
            end
end Absmax


Pascal

  Pascal由Niklaus Wirth于1968到1969年间进行设计并于1970年公诸于世,它也受到了ALGOL语言的影响。

  它一度非常流行,尽管最初仅是设计为一个教学工具,但很长一段时间内有不少人都用它来进行通用性的编程。

  然而,它的模块化有所欠缺并有一些设计上的问题,使得这门语言编程起来比较困难。

  上段代码吧:

while a <> b do  WriteLn('Waiting');
 
if a > b then WriteLn('Condition met')   {no semicolon allowed!}
           else WriteLn('Condition not met');
 
for i := 1 to 10 do  {no semicolon for single statements allowed!}
  WriteLn('Iteration: ', i);
 
repeat
  a := a + 1
until a = 10;
 
case i of
  0 : Write('zero');
  1 : Write('one');
  2 : Write('two');
  3,4,5,6,7,8,9,10: Write('?')
end;

  (我仍记得14岁的时候在学校用Pascal编程的情形,简直酷毙了)。



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部