ALGOL

维基百科,自由的百科全书
跳转至: 导航搜索
ALGOL
编程范型 procedural, imperative, structured
設計者 Bauer, Bottenbruch, Rutishauser, Samelson, Backus, Katz, Perlis, Wegstein, Naur, Vauquois, van Wijngaarden, Woodger, Green, McCarthy
发行时间 1958

ALGOL,名稱源自演算法語言英语:ALGOrithmic Language)的縮寫[1],是一族指令式編程語言,發展於1950年代中期,對許多其它程式語言產生了重大影響。计算机协会在教科書及學術文章採用此語言做為描述演算法的標準語法超過三十年。[2]

由大多數近代程式語言皆使用類似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 family[编辑]

1960年1月,图灵奖获得者:艾伦·佩利巴黎举行的有全世界一流软件专家参加的讨论会上,发表了"算法语言Algol 60报告",确定了程序设计语言Algol 60。Algol60语言的第一个编译器由艾茲赫爾·戴克斯特拉来实现。1962年,艾伦。佩利又对Algol 60进行了修正。

Algol 60引进了许多新的概念如:局部性概念、动态递归巴科斯-诺尔范式BNF(Backus-Naur Form)等等。

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. Algol-like languages, Introduction. September 1996. (原始内容存档于14 November 2011). 
  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, 编. Report on the Algorithmic Language ALGOL 60. Copenhagen. May 1960. ISSN 0001-0782. doi:10.1145/367236.367262. 
  6. ^ Revised Report on the Algorithmic Language Algol 60. 1963 [8 June 2007]. (原始内容存档于25 June 2007). 
  7. ^ Revised Report on the Algorithmic Language ALGOL 68 (PDF). 1973 [13 September 2014].