程序设计语言简史

上传人:桔**** 文档编号:494813147 上传时间:2023-10-19 格式:DOC 页数:12 大小:41.01KB
返回 下载 相关 举报
程序设计语言简史_第1页
第1页 / 共12页
程序设计语言简史_第2页
第2页 / 共12页
程序设计语言简史_第3页
第3页 / 共12页
程序设计语言简史_第4页
第4页 / 共12页
程序设计语言简史_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《程序设计语言简史》由会员分享,可在线阅读,更多相关《程序设计语言简史(12页珍藏版)》请在金锄头文库上搜索。

1、程序设计语言简史程序设计语言诞生1946冯诺依曼提出了冯诺依曼原理:CPU逐条从存储器中取出指令执行,按指令取出存储的数据经运算后送回。数据和指令(存储地址码、操作码)都统一按二进制编码输入。数据值的改变是重新赋值,即强行改变数据存储槽的内容,所以说它是命令式的(imperative)。第一台按冯诺依曼原理制成的通用电动计算机是1951年美国兰德公司的UNIVAC-1。人们就开始了机器语言的程序设计:指定数据区编制一条条指令。由于任何人也无法记住并自如地编排二进制码(只有1和0的数字串),则用8、16进制数写程序,输入后是二进制的。单调的数字极易出错,人们不堪其苦,想出了将操作码改作助记的字符

2、,这就是汇编语言,汇编语言使编程方便得多。但汇编码编的程序必须要通过汇编程序翻译为机器码才能运行。尽管汇编码程序和机器码程序基本一一对应,但汇编语言出现说明两件事,一是开始了源代码-自动翻译器-目标代码的使用方式,一是计算机语言开始向宜人方向的进程。50年代高级语言出现1954年Backus根据1951年Rutishauser提出的用编译程序实现高级语言的思想,研究出第一个脱离机器的高级语言FORTRAN I。其编译程序用18个人一年完成(用汇编语言写)。到1957年的FORTRAN,它就比较完善了。它有变量、表达式、赋值、调用、输入/输出等概念;有条件比较、顺序、选择、循环控制概念;有满足科

3、技计算的整、实数、复数和数组,以及为保证运算精度的双精度等数据类型。表达式采用代数模型。FORTRAN的出现使当时科技计算为主的软件生产提高了一个数量级,奠定了高级语言的地位。FORTRAN也成为计算机语言界的英语式世界语。1958年欧洲计算机科学家的一个组织GAMM和美国计算机协会ACM的专家在苏黎士会晤起草了一个国际代数语言IAL的报告,随后这个委员会研制了ALGOL 58得到广泛支持和响应。1960年欧美科学家再度在巴黎会晤对ALGOL 58进行了补充,这就是众所周知的ALGOL 60。1962年罗马会议上对ALGOL 60再次修订并发表了对算法语言ALGOL 60修订的报告。由于该报告

4、对ALGOL 60定义采用相对严格的形式语法。ALGOL语言为广大计算机工作者接受,特别在欧洲。在美国,IBM公司当时经营世界计算机总额75%的销售量,一心要推行FORTRAN,不支持ALOGL,以致ALGOL 60始终没有大发展起来。尽管如此,ALGOL 60还是在程序设计语言发展史上是一个重要的里程碑。1959年为了开发在商用事务处理方面的程序设计语言,美国各厂商和机构组成一个委员会。在美国国防部支持下于1960年4月发表了数据处理的COBOL 60语言。开发者的目标要尽可能英语化,使没有计算机知识的老板们也能看得懂。所以像算术运算符+、*都用英文ADD、MULTIPLY。COBOL 60

5、的控制结构比FORTRAN还要简单,但数据描述大大扩展了,除了表(相当于数组)还有纪录、文件等概念。COBOL 60虽然繁琐(即使一个空程序也要写150个符号),由于其优异的输入/出功能,报表、分类归并的方便快速,使它存活并牢固占领商用事务软件市场,直到今天在英语国家的商业领域还有一定的地位。50年代计算机应用在科学计算和事务处理方面有了FORTRAN、COBOL,因而应用得到迅速发展。工程控制方面刚刚起步,仍是汇编语言的市场。1957年,美国MIT科学家McCarthy提出LISP,并把它用于数学定理验证等较为智能性的程序上。但LISP在当时只是科学家的语言,没有进入软件市场。60年代奠基性

