ALGOL 编程范型 过程式 ,指令式 ,结构化 設計者 Bauer ( 英语 : Friedrich L. Bauer ) ,Bottenbruch ( 英语 : Hermann Bottenbruch ) ,Rutishauser ( 英语 : Heinz Rutishauser ) ,Samelson ( 英语 : Klaus Samelson ) ,Backus ,Katz ( 英语 : Charles Katz ) ,Perlis ,Wegstein ( 英语 : Joseph Henry Wegstein ) ,Naur ,Vauquois ( 英语 : Bernard Vauquois ) ,van Wijngaarden ,Woodger ( 英语 : Michael Woodger ) , J. Green,McCarthy 发行时间 1958年,67年前 (1958 ) 当前版本 ALGOL 58(1958) ALGOL 60(1960) ALGOL 68(1968) 影響語言 许多后来的命令式语言(被称作ALGOL-like 语言) e.g.Simula ,C ,CPL ,Pascal ,Ada 受ALGOL影响的函数式语言:Scheme
ALGOL ,名稱源自演算法語言 (英語:ALGO rithmicL anguage )的縮寫 [ 1] ,是一族指令式編程 語言,發展於1950年代中期,對許多其它程式語言產生了重大影響。计算机协会 在教科書及學術文章採用此語言做為描述演算法 的標準語法超過三十年。[ 2]
由大多數近代程式語言皆使用類似ALGOL的語法來看[ 3] ,ALGOL可與差不多同時期的FORTRAN 、LISP 及COBOL 並列為四大最有影響力的高階語言[ 4] 。ALGOL被設計用來避免FORTRAN中一些已知的問題,最終引領了許多其它程式語言的興起,包括PL/I 、Simula 、BCPL 、B 、Pascal 及C 。
ALGOL引入了代码块 ,並用begin
⋯end
來分隔。它是第一個利用詞法作用域 實作巢狀函式的語言,也是第一個注重形式語言 定義的語言,並在ALGOL 60報告 中引入了巴科斯範式 來作為設計語言形式文法 的原則。
ALGOL主要有三種規格,以初次發表的年份命名:
尼克勞斯·維爾特 在發展Pascal 之前,在ALGOL 60的基礎下建立了ALGOL W 。ALGOL W本是下一代ALGOL的提議,但ALGOL委員會決定採用更先進複雜的設計,而不是一個簡潔化ALGOL 60。
ALGOL 58沒有I/O機制。
1960年,在巴黎 举行的讨论会上,来自欧洲的诺尔 、Bauer ( 英语 : Friedrich L. Bauer ) 、Rutishauser ( 英语 : Heinz Rutishauser ) 、Samelson ( 英语 : Klaus Samelson ) 、Vauquois ( 英语 : Bernard Vauquois ) 、van Wijngaarden 、Woodger ( 英语 : Michael Woodger ) ,与来自美国的佩利 、巴科斯 、麦卡锡 、Katz ( 英语 : Charles Katz ) 、Wegstein ( 英语 : Joseph Henry Wegstein ) 和J. Green,共同发表了《算法语言ALGOL 60报告》[ 8] 。戴克斯特拉 实现了ALGOL 60语言的第一个编译器。在1962年罗马 会议上,ALGOL 60报告得到了修订,并于1963年出版[ 9] 。
Algol 60引进了许多新的概念如:代码块 、词法作用域 、递归 、巴科斯-诺尔范式 (BNF)等等。
Algol 60是程序设计语言发展史上的一个里程碑,它标志着程序设计语言成为一门独立的科学学科,并为后来软件自动化及软件可靠性的发展奠定了基础。
ALGOL 68的“Hello, World”
BEGIN printf(($gl$,"Hello, world!"))END Algol W :1966年,IFIP 吸收尼克劳斯·维尔特 参加对Algol语言进行完善与扩充的工作小组。沃思参加进去以后,提交了一份建议书并由東尼·霍爾 等人修改、完善以后形成Algol W。同时还催生了一个新的语言PL360 。
^ 有人大小寫混用(Algol 60 (页面存档备份 ,存于互联网档案馆 )),有人用全大寫 (ALGOL68 (页面存档备份 ,存于互联网档案馆 )),本文採用全大寫ALGOL 。 ^ Collected Algorithms of the ACM (页面存档备份 ,存于互联网档案馆 ) Compressed archives of the algorithms.ACM ^ O'Hearn, P. W.; Tennent, R. D.Algol-like languages, Introduction . September 1996 [2017-11-08 ] . (原始内容 存档于2011-11-14). ^ "The ALGOL Programming Language" (页面存档备份 ,存于互联网档案馆 ), University of Michigan-Dearborn^ 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 , 编. Report on the Algorithmic Language ALGOL 60. Copenhagen. May 1960.ISSN 0001-0782 .doi:10.1145/367236.367262 . ^ Revised Report on the Algorithmic Language Algol 60 . 1963 [8 June 2007] . (原始内容 存档于2007-06-25). ^ Revised Report on the Algorithmic Language ALGOL 68 (PDF) . 1973 [13 September 2014] . (原始内容存档 (PDF) 于2016-10-07). ^ 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 , 编. Report on the Algorithmic Language ALGOL 60. Communications of the ACM (Copenhagen). May 1960,3 (5): 299–314.ISSN 0001-0782 .S2CID 278290 .doi:10.1145/367236.367262 . ^ Revised Report on the Algorithmic Language Algol 60 . 1963 [2020-04-23 ] . (原始内容 存档于2007-06-25).