程序设计语言简史
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计语言简史
程序设计语言诞生
1946冯·诺依曼提出了冯·诺依曼原理:
CPU逐条从存储器中取出指令执行,按指令取出存储的数据经运算后送回。
数据和指令(存储地址码、操作码)都统一按二进制编码输入。数据值的改
变是重新赋值,即强行改变数据存储槽的内容,所以说它是命令式的(imperative)。
第一台按冯·诺依曼原理制成的通用电动计算机是1951年美国兰德公司的UNIVAC-1。人们就开始了机器语言的程序设计:指定数据区编制一条条指令。
由于任何人也无法记住并自如地编排二进制码(只有1和0的数字串),则用8、16进制数写程序,输入后是二进制的。
单调的数字极易出错,人们不堪其苦,想出了将操作码改作助记的字符,
这就是汇编语言,汇编语言使编程方便得多。但汇编码编的程序必须要通过汇
编程序翻译为机器码才能运行。尽管汇编码程序和机器码程序基本一一对应,
但汇编语言出现说明两件事,一是开始了源代码--自动翻译器--目标代码的使
用方式,一是计算机语言开始向宜人方向的进程。
50年代高级语言出现
1954年Backus根据1951年Rutishauser提出的用编译程序实现高级语言
的思想,研究出第一个脱离机器的高级语言FORTRAN I。其编译程序用18个人
一年完成(用汇编语言写)。到1957年的FORTRANⅡ,它就比较完善了。它有变量、表达式、赋值、调用、输入/输出等概念;有条件比较、顺序、选择、循环控制概念;有满足科技计算的整、实数、复数和数组,以及为保证运算精度的
双精度等数据类型。表达式采用代数模型。
FORTRAN的出现使当时科技计算为主的软件生产提高了一个数量级,奠定
了高级语言的地位。FORTRAN也成为计算机语言界的英语式世界语。
1958年欧洲计算机科学家的一个组织GAMM和美国计算机协会ACM的专家
在苏黎士会晤起草了一个"国际代数语言IAL"的报告,随后这个委员会研制了ALGOL 58得到广泛支持和响应。1960年欧美科学家再度在巴黎会晤对ALGOL
58进行了补充,这就是众所周知的ALGOL 60。1962年罗马会议上对ALGOL 60
再次修订并发表了对"算法语言ALGOL 60修订的报告"。由于该报告对ALGOL
60定义采用相对严格的形式语法。ALGOL语言为广大计算机工作者接受,特别
在欧洲。在美国,IBM公司当时经营世界计算机总额75%的销售量,一心要推行FORTRAN,不支持ALOGL,以致ALGOL 60始终没有大发展起来。尽管如此,ALGOL 60还是在程序设计语言发展史上是一个重要的里程碑。
1959年为了开发在商用事务处理方面的程序设计语言,美国各厂商和机构
组成一个委员会。在美国国防部支持下于1960年4月发表了数据处理的COBOL 60语言。开发者的目标要尽可能英语化,使没有计算机知识的老板们也能看得懂。所以像算术运算符+、*都用英文ADD、MULTIPLY。COBOL 60的控制结构比FORTRAN还要简单,但数据描述大大扩展了,除了表(相当于数组)还有纪录、
文件等概念。COBOL 60虽然繁琐(即使一个空程序也要写150个符号),由于其
优异的输入/出功能,报表、分类归并的方便快速,使它存活并牢固占领商用事务软件市场,直到今天在英语国家的商业领域还有一定的地位。
50年代计算机应用在科学计算和事务处理方面有了FORTRAN、COBOL,因而应用得到迅速发展。工程控制方面刚刚起步,仍是汇编语言的市场。1957年,
美国MIT科学家McCarthy提出LISP,并把它用于数学定理验证等较为智能性
的程序上。但LISP在当时只是科学家的语言,没有进入软件市场。
60年代奠基性研究
60年代计算机硬件转入集成电路成本大幅度下降。应用普及的障碍是语言
及软件。这就促使对编译技术的研究。编译技术的完善表现在大型语言、多种
流派语言的出现。
1962年哈佛大学的K.Iverson提出APL语言。它是面向数学(矩阵)的语言。它定义了一套古怪的符号,联机使用非常简洁,深得数学家喜爱。它提出动态
数据(向量)的概念。
1962年AT&T公司贝尔试验室R.Griswold提出正文处理的SNOBOL,可以处理代数公式、语法、正文、自然语言。以后发展为SNOBOL 3,SNOBOL 4。80年代后裔叫ICON,用于测试。
1963-64年美国IBM公司组织了一个委员会试图研制一个功能齐全的大型语言。希望它兼有FORTRAN和COBOL的功能,有类似ALGOL 60完善的定义及控制结构,名字就叫程序设计语言PL/1。程序员可控制程序发生异常情况的异常处理、并行处理、中断处理、存储控制等。所以它的外号叫"大型公共汽车"。它是大型通用语言的第一次尝试,提出了许多有益的新概念、新特征。但终因过于复杂、数据类型自动转换太灵活、可靠性差、低效,它没有普及起来。但IBM公司直到80年代在它的机器上还配备PL/I。
1967年为普及程序语言教育,美国达特茅斯学院的J.G.Kemeny和
T.E.Kurtz研制出交互式、解释型语言BASIC("初学者通用符号指令码"字头)。由于解释程序小(仅8K)赶上70年代微机大普及,BASIC取得众所周知的成就。但是它的弱类型、全程量数据、无模块,决定了它只能编制小程序。它是程序员入门的启蒙语言。
LOGO语言是美国MIT的S.Papert教授于1967年开发的小型语言。其目的是无数学基础的青少年也能学习使用计算机,理解程序设计思想,自己编制过程或程序。但直到80年代初微机普及到家庭它才受到重视。LOGO是交互式语言,用户编程就在终端前定义过程命令,并利用系统提供的命令构成程序。LOGO的数据是数、字、表。由于它能方便地处理符号表,可以利用人工智能成果开发情报检索、演绎推理、自然语言会话小程序。青少年可设计各种智能游戏。屏幕上的海龟使青少年直观地构造各种图形。递归程序的表达能力使青少年可受到自动程序良好训练。1979年MIT LOGO小组推出Apple LOGO,及TI LOGO(德州仪器公司TI 99/4A机)。这两个版本最为普及。LOGO是青少年入门的启蒙语言。
LOGO的近于自然语言的命令及海龟、键盘、程序、图形并用的使用风格,对以后的命令式语言、用户界面语言有一定的影响。
1967年挪威计算机科学家O.J.DahI等人研制出通用模拟语言SIMULA67。它以ALGOL 60为基础,为分层模拟离散事件提出了类(Class)的概念。类将数