学者通用符号指令码的字头)。由于解释程序小(仅8K)赶上70年代微机大普及,BASIC取得众所周知的成就。但是它的弱类型、全程量数据、无模块决定了它只能编制小程序。它是程序员入门的启蒙语言。
1967年美国MIT的S.PAPERT教授开发了小型语言LOGO语言。其目的是无数学基础的青少年也能学习使用计算机,理解程序设计思想,自己编制过程或程序。但直到年代初微机普及到家庭它才受到重视。LOGO是交互式语言,用户编程就在终端前定义过程命令,并利用系统提供的命令构成程序。LOGO的数据是数、字、表。,由于它能方便地处理符号表,可以利用人工智能成果开发情报检索、演绎推理、自然语言会话小程序。青少年可设计各种智能游戏。递归程序的表达能力使青少年可受到结构化程序良好训练。
1979年MIT LOGO小组推出APPLE LOGO,及TI LOGO(德州仪器公司TI 99/4A机)。这两个版本最为普及。LOGO是青少年入门的启蒙语言。LOGO的近于自然语言的命令及海龟、键盘、程序、图形并用的使用风格,对以后的命令式语言、用户界面语言有一定的影响。
1967年挪威计算机科学家O.J.DAHL等人研制出通用模拟
语言SIMULA 67。它以ALGOL 60为基础,为分层模拟离散事件提出了类(CLASS)的概念。类将数据和其上的操作集为一体,定义出类似类型的板。实例进入运算。这是抽象数据类型及对象的先声。
60年代软件发展史上出了所谓的“软件危机”,是由于1962年美国金星探测卫星水手二号发射失败引起的。经多方测试在水手一号发射不出错的程序在水手二号出了问题。软件无法通过测试证明它是正确的。于是,许多计算机科学家转入对程序正确性证明的研究。
这时,著名的荷兰科学家E.DIJKSTRS 提出的“GOTO 语句是有害的”著名论断引起了一场在争论。从程序结构角度而言,滥用GOTO语句会使程序无法分析、难于测试、不易修改。 这里也提出了全程变量带来的数据耦合效应、函数调用的副作用、类型隐含声明和自动转换所带来的难于控制的潜伏不安全因素等等过程语言中的一些致使性弱点。
60年代对大型系统软件的需求大为增长(如编制较完善操作系统、大型军用系统),要求使用高级语言以解决生产率之需,加上高级语言使用以来积累的经验,加深了众对软件本质、程序语言的理解。
人们积极研制反映新理论的语言
1964年ALGOL工作组成员N.WIRTH改进了ALGOL 60提出ALGOL W近于结构化的语言。由于它结构简洁、完美、又结构化。ALGOL W 成为软件教程中示例语言。他带着ALGOL W 参加新一代ALTOL的研究委员会,即开发ALGOL 68的工作组。
ALGOL 68追求的目标也是能在多个领域使用的大型通用语言。1965年以WIJNGA ARDEN为首的一批科学家开始研究新ALGOL。强调了语言设计中冗余性(少作隐含约定)、抽象性(数据抽象与控制抽象)、正交性(一个语言机制只在一处定义并与其它机制无关)。强化了类型定义和显式转换;有并发、异常处理功能;保留GOTO允许有限制的函数边界效应;过程可以作为参数传递;用户可定义较复杂数据结构、定义运算符。语法定义是半英语半形式的。语言作成可扩充式,也就是说,有一个相对完备的语言核心,不断定义功能过程而扩大语言描述能力。表达式采用有利于编译效率的逆波兰表示法。
ALGOL 68集了当时语言和软件技术之大成。但因学究气太重,一般程序员难于掌握。强调语言简单的人持有不同看法。但文本草案在WIJNGA ARDEN坚持下通过了。为此,DIJKSTRA等人发表了“少数人声明“。N.WORTH带着竞争失败的ALGOL W 回去研究,发表了著称于世的PASCAL。
1971年PASCAL正式问世。PASCAL 的研制者一开始就本
着“简单、有效、可靠”的原则设计语言。它只限于顺序程序设计。是结构化程序设计教育示范语言。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