选择现代 Fortran
FORTRAN 77 肯定是不要再学了,或者至少不要写 F77(因为可能免不了要看旧代码,所以也许还是要学)。不够我想说的是,也不要一直留在 Fortran 90/95,最好继续学习 Fortran 2003/2008 以及 Fortran 2018 的新特性。Fortran 2003/2008 提供了近乎完全的面向对象(自定义类型、类型绑定过程、抽象类、继承、多态等)的支持,以及新的内置过程等。虽然不见得所有新特性都用得上,但我认为是值得学的。
关于书,彭国伦的《Fortran 95 程序设计》还是很优秀的,选择用这本书入门完全可以。但是既然推荐继续学习 Fortran 2003/2008,肯定要看更多的书。直接学习 Stephen J. Chapman 的《Fortran 95/2003 程序设计》也可以,可惜这书的中译版质量有点那啥,比较在意的话还是看彭国伦的吧。其他的中文书就不太推荐了,比如《Fortran 权威指南》,声称涵盖了 F2003,实际上只是提了一下(不到 4 页的内容)。P.S. 今年(2019 年)有一本新的中文 Fortran 书《FORTRAN 程序设计权威指南》,看了一下目录,似乎介绍了 F2003/2008 的特性,也许值得一试(但仍然想吐槽标题用的是全部大写的 FORTRAN)。
于是剩下的只有英文书。其实原则上看 Modern Fortran Explained 就足够了(这书似乎算是 Fortran 语言的 Bible?),最新版包括了 Fortran 2018 的内容。除此之外我想推荐的是 Modern Fortran in Practice,但是这个书并不是入门的教科书,而是以实际案例为主的 cookbook。建议基本的语法都学会了之后再看。
选择 Fortran 编译器
编译器的选择也受现代 Fortran 这一选择的影响,也就是不推荐对新标准支持不好的编译器。当然实际上也受是否流行影响。至少我只会考虑 gfortran、Intel Visual Fortran、PGI Fortran。
首先建议看一下各种 Fortran 编译器对语言标准的支持情况:Compiler Support for the Fortran 2008 Standard、Compiler Support for the Fortran 2018 Standard
其实 IVF 是最受推荐的,但我并不打算介绍。因为 IVF 相当流行,所以我没必要再讲如何安装使用 IVF。其次 IVF 是收费的,体积也非常大。我觉得除非需要做一些正经的工作,那么再考虑使用。当然 IVF 是可以以学生身份申请到免费的,这个就请自行解决(我申请过一次,但是被拒绝了…… 于是我用着盗版的 IVF)。这里贴一下 Visual Studio 和 IVF 版本匹配的图(来自 Fortran Coder 群):
VS 和 IVF 建议安装较新的版本,2013 版本什么的就别再用了。
这里顺便提一下 PGI Fortran。PGF 有免费的社区版,所以选择 PGF 就可以心安理得地用了。但是 PGF 的问题在于用起来相对比较麻烦,因为 PGI Visual Fortran 将被废除。实际上最新的 PGF 19 无法使用 VS 在 GUI 界面编写和编译,只能通过命令行使用(安装 PGF 时好像会附带一个基于 Java 的图形界面的调试器,但编辑和编译应该是没有自带的图形界面)。此外 PGF 仍然对 VS 有依赖,在安装 PGF 之前需要安装 VS。
最终就是要介绍 gfortran。gfortran 是自由软件,体积小,对 Fortran 新标准支持较好,编译得到的程序执行速度也不错。所以也推荐使用(推荐程度大概是 IVF>gfortran>PGF)。然后我还想多说一句,其实我很期待 LLVM 的 Fortran 编译器。LLVM 之前有 Flang 编译器,但是这个 Flang 项目已经停了,将由 F18 编译器接替。F18 编译器在今年年底应该会开发完,到时候想尝试一下。
需要的软件和插件
其实我不太想把配置的整个步骤都详细介绍。因为我嫌麻烦;另外这些东西要么有手册教程,要么其他人有写过文章介绍,我没必要写。所以有些地方我可能只会贴个链接。
安装 gfortran
那么首先是安装 gfortran。自行编译肯定不考虑,如果您能自行编译 gfortran,那肯定没必要看我的文章了。我们选择直接下载已编译好的二进制文件。如果你搜索「安装 gfortran」,绝大多数文章都是告诉你安装 mingw-w64。但我更想推荐通过 MSYS2 安装 gfortran。
首先进入 www.msys2.org 下载安装 MSYS2(我想大部分人应该都是选择 x86_64),安装的方法根据网站首页的教程照着做即可。安装并配置好后,通过 MSYS2 的包管理程序下载安装 gfortran。MSYS2 的使用方法见 wiki,我在这里介绍最重要的两个命令:pacman -Ss
搜索程序,pacman -S
安装程序。
首先安装 gcc,输入 pacman -Ss gcc
,将会看到很多程序。需要安装的是 x86_64 的 gcc(mingw-w64-x86_64-gcc)和名字里带有 fortran 的(全安装就是了)。依次输入 pacman -S mingw-w64-x86_64-gcc
安装 gcc 以及其他需要安装的程序即可。
安装完成之后,要设置 gfortran、gdb 的环境变量。这些程序的位置应该都在 MSYS2 安装文件夹的 mingw64\bin
这个位置下,把完整路径添加到 PATH
变量。我们打开终端(推荐 Windows Terminal),输入 gfortran -v
,如果输出类似下图,说明安装成功。顺便也测试一下 gcc -v
和 gdb -v
看看是否正常。
安装 VS Code 和插件
推荐使用 Visual Studio Code 编辑器编写 Fortran 代码。安装 VS Code 就没必要教了,自行搜索安装即可。
关于插件,将按后述的具体需求依次介绍。而且插件的设置因人而异,不必完全照抄我的,最好自己研究插件的 manual。
一定要安装的插件是 Modern Fortran,提供 Fortran 的语法高亮,语法检查等功能。插件安装之后,进入设置的 JSON 文件,添加以下设置
1 | "fortran.includePaths": [ |
告诉插件编译器的位置(第一个路径是 WSL 子系统里 gfortran 的路径,如果你不用 WSL 或其中没有安装 gfortran,就不必写这个路径)。
此外推荐安装 FORTRAN IntelliSense,用于 Fortran 代码的智能提示。
安装这个插件前需要安装 fortran-language-server,安装方法也很简单,pip install fortran-language-server
即可。什么?不知道 pip
是什么?这年头还能不会一点 Python 吗?快安装 Python 和 pip。
编译和运行
首先我要说明一点,这一段提供的方法仅适用于比较简单的编译或者例行的编译。对于较大的工程,应该选择 Make,但是我目前也不懂这个,如果有需求请自行学习。
这一功能由 Code Runner 插件提供。添加以下设置
1 | "code-runner.executorMapByFileExtension": { |
我这里把 C 的配置也写进去了。Fortran 那部分的命令其实是
1 | 1. cd 到当前目录 |
点击右上角的三角形图标即可编译运行代码。

再强调一遍,这个配置仅供参考,并且对于需要额外的编译选项或复杂工程这个插件并不够用。
调试
程序的调试使用 gdb,教程可以看 GDB 入门教程。
完全使用命令行的 gdb 调试也是可以的,但我介绍两个基于 gdb 的图形界面调试方法。
第一个是使用 VS Code 的插件,因为有一篇文章已经介绍过了,所以我只贴链接:Visual Studio Code 搭建 Fortran 调试环境
第二个是使用 gdbgui,安装很简单,pip install gdbgui
就完事儿了。
运行的方法是 gdbgui xxx.exe
,将在浏览器中打开调试界面。
可以在底部输入 gdb 的命令。总之请自行把玩。