因为课程需要,今年开始学习FORTRAN语言。之前学校的计算概论用的是C,后来又学了C++和Python作为面向对象的工具,数值计算方面主要通过学校的许可证用的MATLAB。因为专业侧重数值模拟和反演问题,对于FORTRAN这一门上古的数值计算语言早有耳闻,在学习Scientific Computing的时候也经常讲到一些原本是基于FORTRAN优化的子程序和底层设计模块。上网查了一下,FORTRAN的社区非常少,而且可能是因为使用者都已经是富有经验的程序设计者,自学入门的新手不多,很多地方还是需要自己摸索,就决定索性在博客上记录一下摸索的过程。
FORTRAN,原意为Formula Translation(公式翻译器),是出现很早的一门高级语言。FORTRAN的主要面向科学计算、数值计算,虽然在FORTRAN-2003版本中逐渐引入了更加丰富的面向对象(Object Oriented)设计思维,但是其主要的功能仍然是数值计算领域;某种意义上,使用FORTRAN的人一般不需要过于复杂的面向对象策略,需要使用复杂完整的面向对象策略的人也并不会选择FORTRAN。最近还发现非常辛酸的一点,CNBlogs上的代码插入不支持Fortran的语法高亮,也没有找到支持的插件。
一. FORTRAN 编译器的安装
查了一下,目前相对常见的Fortran编译器版本是Fortran77或者Fortran90/95,进入新世纪的修正版本Fortran2003反而用的比较少。流行的免费FORTRAN编译器实现方案包括GCC的GFortran,Intel的Intel Fortran Compiler等。我这里使用的是G95,是GFortran对应Fortran95的一款编译器。Windows系统上如果已经安装了MinGW体系(如果你使用过gcc的C语言或者C++编译器,一般都已经装了),那么一个.exe文件就可以帮忙搞定安装G95的全部操作!非常方便!
G95.org提供下载g95_MinGW.exe的ftp:http://ftp.g95.org/g95-MinGW.exe;如果没有成功,加载不出来(对我来说就是这样),那么fortran company网站的g95下载也可以:https://www.fortran.com/the-fortran-company-homepage/whats-new/g95-windows-download/。下载下来解压,应该就是一个.exe文件,直接运行就可以了,程序会自动询问你安装位置(可以自己选)、是否添加到路径(PATH,选是就好)等等问题,不到两分钟整个安装就完成了!如果要验证安装是否成功,在命令行cmd中直接输入
然后cmd会返回一个G95的版本信息,如下所示。首先看到这个版本其实已经8年半没有更新过了;此外,G95编译器是开源的,所以“You may redistribute copies of G95 under the terms of the GNU General Public License”。
C:\Users\admin>g95 --version G95
(GCC 4.1.2 (g95 0.93!) Jun 16 2010)
Copyright (C) 2002-2008 Free Software Foundation, Inc. G95 comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of G95
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING
二. FORTRAN文件的编写的编译
本来,之前用C语言的时候,Code::Blocks是一款相当不错的IDE,而且支持C,C++和Fortran。不过后来转到C++以后,因为更快的速度,选择了Dev-C++作为写小文件的IDE,而Visual Studio作为写比较大文件的IDE。Fortran的IDE不算很多,就没有再安装,目前我用Notepad++文本编辑器写Fortran文档,然后在命令行里面编译运行。Notepad++真是神勇,作为一款文本编辑器各种高亮都有。在Notepadd++中编辑如下代码:
PROGRAM hello_world
PRINT *, 'Hello World! Welcome to FORTRAN!'
END
并且将其储存为 hello_world.f90。然后,我们在命令行中用刚刚下载的g95 compiler编译这个程序。首先,进入文件所在的文件夹,键入盘符加冒号(如 “D:”)进入某个磁盘,键入”dir”查看当前目录下的文件及文件夹,键入”cd+空格+路径”(如”cd Documents”)进入某一文件夹。使用g95,将hello_world.f90编译为可执行的对象文件hello_world.o:
再使用”dir”命令,就可以看到当前目录下出现了”hello_world.o”,直接键入文件名运行:
D:\Personal Documents\Programming\Fortran>hello_world.o
Hello World! Welcome to FORTRAN!
新建一个计算两浮点数算术平均和几何平均的fortran文件,存为add_numbers.f90:
PROGRAM add_numbers
REAL :: a, b, av1, av2
PRINT *, 'Input 2 numbers:'
READ (*,*) a, b
av1 = (a + b)/2; av2 = (a*b)**0.5
PRINT *, 'Arithmetic mean: ', av1
PRINT *, 'Geometric mean: ', av2
END
同样编译运行:
D:\Personal Documents\Programming\Fortran>add_numbers.o
Input 2 numbers:
2.0 8.0
Arithmetic mean: 5.
Geometric mean: 4.