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

的语言,它可以直接映射客观世界事物间逻辑关系。在人工智能研究中得到应用,80年代日本声称研制的五代机以PROLOG作为主导语言并研制PROLOG机。

70年代,在传统语言中出现了以下有代表性的语言:

为了开发大型可维护程序,施乐公司1972-74年由GESCHKE领导研制了MESA语言。MESA是强类型结构化语言,有模块(若干子程序集合)概念;有抽象数据类型。支持并发程序设计,由监控器协调各模块执行。有分别编译,异常处理机制。保留GOTO语句,也可以抑制类型检查。由MESA配置语言编译的各模块。

1974年MIT的LISKOV和ZILLES提出CLU语言,它突出的是数据抽象。数据抽象是70年代程序设计语言技术的重要成果,它允许用户定义抽象的数据类型。这些类型的定义和它的实现可显示地分开。定义描述了语义,实现对于使用该数据的用户是无关重要的,因而,利于修改。增强模块性和独立性。从而利于保证程序正确。数据抽象可定义 更远离机器概念迫于人类的数据概念。如堆栈就可定义为抽象数据类型。人们可通过压入数据、弹出数据的操作对栈体进行操作。其外在行为就是后进先出的数据栈,而栈体可由数组、或链表、或记录任一种数据结构实现。CLU的抽象数据类型称之一簇(CLUSTER)。由构造算子

(CONSTRUCTOR)按簇的 板建立运算对象(实例)。CLU无GOTO,无全程量概念。用户可定义新的迭代(通过迭代算子ITERATOR)

数据抽象在1975年卡内基.梅隆大学WULF和SHAW开发的ALPHARD语言中是数据模块FORM。ALPHARD的特点是支持程序的验证。程序设计和验证同时进行。

另一个支持程序验证的语言是加州大学POPEK和加拿大的 HORNING于1976-77年开发的EUCLID。为了易于验证,无GOTO语句,指针仅限于集合类型,类型兼容有严格的定义。函数调用绝无边界效应。编译自动生成验证用的断言。EUCLID以后发展成数据流语言。

在并发程序方面,1975年丹麦学者B.HANSON开发了并发PASCAL。它没有追求大而全,只是将PASCAL向并发方面作了扩充,希望用PASCAL写操作系统。有抽象数据类型的类(CLASS)机制。控制方面提出进程类和管程类的概念。通过INIT语句激活类实例,CYCLE语句使进程无限循环地运行。通过管程(管理资源的模块)实现进程通讯。有较强的静态类型检查,可查出静态“死锁”。

令人不解的是正当人们对进程、管程概念充分评价时,B.HANSON本人放弃了这些概念,1981年发表了小型系统程序设计语言EDISON,仅用并发语句控制并发进程的执行。HANSON极力推崇语言的简单性,所以EDISON比并发

PASCAL小得多,普通(不大的)微机都可以运行。但其表达能力比C差多了。没有达到并发PASCAL那么的影响。

PASCA在结构化程序设计方面是一个示范性语言,在推行结构化程序设计教学上发挥了卓越的作用,但在工程实践上暴露出设计上的许多缺点。

PASCAL无模块和分别编译机制不能编大程序。它的强类型是有漏洞的,类型等价似乎是按名等价,但有的实现按结构等价。最后的结论它是“伪强类型”。数组定长对处理字符串很不方便。布尔表达式求值定义不严。I/O规定太死,难于改写出灵活的输入/输出。声明顺序过严,无静态变量概念(局部量一旦所在局部块执行完毕就消失)。这都给程序设计带来不便。

从小而灵活方面,它又不及C。

没有位(BIT)级操作。指针操作限制过死。

于是PASCAL的设计者1975年又开始开发MODULA语言,1977改进为MODULA-2。MODULA-2除了改进PASCAL的上述弱点而外,最重要的是有模块结构。可分别编译的模块是用户程序的资源。系统资源也以模块形式出现。模块封装了数据和操作(过程),模块定义和模块实现显示分开。程序员在定义模块中通过移入、移出子名控制程序资源(类型、变量、过程、子模块)的使用。MODULA-2增加了同步进程机制以支持并发程序设计,有有限的低级设施直接和系统打交道。取消GOTO

语句、增加CASE语句中OTHERWISE机制,封装的模块可作抽象数据类型设计。它是用于系统设计的强类型语言。

西欧的计算机科学家对MODULA-2是欢迎的,但它不巧与美国开发的ADA非常近似,与ADA竞争处于非常不利的地位。尽管它的9000句编译器具有ADA 20万句编译器80%的功能,也没有取得PASCAL那样的成就。

70年代年代中期美国软件的最大用户美国国防部(美国软件市场约2/3经费直接或间接与它相关)深感软件费用激增并开始研究原因。研究结果表明:在硬件成本降低和可靠性提高的同时,软件费用不仅相对数,绝对数也在增加。

美国国防部大量大型、实时、嵌入式系统软件开发方法落后、可靠性差。语言众多(常用种同加上派生方言多达成谅解5000种)造成不可移植、难于维护。为摆脱这种新的软件危机,其下定决心搞统一的军用通用语言。

从1975年成立高级语言工作组开始投资五亿美元,前后八年研制出Ada程序设计语言。Ada是在国际范围内投票设计的,法国的一家软件公司中标,J.ICHBIAN成为ADA发明人。多达1500名第一流软件专家参与了开发或评审。它反映了70年代末软件技术、软件工程水平。