程序设计语言的历史回顾与分类 下载本文

着“简单、有效、可靠”的原则设计语言。它只限于顺序程序设计。是结构化程序设计教育示范语言。PASCAL有完全结构化的控制结构。为了方便,除三种最基本的控制结构(顺序、if-then-else、while-do)外,又扩充了二种(do-until、for-do)。程序模块有子程序(过程和函数)、分程序,可任意嵌套,因而有全程量、局部量、作用域与可见性概念。保留GOTO语句但不推荐使用。PASCAL的数据类型大大丰富了,有整、实、字符、布尔等纯量类型;有数组、记录、变体记录、串等结构类型;增加了集合、枚举、指针类型。为用户描述复杂的数据结构乃至动态数据提供了方便。所有进入程序的数据都要显示声明、显示类型转换。加强了编译时刻类型检查。函数的显示的值参和变量参数定义便于限制边界效应。

在人们为摆脱软件危机而对结构化程序设计寄予极大希望的时候,PASCAL得到很快的普及。它也是对以后程序语言有较大影响的里程碑式的语言。

5.70年代完善的软件工程工具

硬件继续降价、功能、可靠性反而进一步提高。人们对软件的要求,无论是规模、功能、不是开发效率都在为提高了。仅管 PASCAL得到普遍好评,但它只能描述顺序的小程序,功能太弱。在大型、并发、实时程序设计中无能为力。

程序越大越要求高的抽象力、安全性、积少成多的模块拼合功能。为了对付日益加剧的新意义上的软件危机。70年代过程语言继续发展,在总结PL/1和ALGOL 68失败的基础上,研制大型功能齐全的语言又一次掀起高潮。

70年代是微机大发展的时代。设计精巧的小型过程语言藉微机普及得到发展。软件市场FORTRAN、COBOL、汇编的三分天下开始缓避退却。

结构化FORTRAN、COBOL力图在新的竞争中保全自己的地位,专用语言丛生。一旦证实它的普遍性,它就变为通用语言。 C就是在这种情况下成长起来的优秀语言。

硬件的完善使得过去难以实施的组合爆炸算法得以缓解。人工智能的专家系统进入实用。LISP发展为INTEL LISP 和 MAC LISP两大分支,其他智能语言陆续推出。特别是BACKUS在1978年发表“程序设计能从冯·诺依曼风格中解放出来吗?”一文发表后,非过程式语言、高抽象模式语言大量涌现。PROLOG取得巨大成功。

70年代继承60年代形式语言语法研究,形式语义取得重大成果。

最先是IBM维也纳实验室集合欧洲著名的计算机科学家于1972年写出PL/1的操作语义。该语义用维也纳定义语言VDL

表达,长达1500页,终因抽象层次太低,而此时(1971年)牛津大学D.SCOTT和C.STRACHEY提出了更加数学化的指称语义学转而研究PL/1的指称语义描述。

1973-1978年D.BJORNER和C.JONES开发了维也纳开发方法VDM。所用语言是METALV。虽然巨大投资(3.5亿)未见可见效益使IBM终止了维也纳实验室的语义学研究。 但VDM方法及指称语言学对计算机语言发展影响是深远的。1973年C.HOARE和WIRTH用指称语义写PASCAL的语义发现了PASCAL设计上的许多问题竞未做下去。VDM以后还用于多种语言如CHILL,ADA,指导编译器的开发。

1971-72年,DEC公司和卡内基.梅隆大学的WULF合作,开发了PDP(VAX)上的系统程序设计BLISS。它是无类型的结构化语言,没有GOTO语句。有异常处理和汇编接口。面向表达式。直到现在DEC公司还用它作系统设计。

1972年,AT&T公司贝尔试验室RITCHIE开发了C语言。C语言的原型是1969年RICHARD开发的系统程序设计语BCPL。K.THOMPSON将BCPL改选成B语言,用于重写UNIX多用户操作系统。在PDP-11机的UNIX第五版时用的是将B改选后的C。C扩充了类型(B是无类型的)。1973年UNIX第五版权所90%左右的源程序是用C写的。它使UNIX成为世界上第一个易于移植的操作系统。UNIX以后发展成为良好的程序设计

环境,反过来又促进了C的普及。

C语言是小语言,追求程序简洁,编译运行效率高。是一个表达能力很强的顺序程序设计语言。它给程序员较大的自由度,下层数据转换灵活。程序正确必完全由程序员负责。上层是结构化的控制结构,有类似PASCAL的数据类型。糨的分别编译机制使糨可构成大程序。输入/输出依赖于UNIX,使语言简短。语言学家极力反对的GOTO语句、无控制指针、函数边界效应、类型灵活转换、全程量这些不安全的根源C全部具备。在某种意义下C得益于灵活的指针、函数副作用和数据类型灵活的解释。易读性又不好,偏偏程序员都喜爱它。

因为它有大量环境工具支持。C程序写起来又短,调试起来又快。微机上的各种移植版的C语言,对C成为通用的程序设计语言起到了推波助澜的作用。C语言正以席卷系统程序设计领域的势头发展,并向应用域扩展,很值得研究。

1972年法国MARSEILLE大学的P.ROUSSELL研制出非过程的PROLOG语言。PROLOG有着完全崭新的程序设计风格,它只需要程序员声明“事实”“规则”。事实规则都以一阶谓词的形式表示。PROLOG规则的执行是靠该系统内部的推理机,而推理机按一定的次序执行。在这个意义上它又有点过程序性。以回溯查找匹配。PROLOG的数据结构类似PASCAL的记录或LISP的表。它是以子句为基础的小语言,最初被解释执行,编译PROLOG是很久以后的事,由于PROLOG是逻辑推理模型