Fortran 是“已死语言”吗?(2022)
Fortran 是否属于“已死语言”存在争议:虽然它在主流软件岗位和通用开发中几乎消失,但在高性能科学与工程计算中,尤其是流体力学、气候建模和核模拟等领域,它仍被大量使用并持续维护。评论者指出,现代 Fortran 对数值数组和长期代码稳定性有强大的原生支持,但缺乏 Python 和 C++ 那样丰富的标准库、工具链和生态系统。许多人认为它如今实际上充当着 HPC 的一种事实上的领域专用语言;与此同时,新的大型项目越来越倾向于 C++ 或其他语言,以获得更好的互操作性和 GPU 支持,即便庞大的 Fortran 代码库仍在支撑关键基础设施。
Fortran 是“已死语言”吗?
- 许多人认为它并没有“死”,而是高度小众:在科学与工程 HPC 中非常活跃,但在其他领域几乎看不到。
- 有人提出“已死”的定义是“没有新的非业余代码库”;按这个标准,一些评论者认为 Fortran 仍然活着,另一些则说在科学计算之外它基本上已经死了。
- 还引用了 Betteridge 定律:标题如果问它是否已死,答案往往是否定的。
主要领域与遗留代码
- 广泛提到的用途包括:天气与气候模型、CFD、核工程、材料、电磁学、碰撞模拟、燃烧、与金融相关的数值计算(通过 BLAS/LAPACK),以及许多其他仿真代码。
- BLAS/LAPACK 以及许多基础数值库都是用 Fortran 编写的,至今仍是现代技术栈的核心部分(通常通过 C 封装使用)。
- 经过数十年验证的大型遗留代码,重写起来风险高且成本昂贵;在航空航天、核能及其他高风险领域,长期可复现性和位级稳定输出都很重要。
语言特性、优点与缺点
- 优点:原生多维数组、向量化操作、复数、强大的编译器优化、对 OpenMP 的支持,以及长期稳定性。有些人认为它在数组易用性上甚至优于 NumPy。
- 现代 Fortran(2003–2018/2023)增加了许多便利;支持切片,并可通过 elemental 函数以及数组/标量运算实现有限的“广播”。
- 缺点:标准库极其薄弱(没有内建网络、线程、丰富的数据结构),字符串处理很差,更高层抽象稀少;很多任务会让人感觉像“没有 libc 的 C”。
- 有人说整体开发体验和 Python 相比“糟透了”;也有人强烈不同意,认为 Fortran 对数值计算来说简单而愉快。
工具、编译器与生态
- 有多个仍在活跃开发的编译器(gfortran、Intel、LLVM flang、厂商编译器);一些商业编译器和小型供应商已经消失。
- 有人抱怨免费编译器有 bug,工具链停留在 1990 年代;也有人强调编译器与测试仍在持续改进。
工作、教育与可维护性
- 通用招聘网站上,Fortran 岗位几乎看不到,相比主流语言少得多;许多 Fortran 工作集中在研究实验室或专业工程公司,并通过学术网络招聘。
- 一些国家级 HPC 中心仍在教授现代 Fortran;在其他地方,Python/C++ 主导培训和新项目,出于可维护性和招聘考虑,部分实验室正逐步弃用 Fortran。
GPU 与未来方向
- 将 Fortran 代码移植到加速器被描述为困难且支离破碎(CUDA Fortran、OpenMP 5 部分支持);这推动新的 HPC 项目转向 C++。
- 也有人乐观认为,OpenMP、新硬件上的统一内存,以及逐渐成熟的 flang 会改善加速器可移植性,但目前情况仍然喜忧参半。