编程范型 | 过程式, 指令式, 结构化 |
---|---|
设计者 | Bauer, Bottenbruch, Rutishauser, Samelson, Backus, Katz, Perlis, Wegstein, Naur, Vauquois, van Wijngaarden, Woodger, Green, McCarthy |
发行时间 | 1958年 |
施影响于 | |
许多后来的命令式语言(被称作ALGOL-like语言) e.g. Simula, C, CPL, Pascal, Ada 受ALGOL影响的函数式语言:Scheme |
ALGOL,名称源自算法语言(英语:ALGOrithmic Language)的缩写[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主要有三种规格,以初次发表的年份命名:
- 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。
参考资料
- ↑ 有人大小写混用(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].
- ↑ "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].
- ↑ Revised Report on the Algorithmic Language ALGOL 68 (PDF). 1973 [13 September 2014].