ALGOL (/ [æl] æl, - [æ r] æl;算法语言(Algorithmic Language)的缩写[1]是一个命令式计算机编程语言家族,最初开发于1958年。ALGOL严重影响了许多其他语言,并且是计算机协会(ACM)在教科书和学术来源中使用的算法描述的标准方法超过30年。[2]
大多数后续命令式语言(包括所谓的类似algol的语言)
例如PL/I、Simula、Pascal、C和Scheme
从某种意义上说,大多数现代语言的语法都是“类似algol”的[3],它可以说比其他三种高级编程语言更有影响力,其中FORTRAN, Lisp和COBOL大致是同时代的。[4]它的设计是为了避免FORTRAN出现的一些问题,并最终产生了许多其他编程语言,包括PL/I、Simula、BCPL、B、Pascal、Ada和C。
ALGOL引入了代码块和begin…用于分隔它们的结束对。它也是第一种实现具有词法作用域的嵌套函数定义的语言。此外,它是第一个详细关注形式语言定义的编程语言,并通过Algol 60报告引入了语言设计的主要形式语法符号Backus-Naur形式。
有三个主要规范,以它们首次出版的年份命名:
ALGOL 58 -最初提议被称为IAL,即国际代数语言。
ALGOL 60 -首先在1961年实现为X1 ALGOL 60。修订1963年。[5][6][7]
ALGOL 68 -引入了新的元素,包括柔性数组,切片,并行,操作符识别。修订1973年。[8]
ALGOL 68与ALGOL 60有很大的不同,不受欢迎[根据谁?[需要引证],所以一般来说,“Algol”指的是Algol 60及其方言[需要引证]。
ALGOL是由欧洲和美国计算机科学家组成的一个委员会于1958年在苏黎世瑞士联邦理工学院的一次会议上共同开发的(参见ALGOL 58)。它指定了三种不同的语法:引用语法、发布语法和实现语法。不同的语法允许它为不同的语言使用不同的关键字名称和小数点(逗号和句号)约定。
ALGOL主要由美国和欧洲的研究计算机科学家使用。由于在其描述中缺乏标准的输入/输出设施,以及除了Burroughs公司以外的大型计算机供应商对该语言缺乏兴趣,它在商业应用中的使用受到了阻碍。然而,ALGOL 60确实成为算法出版的标准,并对未来的语言发展产生了深远的影响。
标题
Algol, Fortran和COBOL编程语言王朝的族谱
John Backus开发了专门为ALGOL 58描述编程语言的Backus范式方法。Peter Naur为ALGOL 60对其进行了修订和扩展,并根据Donald Knuth的建议将其更名为Backus-Naur形式。[9]
Peter Naur:“作为ALGOL公报的编辑,我被吸引到语言的国际讨论中,并于1959年11月被选为欧洲语言设计小组的成员。在这个职位上,我是ALGOL 60报告的编辑,该报告是1960年1月在巴黎举行的ALGOL 60会议的结果。“[10]
下列人士出席了在巴黎举行的会议(1月1日至16日):
Friedrich Ludwig Bauer、Peter Naur、Heinz Rutishauser、Klaus Samelson、Bernard Vauquois、Adriaan van Wijngaarden和Michael Woodger(来自欧洲)
约翰·华纳·巴克斯、朱利安·格林、查尔斯·卡茨、约翰·麦卡锡、艾伦·杰伊·佩利斯和约瑟夫·亨利·韦格斯坦(来自美国)。
Alan Perlis生动地描述了这次会议:“会议让人筋疲力尽,没完没了,但令人兴奋。当一个人的好主意和别人的坏主意一起被抛弃时,他就会变得很生气。然而,在整个期间,勤奋坚持了下来。13个人之间的化学反应非常好。”
ALGOL 60启发了后来的许多语言。托尼·霍尔(Tony Hoare)评论说:“这是一种远远领先于其时代的语言,它不仅是对其前辈的改进,而且是对几乎所有后继者的改进。”[11] Scheme编程语言是Lisp的一个变体,它采用了ALGOL的块结构和词法范围,也在其标准文档中采用了“关于算法语言方案的修订报告”的措辞,以向ALGOL致敬。