亦有资源网

C++语言基础到进阶学习资源汇总

ALGOL语言干货(algorithmc语言)


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等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言