ALGOL
ALGOL 编程范型 过程式 , 指令式 , 结构化 設計者 Bauer , Bottenbruch , Rutishauser , Samelson , Backus , Katz , Perlis , Wegstein , Naur , Vauquois , van Wijngaarden , Woodger , J. Green, McCarthy 发行时间 1958年,66年前 (1958 ) 当前版本 ALGOL 58(1958) ALGOL 60(1960) ALGOL 68(1968)
许多后来的命令式语言(被称作ALGOL-like 语言) e.g. Simula , C , CPL , Pascal , Ada 受ALGOL影响的函数式语言:Scheme
ALGOL ,名稱源自演算法語言 (英語:ALGO rithmic L 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 (IAL)
ALGOL 58沒有I/O機制。
ALGOL 60家族
1960年,在巴黎 举行的讨论会上,来自欧洲的诺尔 、Bauer 、Rutishauser 、Samelson 、Vauquois 、van Wijngaarden 、Woodger ,与来自美国的佩利 、巴科斯 、麦卡锡 、Katz 、Wegstein 和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 。
參考資料
^ 有人大小寫混用(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).