许多面向 Fortran 的开发人员在 Linux 上找到了快乐的家园。除了新的开发和移植,在 Linux 上使用 Fortran 这一任务中还有相当多的工作涉及旧的应用程序,其中一些已有三十五年以上的历史。
您的公司除了为过时的小型计算机通常需要的特殊电能和通风付费以外,是否还要为运行旧的 Fortran 程序所需的软硬件支付繁重的许可证费用和支持费用?如果是的话,那么可以开始试着将那些程序重新部署到 Linux 服务器上,并了解一下在提高这些应用程序性能或有效性的同时,能砍掉多少那样的费用。
Linux 还主管了许多基于 Fortran 的新工作(比您可能意识到的还要多)。Linux 程序员之间的语言之争通常涉及象 Java、Python、C++ 或甚至 C# 这样的流行语言。在这种情况下,于二十世纪五十年代末最早发明的 Cobol、Fortran 和 Lisp 这些语言所做的有用工作量可能会出乎您的意料。
特别是,Fortran 已在 Linux 下找到了快乐的家园。本月的“服务器诊所”概述了您应该了解的在 Linux 上使用 Fortran 的重要性以及如何了解更多信息。
求助于 Linux
不要认为一谈到 Fortran 就一定要追溯历史。围绕 Fortran 开展的行动有很多:国际 J3 委员会起草了新的 Fortran2000 标准、编译器工程方面已经取得令人瞩目的发展以及每年产生了大量新应用程序。有关 Fortran 的各种消息都暗示 Linux 在新的开发中所占比例在不断增加;例如,在高性能面向科学的群集上通常都少不了 Fortran 和 Linux。Linux4chemistry 目录,以及科学和工程方面最类似的目录以拥有许多用 Fortran 编码的程序为特色。程序员对 Fortran 很熟悉而且 Fortran 在性能方面优于 C,这使它继续受到技术程序员的青睐。
Linux 对旧的应用程序所起的作用虽然不太明显,但经论证更有趣。有一个用 Fortran 编码的庞大“骨干”程序累积,其中的一些程序已有长达三十五年的历史了,支持全世界范围的企业和实验室中日常的操作。在某些领域中,与“旧”相关联的只有 Y2K 泡沫。但是与它相关的远不止这些;成千上万个用 Fortran 编码的程序在每个工作日都报告财政状况、控制工厂设备、分析实验数据、管理人事记录、切换通信硬件以及执行类似的重要功能。这些程序中的许多在其所担当的角色中都完美地运作着,而且除了运行它们的硬件发生老化以外,并不需要特别更改。例如,Hewlett-Packard 的 MPE 和 OpenVMS 产品线的退休向客户发出了一个严峻的挑战,因为在过去的几十年中,他们一直依赖这些小型计算机品牌。
Linux 能解救这些问题。服务器级别的 Linux 机器很可靠,能长时间正常运行,提供了良好的系统服务(包括异构网络中的互操作性),主管各种高质量的 Fortran 编译器并且很安全(至少可与其它准备向企业提供的系统相比拟)。银行、制造商和政府机构通常为了“整合”,正悄悄地将他们的许多旧程序移到 Linux 上。
对于这样的迁移,Linux 服务器的质量和可用性是让人非常满意的;在我访谈过的组织中,这些项目的结果通常都比预期的好。但是,由于竞争、安全性和通常在法律方面的原因,在我遇到的所有人中,没人愿意“公开发布”访谈。金融公司和制造公司如果透露他们内部过程的细节,不仅得不到任何好处,反而有许多风险。但是,军事计算的相对开放与此形成了鲜明的对比。例如,大家都知道许多武器系统和战役的模拟都是用 Fortran 编写的。英国国防部在 Linux 上主管了 F3 狂风(Tornado)战斗机的分析程序。
大量可用的标准和工具
首先是 Michael Metcalf 的参考资料页(请参阅下面的参考资料)。它收集了有关编译器、其它工具和文档的最广泛且最新的信息。
流行的各个 Linux 分发版一般包含 GNU 项目的免费 G77 Fortran 编译器副本。这个编译器提供了命令行参数,这些参数允许该处理器处理范围很广的 Fortran(根据 66、77、90 和 95 标准及几种变体编码)。G77 在灵活性和可移植性方面占优,但却以性能为代价,所以良好调优的商业编译器的市场依旧会很繁荣。请注意 G77 通常被安装成名为“f77”的可执行文件,其它几个 Fortran 编译器也是如此。
甚至在专有编译器和工具之中,也可以免费获得几个,包括一种用于 Linux 的 Intel 7.0 Fortran 编译器的可下载形式。这个编译器性能极佳,看来它在 x86 和 Itanium 级 Linux 主机上会有光明的未来,因为 Intel 的编译器组整合了曾在 DEC、Compaq 和 HP 确立声誉的工程团队。
有几家公司提供了各种转换程序。这些工具可能会映射源代码,例如可以将符合 F77 的源代码映射成 F95 文本。尽管转换程序在过去一直很重要,但在当前的 Linux Fortran 用户中,我已经很少碰到依赖它们的用户。只要通过调优他们的 Fortran 编译器,当前的项目似乎就满足了他们的需求。比使用命令行参数时遇到的难题更棘手的通常涉及专门和专有语言扩展;处理它们需要人类程序员具备熟练的转换技能。不管哪种情况,自动源代码转换程序在当前已没有多少优势。