庆祝 Fortran 70 周年
在庆祝 Fortran 70 周年之际,程序员们回顾这门诞生于穿孔卡时代的语言如何从带有 GOTO 和 COMMON 的朴素公式翻译工具,演变为一门现代、结构化、至今仍是高性能科学计算核心的语言。评论者们回忆它的历史影响(从 BLAS/LAPACK 到核工程和气候模型),对比古老的 FORTRAN 77 与 1990 年后的标准,并争论 Fortran 是否仍是与 C、Python+NumPy、Julia 或 Rust 相比的“正确”工具。许多人最终认为,尽管它年纪很大且带有各种怪癖,Fortran 的简单语义、对数组的强大支持以及数十年经过锤炼的数值库,仍使它在高强度数值工作中保持相关性。
历史意义与长久生命力
- Fortran 被誉为可能仍在积极使用中的最古老编程语言,早于 Lisp 和 COBOL,文中提到吉尼斯纪录。
- 几位评论者回忆自己在 1960 年代和 70 年代用 FORTRAN II/IV 编程,强调它相对于大多数现代计算有多么早。
- Fortran 被认为具有革命性意义,因为它能将数学公式直接翻译为代码,并且对后来的语言产生了深远影响。
演化:FORTRAN → 现代 Fortran
- 现代 Fortran(90/95/2003/2008/2018/2023)被描述为与早期 FORTRAN 几乎是不同的语言。
- 像 COMMON、ENTRY、EQUIVALENCE、Hollerith 常量、固定列格式和非递归语义之类的旧式构造,被广泛描述为过时,但为了向后兼容仍然保留。
- 有些人遗憾地表示,讨论仍然过度聚焦于 FORTRAN 77,而忽视了此后几十年的新标准。
当前用途与领域
- Fortran 仍然常见于科学和工程计算:核工程、地球物理、地幔与流动建模、化工与土木/结构工程、气候模型、电网仿真,以及与石油相关的海洋建模。
- 核心数值库(BLAS、LAPACK、经典的 linpack/fftpack 套件)支撑着 Python 数据科学生态系统的很大一部分,即便如今它们已被包装或部分翻译。
- 一些机构和研究小组仍然强制使用 FORTRAN 77,往往是因为导师熟悉以及兼容性方面的考虑。
技术优势
- 对数组和数值计算有很强的支持;编译器利用别名不存在和受限语义进行激进优化,尤其是在向量机上。
- 现代 Fortran 被认为对领域科学家来说比 C 更简单,同时仍能编译为高度优化的原生代码。
- 互操作性良好:常见模式是用 Fortran 处理高强度数值计算,再用其他语言(例如 C、Python)作为前端。
批评、痛点与怀旧
- 许多人回忆起痛苦经历:穿孔卡、72 列限制、COMMON 块错误、未初始化数组、巨型子程序、晦涩的六字符标识符。
- 有些人觉得早期接触 FORTRAN 77 让他们对编程失去了兴趣;另一些人则认为它帮助他们建立了对性能、优化和多用户/大型机环境的基础理解。
- 对 Fortran 今日相关性的看法分歧很大:有些人认为 C 或其他现代语言更合适;另一些人则认为 Fortran 在数值模拟和可信赖的遗留代码方面仍然是“同类最佳”。