6、研究60年代计算机硬件转入集成电路成本大幅度下降。应用普及的障碍是语言及软件。这就促使对编译技术的研究。编译技术的完善表现在大型语言、多种流派语言的出现。1962年哈佛大学的K.Iverson提出APL语言。它是面向数学(矩阵)的语言。它定义了一套古怪的符号,联机使用非常简洁,深得数学家喜爱。它提出动态数据(向量)的概念。1962年AT&T公司贝尔试验室R.Griswold提出正文处理的SNOBOL,可以处理代数公式、语法、正文、自然语言。以后发展为SNOBOL 3,SNOBOL 4。80年代后裔叫ICON,用于测试。1963-64年美国IBM公司组织了一个委员会试图研制一个功能齐全的大型语言

7、。希望它兼有FORTRAN和COBOL的功能,有类似ALGOL 60完善的定义及控制结构,名字就叫程序设计语言PL/1。程序员可控制程序发生异常情况的异常处理、并行处理、中断处理、存储控制等。所以它的外号叫大型公共汽车。它是大型通用语言的第一次尝试,提出了许多有益的新概念、新特征。但终因过于复杂、数据类型自动转换太灵活、可靠性差、低效,它没有普及起来。但IBM公司直到80年代在它的机器上还配备PL/I。1967年为普及程序语言教育,美国达特茅斯学院的J.G.Kemeny和T.E.Kurtz研制出交互式、解释型语言BASIC(初学者通用符号指令码字头)。由于解释程序小(仅8K)赶上70年代微机大

8、普及,BASIC取得众所周知的成就。但是它的弱类型、全程量数据、无模块,决定了它只能编制小程序。它是程序员入门的启蒙语言。LOGO语言是美国MIT的S.Papert教授于1967年开发的小型语言。其目的是无数学基础的青少年也能学习使用计算机,理解程序设计思想,自己编制过程或程序。但直到80年代初微机普及到家庭它才受到重视。LOGO是交互式语言,用户编程就在终端前定义过程命令,并利用系统提供的命令构成程序。LOGO的数据是数、字、表。由于它能方便地处理符号表,可以利用人工智能成果开发情报检索、演绎推理、自然语言会话小程序。青少年可设计各种智能游戏。屏幕上的海龟使青少年直观地构造各种图形。递归程序

9、的表达能力使青少年可受到自动程序良好训练。1979年MIT LOGO小组推出Apple LOGO,及TI LOGO(德州仪器公司TI 99/4A机)。这两个版本最为普及。LOGO是青少年入门的启蒙语言。LOGO的近于自然语言的命令及海龟、键盘、程序、图形并用的使用风格,对以后的命令式语言、用户界面语言有一定的影响。1967年挪威计算机科学家O.J.DahI等人研制出通用模拟语言SIMULA67。它以ALGOL 60为基础,为分层模拟离散事件提出了类(Class)的概念。类将数据和其上的操作集为一体,定义出类似类型的样板。以实例进入运算。这是抽象数据类型及对象的先声。60年代软件发展史上出了所谓

10、的软件危机。事情是由1962年美国金星探测卫星水手二号发射失败引起的。经多方测试在水手一号发射不出错的程序在水手二号出了问题。软件无法通过测试证明它是正确的。于是,许多计算机科学家转入对程序正确性证明的研究。这时,著名的荷兰科学家E.Dijkstra提出的goto语句是有害的著名论断,引起了一场大争论。从程序结构角度而言,滥用goto语句会使程序无法分析、难于测试、不易修改。这时也提出了全程变量带来的数据耦合效应、函数调用的副作用、类型隐含声明和自动转换所带来的难于控制的潜伏不安全因素等等过程语言中的一些致命性弱点。60年代对大型系统软件的需求大为增长(如编制较完善操作系统、大型军用系统),要

11、求使用高级语言以解决生产率之需,加上高级语言使用以来积累的经验,加深了人们对软件本质、程序语言的理解。人们积极研制反映新理论的语言。1964年,ALGOL工作组成员N.Wirth改进了ALGO 60,提出结构化的语言ALGOL W。由于它结构简洁、完美。ALGOL W成为软件教程中示例语言。1968年,他带着ALGOL W参加新一代ALGOL的研究委员会,即开发ALGOL 68的工作组。ALGOL 68追求的目标也是能在多个领域使用的大型通用语言。1965年以Wijngaarden为首的一批科学家开始研究新ALGOL。强调了语言设计中冗余性(少作隐含约定)、抽象性(数据抽象与控制抽象)、正交性

