ALGOL

ALGOL,名称源自算法语言英语:)的缩写[1],是一族指令式编程语言,发展于1950年代中期,对许多其它编程语言产生了重大影响。计算机协会在教科书及学术文章采用此语言做为描述算法的标准语法超过三十年。[2]

ALGOL
过程序, 指令式, 结构化
设计者Bauer, Bottenbruch, Rutishauser, Samelson, Backus, Katz, Perlis, Wegstein, Naur, Vauquois, van Wijngaarden, Woodger, Green, McCarthy
1958年1958
当前版本
  • ALGOL 58 (1958)
  • ALGOL 60 (1960)
  • ALGOL 68 (1968)
影响语言
许多后来的命令式语言(被称作ALGOL-like语言)
e.g. Simula, C, CPL, Pascal, Ada
受ALGOL影响的函数式语言:Scheme

由大多数近代编程语言皆使用类似ALGOL的语法来看[3],ALGOL可与差不多同时期的FORTRANLISPCOBOL并列为四大最有影响力的高端语言[4]。ALGOL被设计用来避免FORTRAN中一些已知的问题,最终引领了许多其它编程语言的兴起,包括PL/ISimulaBCPLBPascalC

ALGOL引入了代码块,并用beginend来分隔。它是第一个利用词法作用域实作嵌套函数的语言,也是第一个注重形式语言定义的语言,并在ALGOL 60报告中引入了巴科斯范式来作为设计语言形式文法的原则。


ALGOL主要有三种规格,以初次发表的年份命名:

  • ALGOL 58 – 原提议命名为IAL,代表International Algebraic Language
  • ALGOL 60 – 在1960年代中期首先实作成X1 ALGOL 60,1963年修订。[5][6]
  • ALGOL 68 – 引入许多新元素,像是可变数组、切片、平行化及算子识别。1973年修订。[7]

尼克劳斯·维尔特在发展Pascal之前,在ALGOL 60的基础下创建了ALGOL W。ALGOL W本是下一代ALGOL的提议,但ALGOL委员会决定采用更先进复杂的设计,而不是一个简洁化ALGOL 60。

ALGOL 58 (IAL)

ALGOL 58没有I/O机制。

ALGOL 60家族

1960年,在巴黎举行的讨论会上,来自欧洲的诺尔BauerRutishauserSamelsonVauquoisvan WijngaardenWoodger,与来自美国的佩利巴科斯麦卡锡KatzWegstein和J. Green,共同发表了《算法语言ALGOL 60报告》[8]戴克斯特拉实现了ALGOL 60语言的第一个编译器。在1962年罗马会议上,ALGOL 60报告得到了修订,并于1963年出版[9]

Algol 60引进了许多新的概念如:代码词法作用域递归巴科斯-诺尔范式(BNF)等等。

Algol 60是进程设计语言发展史上的一个里程碑,它标志着进程设计语言成为一门独立的科学学科,并为后来软件自动化及软件可靠性的发展奠定了基础。

ALGOL 68

ALGOL 68的“Hello, World”

begin
  printf(($gl$,"Hello, world!"))
end


Algol W:1966年,IFIP吸收尼克劳斯·维尔特参加对Algol语言进行完善与扩充的工作小组。沃思参加进去以后,提交了一份建议书并由东尼·霍尔等人修改、完善以后形成Algol W。同时还催生了一个新的语言PL360

参考数据

  1. 有人大小写混用(Algol 60 页面存档备份,存于),有人用全大写 (ALGOL68 页面存档备份,存于),本文采用全大写ALGOL
  2. Collected Algorithms of the ACM 页面存档备份,存于 Compressed archives of the algorithms. ACM
  3. O'Hearn, P. W.; Tennent, R. D. . September 1996 [2017-11-08]. (原始内容存档于2011-11-14).
  4. "The ALGOL Programming Language" 页面存档备份,存于, University of Michigan-Dearborn
  5. Backus, J. W.; Bauer, F. L.; Green, J.; Katz, C.; McCarthy, J.; Perlis, A. J.; Rutishauser, H.; Samelson, K.; Vauquois, B.; Wegstein, J. H.; van Wijngaarden, A.; Woodger, M. Naur, Peter , 编. . Copenhagen. May 1960. ISSN 0001-0782. doi:10.1145/367236.367262.
  6. . 1963 [8 June 2007]. (原始内容存档于2007-06-25).
  7. (PDF). 1973 [13 September 2014]. (原始内容存档 (PDF)于2016-10-07).
  8. Backus, J. W.; Bauer, F. L.; Green, J.; Katz, C.; McCarthy, J.; Perlis, A. J.; Rutishauser, H.; Samelson, K.; Vauquois, B.; Wegstein, J. H.; van Wijngaarden, A.; Woodger, M. Naur, Peter , 编. . Communications of the ACM (Copenhagen). May 1960, 3 (5): 299–314. ISSN 0001-0782. S2CID 278290. doi:10.1145/367236.367262.
  9. . 1963 [2020-04-23]. (原始内容存档于2007-06-25).


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.