Fortran和ALGOL语言历史大揭秘

Fortran

Fortran全名为FORmula TRANslation(公式转换),被称为第一代(被推广使用的)高级编程语言(同时代还有ALGOL语言),最早是IBM为704计算机做科学计算,将公式翻译成机器码,由John Backus领导设计。Fortran从最早50年代开始,一直到21世纪,还在不断发展。

最早1951年Rutishauser提出用编译程序实现高级语言的思想,Backus领导用汇编语言完成FORTRAN I.

重大发展

  • FORTRAN 早期版本就已经定义了一种高级语言应该有的基本样子,包括变量定义、子程序和过程。
  • FORTRAN 66引入数组下标。
  • FORTRAN 77之前后缀名是.for, Fortran 90之后用.f90.
  • Fortran90引入了自由格式,Fortran 90之前标准全部用大写字母FORTRAN,之后标准名称改为Fortran.
  • Fortran 2003增加了面向对象设计。

发展历史

  • Fortran有后面这些版本:I(54)/II(58)/IV(62)/66/77/90/95/2003/2018/2023(TBD).
  • FORTRAN II引入了复数类型和双精度浮点数。
  • FORTRAN 77增加了条件语句IF/ELSE.
  • Fortran 90更自由,不受之前面对卡片的固定栏目布局限制,不要求全部大写字母写代码,增加了用户自定义类型,引入指针机制,允许递归调用,支持do .. while循环,此时Fortran已具备向量和并行计算能力。
  • 1993年高性能Fortran HPF标准诞生,旨于支持并行计算和不同计算机可移植。
  • 第一个MATLAB是用FORTRAN编写。

编译执行

  • 编译型语言,编译链接成平台二进制代码再执行。

编译器

  • Intel Fortran
  • GCC gfortran
  • simply Fortran
  • PGI Fortran
  • NAG Fortran
  • Absoft Fortran

ALGOL

ALGOL,全称为算法语言(Algorithmic Language),受FORTRAN设计影响,它的设计初衷是为了让程序员更加方便地描述和实现算法,使得程序设计更加简单明了。虽然很多程序员根本不知道它的存在或者了解很少,但它为编程语言基础概念发展提供了极其宝贵的价值,可谓理论价值胜于实际价值。

示例代码

begin

printf(($gl$,"Hello, world!"))

end

重要发展

  • 最早命名为IAL(国际代数语言,International Algebraic Language), 后来改为ALGOL 58.
    • 复合语句概念(仅用于控制流)。
    • 赋值用:=, 相等用=.
    • 数组下标概念。
    • 嵌套过程声明。
    • 数字语句label.
    • switch标志。
    • 变量声明可以在程序任意位置,不必一定在procedure开始。
  • ALGOL 60引入了:
    • void类型。
    • 代码块(扩展了ALGOL 58的复合语句),使用BEGIN和END(后期改为小写begin和end).
    • 修改变量声明只能在procedure开始。
    • 它依然没有输入输出功能,原因是标准委员会意见不统一,标准输入输出留给编译器和使用者决定。这对于语言普及有很大影响。
    • BNF范式作为语言设计的文法规则,对后续编程语言影响甚远。
    • 词法作用域。
    • 函数定义嵌套。
    • 递归概念。
    • 圆括号()表达式求值,安排运算优先级。
    • 控制流程if/goto/for.
    • 过程procedure.
    • 过程参数传递方式:按值传递和按名字传递。
  • ALGOL 68标准相当庞大复杂,有很多学院理论气息,也能看到这些大师的功底,不少是现代编程语言才有的特性,不过编译器和实现极为困难,但C和Pascal深受它影响。
    • WHILE、CASE语句。
    • 切片(没错,就是Python的切片)。
    • 并行处理(你没听错,真的是并行同步控制的语句)。
    • 讨论是否引入"匿名函数"。
    • 共用体union.
    • 引用。

编译器

  • Dijkstra编写第一个ALGOL 60编译器。


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值