12、(一个语言机制只在一处定义并与其它机制无关)。强化了类型定义和显式转换;有并发、异常处理功能;保留goto允许有限制的函数边界效应:过程可以作为参数传递;用户可定义较复杂数据结构、定义运算符。语法定义是半英语半形式化的。语言作成可扩充式,也就是说,有一个相对完备的小语言核心,可以不断增加新特征以增强语言表达能力。表达式采用利于快速编译和提高目标码效率的逆波兰表示法。ALGOL 68集中了当时语言和软件技术之大成。但因学究气太重,一般程序员难于掌握。强调语言简单的人持有不同看法。但文本草案在Wijngaarden坚持下通过了。为此,Dijkstra等人发表了少数人声明。N.Wirth带着竞争失败

13、的ALGOL W回去研究以后著称于世的Pascal。Pascal的研制者一开始就本着简单、有效、可靠的原则设计语言。1971年Pascal正式问世后取得了巨大的成功。它只限于顺序程序设计。是结构化程序设计教育示范语言。Pascal有完全结构化的控制结构。为了方便,除三种最基本的控制结构(顺序、if-then=else、while-do)外,又扩充了二种(do-until、for-do)。程序模块有子程序(过程和函数),分程序,可任意嵌套,因而有全程量、局部量、作用域与可见性概念。保留goto语句但不推荐使用。Pascal的数据类型大大丰富了,有整、实、字符、布尔等纯量类型:有数组、记录、变体记

14、录、串等结构类型;增加了集合、枚举、指针类型。为用户描述复杂的数据结构乃至动态数据提供了方便。所有进入程序的数据都要显式声明、显式类型转换。并加强了编译时刻类型检查、函数的显式的值参和变量参数定义便于限制边界效应。在人们为摆脱软件危机而对结构化程序设计寄于极大希望的时代,Pascal得到很快的普及。它也是对以后程序语言有较大影响的里程碑式的语言。70年代完善的软件工程工具硬件继续降价,功能、可靠性反而进一步提高。人们对软件的要求,无论是规模、功能、还是开发效率都大为提高了。仅管Pascal得到普遍好评,但它只能描述顺序的小程序,功能太弱。在大型、并发、实时程序设计中无能为力。程序越大越要求高的

15、抽象力、安全性、积少成多的模块拼合功能。为了对付日益加剧的新意义上的软件危机。70年代语言继续发展,在总结PL/1和ALGOL 68失败的基础上,研制大型功能齐全的语言又一次掀起高潮。70年代是微机大发展的时代。设计精巧的小型过程语言藉微机普及得到发展。软件市场FORTRAN、COBOL、汇编的三分天下开始缓慢地退却。结构化FORTRAN、COBOL力图在新的竞争中保全自己的地位,专用语言丛生。一旦证实它的普遍性,它就变为通用语言。C就是在这种情况下成长起来的优秀语言。硬件的完善使得过去难以实施的组合爆炸算法得以缓解。人工智能的专家系统进入实用。LISP发展为INTEL LISP和MAC LI

16、SP两大分支,其他智能语言陆续推出。特别是Backus在1978年发表程序设计能从冯诺依曼风格中解放出来吗?一文。非过程式语言、高抽象模式语言大量涌现。70年代继60年代的形式语言语法研究,形式语义取得重大成果。最先是IBM维也纳实验室集合欧洲著名的计算机科学家于1972年写出PL/1的操作语义。该语义用维也纳定义语言VDL表达,长达1500页,终因抽象层次太低,而此时(1971年)牛津大学D.Scott和C.Strachey提出了更加数学化的指称语义学,维也纳实验室转而研究PL/1的指称语义描述。1973-1978年D.Bjorner和C.Jones开发了维也纳开发方法VDM。所用语言是Meta IV。虽然巨大投资(3.5亿)未见可见效益,IBM终止了维也纳实验室的语义学研究方向,但VDM方法及指称语言学对计算机语言发展影响是深远的。1973年C.Hoare和Wirth用指称语义写Pascal语义

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号