ALGOL,全称为算法语言(Algorithmic Language),受FORTRAN设计影响,它的设计初衷是为了让程序员更加方便地描述和实现算法,使得程序设计更加简单明了。虽然很多程序员根本不知道它的存在或者了解很少,但它为编程语言基础概念发展提供了极其宝贵的价值,可谓理论价值胜于实际价值。
示例代码
begin
printf(($gl$,"Hello, world!"))
end
重要发展
- 最早命名为IAL(国际代数语言,International Algebraic Language), 后来改为ALGOL 58.
- 复合语句概念(仅用于控制流)。
- 赋值用:=, 相等用=.
- 数组下标概念。
- 嵌套过程声明。
- 数字语句label.
- switch标志。
- 变量声明可以在程序任意位置,不必一定在procedure开始。
- ALGOL 60引入了:
- 圆括号()表达式求值,安排运算优先级。
- 控制流程if/goto/for.
- 过程procedure.
- 过程参数传递方式:按值传递和按名字传递。
- void类型。
- 代码块(扩展了ALGOL 58的复合语句),使用BEGIN和END(后期改为小写begin和end).
- 修改变量声明只能在procedure开始。
- 它依然没有输入输出功能,原因是标准委员会意见不统一,标准输入输出留给编译器和使用者决定。这对于语言普及有很大影响。
- BNF范式作为语言设计的文法规则,对后续编程语言影响甚远。
- 词法作用域。
- 函数定义嵌套。
- 递归概念。
- ALGOL 68标准相当庞大复杂,有很多学院理论气息,也能看到这些大师的功底,不少是现代编程语言才有的特性,不过编译器和实现极为困难,但C和Pascal深受它影响。
- WHILE、CASE语句。
- 切片(没错,就是Python的切片)。
- 并行处理(你没听错,真的是并行同步控制的语句)。
- 讨论是否引入"匿名函数"。
- 共用体union.
- 引用。
编译器
- Dijkstra编写第一个ALGOL 60编译器。
若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。