← 返回信息流
AI 资讯Hacker News·4 天前

Fortran现代化:一场渺茫的希望

原标题:A Forlorn Hope of Fortran Modernisation

速览

本文讨论Fortran语言现代化的艰难前景。作为历史悠久的科学计算语言,其现代化尝试面临重重困难,可能最终成为技术债务的典型。这反映出老旧系统升级的普遍挑战。

AI 深度解读

背景

Fortran 诞生于 1957 年,由 IBM 的 John Backus 及其同事创造,是世界上第一种高级编程语言。它的初衷是让科学家能用数学符号(而非汇编语言)编写科学应用。此后 70 余年,Fortran 不断演化,经历了 FORTRAN 66、77、90、95、2003、2008、2018 以及 2023(草案)等多个标准化版本。尽管 IT 界多年来屡次为其撰写“讣告”,这门古老的语言依然存活,并在大规模并行科学计算领域占据不可撼动的地位。然而,近年来 Fortran 用户群体开始发出警报:年轻程序员不愿投身这门“过时”的语言,导致 Fortran 开发岗位出现人才断层,后继无人。作者作为 1980 年代初学习 FORTRAN、后进入工业界并保持长期关注的技术专家,通过本文探讨 Fortran 受欢迎程度下降的原因、可能的解决路径以及现代化努力的意义。

核心内容

Fortran 的独特地位与困境

在实现长寿命、大规模、大规模并行的科学与工程应用方面,没有任何语言能与 Fortran 匹敌,甚至包括 C 和 C++。Fortran 是迄今为止唯一一种内置并行处理设施(分区全局地址空间 PGAS 并行编程)的标准化语言。现代 Fortran(2023 草案)拥有强静态类型系统、用户自定义类型、尾调用消除递归、对象、模块、垃圾回收等功能,在科学并行计算上的速度甚至超过 C。然而,现代程序员对 Fortran 几乎一无所知,也毫无兴趣——Fortran 存在严重的“形象问题”。

人才短缺的现状

Fortran 开发机构难以找到年轻程序员替代即将退休的老员工,因为年轻人不愿将自己的职业生涯奉献给这门古老的语言。全球仅有少数顶尖工科院校仍在工程本科阶段教授 Fortran,而计算机科学学生可能从未听说过它。尽管 Fortran 在超算上的高性能并行科学计算中不可替代,但行业内没有切实可行的计划来补充程序员队伍。

作者的个人背景

作者在 1980 年代初作为电气工程本科生学习 FORTRAN 77(DEC VAX-11/780 平台),当时 FORTRAN 是电路仿真、数字信号处理、有限元分析、计算流体力学等工程计算的主要语言。但作者本人更偏爱 LISP、C 和 ML,FORTRAN 仅限于课堂作业。后来在计算机科学研究生阶段,研究工作中使用 Fortran 90(CRAY Y-MP 和 T3D 集群)。1990 年代中期离开学术界进入工业界后,不再职业使用 Fortran,但出于个人兴趣持续关注其演化。作者坦言自己并非 Fortran 的实践粉丝,但在智力层面由衷钦佩其独创性、长寿性和历史。

Fortran 的历史脉络与同类语言的命运

第一代高级编程语言诞生于 1950 年代末至 1960 年代初:FORTRAN(科学计算)、LISP(符号计算与自动定理证明)、ALGOL(过程式编程)、COBOL(商业计算)、Simula(面向对象)。这些“开创者”语言以不同形式延续至今。LISP 在 1970-80 年代基于规则的 AI 热潮中极受欢迎,如今最著名的用途是作为 Emacs 编辑器的脚本语言;它也是所有现代函数式语言(如 OCaml、Haskell)的精神祖先。ALGOL 未走出学术界,但影响了 Pascal、C、Rust、Odin、Zig 等后续过程式语言。C 仍在系统编程(编译器、库、操作系统)中大量使用,最著名的例子是 Linux 内核。Simula 主要是学术研究语言,但深刻影响了 Smalltalk 和 C++,进而影响 Objective-C 和 Java。

Fortran 难以被替代的原因

在大型机上的高通量实时交易处理方面,没有现代语言能匹敌 COBOL;同样,在超算上的高性能并行科学计算方面,没有现代语言能匹敌 Fortran。Python 虽然易用但速度慢,C/C++ 在并行计算领域并未超越 Fortran。Fortran 内置的并行机制(PGAS)使其在编写大规模并行应用时天然高效,而其他语言需要依赖外部库(如 MPI)来实现类似功能。

现代化是否值得?

在作者看来,试图让这门诞生于 20 世纪中期的语言适应 21 世纪的计算需求,看似疯狂,但并非如此。作者主张 Fortran 现代化是值得且必要的。不过他也承认,在当前情况下,为 2020 年代复兴 Fortran 无异于一种“渺茫的希望”(a forlorn hope)。文章面向的读者群体包括:维护 Fortran 语言标准的计算机科学家、使用 Fortran 实现科学软件的科学家和工程师、以及对并行处理和科学编程感兴趣的 STEM 从业者。读者需要具备过程式和函数式语言下的并行编程经验,并掌握简单类型论、参数类型论和依赖类型论的基础知识。

关键要点

  • 不可替代性:Fortran 在漫长的科学并行计算领域(如超算上的大规模模拟)拥有无可匹敌的性能和内置并行支持,C/C++ 和 Python 均无法在同等场景下超越它。
  • 人才断层危机:年轻程序员对 Fortran 缺乏兴趣和认知,导致 Fortran 团队面临严重的招聘困难,且行业缺乏切实可行的人才补充计划。
  • 历史悠久但仍在进化:最新标准 Fortran 2023 已经吸纳了现代编程语言特性(强类型、用户定义类型、对象、模块、垃圾回收、PGAS 并行等),但形象问题依然存在。
  • 与其他“老语言”的对比:COBOL 在金融交易中同样不可替代,LISP 的影响延续至函数式语言,C 仍在系统编程中主导——Fortran 的处境类似,但“年轻人不愿学”的问题更为突出。
  • 现代化值得尝试:尽管希望渺茫,但 Fortran 现代化对于维持关键科学计算基础设施的可持续性是必要的,并非疯狂之举。

意义与影响

本文揭示了一个 IT 领域的结构性矛盾:关键基础设施高度依赖一门“过时”的语言,而人才供给却日益枯竭。Fortran 的案例并非孤例——COBOL、Ada 等语言也面临类似困境。如果 Fortran 的现代化努力失败,可能导致未来数十年内大规模科学计算代码难以维护、无法更新,从而影响气象预测、物理模拟、工程仿真等关键领域。另一方面,Fortran 的困境也提出了更广泛的问题:如何在技术快速迭代的时代,保护并传承那些承载了数十年积累的软件遗产?本文作者的观点——即 Fortran 现代化是“渺茫的希望”——既是对现实困难的清醒认识,也暗示了需要更系统的机制(如教育投入、开源社区引导、标准演进激励)来留住这些“旧”语言的活力。对于计算机科学界和工程界而言,这篇文章是一份具有警示意义的深度思考,提醒人们不要仅因语言“古老”就轻言放弃,而应审视其核心价值并寻找可持续的延续方式。

查看原文 →amenzwa.github.io