因為課程需要,今年開始學習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.