1952至1956年间,程序设计经历了一个演变的过程,这部分是由于系统分组的复杂性要求一个更具结构性的操作系统,部分是由于科学、数学上对程序设计都提出了提高工作效率的需求。这种演变是全球性的。1957年,美国计算机协会(ACM)成立了程序设计语言委员会,准备与以当时联邦德国应用数学和力学协会(GAMM)为主的欧洲小组一起合作,设计通用的高级程序语言。不久,一种全新的程序设计语言诞生了。
佩利Ⓢ
佩利,美国数学家、计算机科学家。他1947年取得加州理工学院数学硕士学位,1950年取得麻省理工学院数学博士学位。1951年在美国陆军军械部设在马里兰州的阿伯丁试验基地内的弹道研究实验室干了一年后,他回到麻省理工学院参加“旋风”计算机计划,为“旋风”计算机编制程序。
世界上第一台存储程序式电子计算机是威尔克斯设计、完成于1949年5月的EDSAC,最早开始研制的存储程序式计算机则是冯·诺伊曼设计、宾夕法尼亚州斯沃斯莫尔学院建造的EDVAC。但EDSAC和EDVAC都是串行计算机,即数据的传送和运算是按位逐一进行的。这样的计算机运算部件少,运算也简单,但速度较慢,不能满足某些应用的需要。世界上第一台存储程序式的并行计算机就是“旋风”计算机,它的设计要满足用风洞来研究飞机稳定性的要求。处理飞机稳定性需要2000条以上指令,必须改串行为并行。考虑到机器体积不宜过大,“旋风”计算机被设计成16位字长的并行计算机。
“旋风”计算机Ⓦ
佩利在“旋风”计算机上工作到1952年9月。之后,佩利来到印第安纳州普渡大学,创建了全美大学中的第一个计算中心,并出任计算中心主任。他在那里设计了一种称为“内部翻译者”(Internal Translator,简称IT)的语言,并开发了IT的编译器。1956年,佩利转到卡内基理工学院,又推动该校成立了计算中心,他自己出任主任。这些工作奠定了佩利作为计算机程序设计语言先行者的地位。当ACM于1957年成立程序设计语言委员会时,佩利被任命为这个委员会的主席。
1958年5月27日,瑞士苏黎世召开了一场8个人的研讨会,出席的有ACM的4名代表和GAMM的4名代表,佩利是这次会议的组织者。出席研讨会的专家们力求设计并规划一种更好的高级语言,叫做国际代数语言(IAL)。在讨论过程中,佩利认为IAL这个词很绕口,于是将它改名为ALGOL,它是Algorithmic Language(算法语言)的简称。会议结束后,他们成立了一个工作组,根据讨论的结果开发ALGOL的编译器。1958年年底,第一套编译器诞生了,按照年份命名为ALGOL 58。
1960年1月,在总结了一些经验之后,佩利再次召集参与ALGOL工作的计算机科学家在巴黎开了又一场研讨会,会上发表了《算法语言ALGOL 60报告》,确定了程序设计语言ALGOL 60。《算法语言ALGOL 60报告》首先使用了巴克斯—诺尔范式来定义程序设计语言的语法,17页长的报告展示了对优雅清晰的语言的完美定义。而之前的所有计算机语言都只有说明性的使用手册和编译代码,没有正式的定义。这份报告的执笔人就是改进了巴克斯提出的描述语言语法方案,使之完善成为巴克斯—诺尔范式的丹麦天文学家、计算机科学家诺尔博士,他被认为是创造了这种算法语言的强大功能和简易性的重要贡献者。
卡内基理工学院Ⓞ
ALGOL 60是程序设计语言发展史上的一个里程碑,它标志着程序设计语言由一种“技艺”转而成为一门“科学”,开拓了程序设计语言的研究领域,为后来软件自动化工作及软件可靠性问题研究的发展奠定了基础。ALGOL 60的主要特点有:
诺尔Ⓞ
1.首次引进局部性概念,既扩充了语言的表达能力,又可节省内存空间,提高程序的紧凑性;
2.语言含有动态成分,从而明显提高了语言的表达能力;
3.递归性的引进开拓了软件的研究领域,促进了软件的发展;
4.它的语法和语义均有严格的描述,特别是语法,采用了著名的巴克斯—诺尔范式,结构清晰,理论严谨。
1960年夏天,荷兰数学家戴克斯特拉开发了第一个ALGOL 60编译器。随后,佩利将它引入了大学课堂。1962年,佩利又对ALGOL 60进行了修正,发表了《算法语言ALGOL 60的修改报告》。
ALGOL 60的发展是一群极具天赋的人才的工作成果,其中的三位科学家先后获得了图灵奖。佩利由于在ALGOL语言的定义和扩充上所作出的重大贡献,以及在创始计算机科学教育上所发挥的巨大作用而成为首届图灵奖(1966年)获得者。另两位获奖者是戴克斯特拉(1972年)和诺尔(2005年)。
戴克斯特拉Ⓞ
在接下来的30年里,ALGOL一直是教育界和学术界用来描述算法的不二之选,它的许多概念都被后来的编程语言沿用。包括C、C++和PASCAL在内的许多主流语言,都因为继承了ALGOL的许多概念,而被称为“类ALGOL语言”。为提供更广泛的应用,国际信息处理联合会又于1968年推出了后继产品ALGOL 68。