FORTRAN

FORTRAN

Fortran源自於“公式翻譯”(英語:FormulaTranslation)的縮寫,是一種程式語言。它是世界上最早出現的計算機高級程式設計語言,廣泛套用於科學和工程計算領域。FORTRAN語言以其特有的功能在數值、科學和工程計算領域發揮著重要作用。Fortran 90之前的版本是人們所知曉的FORTRAN(全部字母大寫),從Fortran 90以及以後的版本都寫成Fortran(僅有第一個字母大寫)。

歷史

開發史

1951年:美國IBM公司約翰·貝克斯(John Backus)針對彙編語言的缺點著手研究開發FORTRAN語言。

1954年:約翰·貝克斯在紐約正式對外發布,稱為FORTRANⅠ,FORTRANⅠ功能簡單,但它的開創性工作,在社會上引起了極大的反響。

1957年:第一個FORTRAN編譯器在IBM704計算機上實現,並首次成功運行了FORTRAN程式。

1958年:對FORTRANⅠ進行了擴充和完善,引進了子函式等概念,推出了商業化的FORTRANⅡ版本。

1962年:推出了FORTRAN Ⅳ。FORTRAN Ⅳ沒有充分考慮兼容性,導致FORTRANⅡ程式不能在FORTRAN Ⅳ系統中運行,使其套用受到了很大限制,這時語言不兼容性問題和影響被突出表現出來。此前也出現過FORTRAN Ⅲ,但由於存在嚴重缺陷,沒有在計算機上實現。

標準化

隨著FORTRAN語言版本的不斷更新和變化,語言不兼容性問題日益突出,語言標準化工作被提上了日程。

1962年5月:美國標準化協會(簡稱ANSI)著手進行FORTRAN語言標準化的研究工作。

1966年:ANSI正式公布了兩個標準文本:美國國家標準FORTRAN(ANSI X3.9-1966)和美國國家標準基本FORTRAN(ANSI X3.10-1966),前者相當於FORTRAN Ⅳ,後者相當於FORTRANⅡ。基本FORTRAN是美國國家標準FORTRAN的一個子集,從而實現了語言的向下兼容,初步解決了語言的兼容性問題。通常稱美國國家標準FORTRAN為FORTRAN 66。FORTRAN 66的推出在國際上產生了廣泛影響。

1972年:國際標準化組織(簡稱ISO)在FORTRAN 66基礎上制定了FORTRAN語言三級國際標準:基本級、中間級和完全級。

20世紀60代末,結構化程式設計方法提出後,具有結構化特徵的程式設計語言開始出現。如:ALGOL、PASCAL、MODULA、C等。計算機廠商和研究機構的高度重視將結構化特徵引入FORTRAN 66,並開始對FORTRAN 66進行不同程度的擴充,引入了結構化特徵。

1976年:ANSI對FORTRAN 66(ANSI X3.9-1966)進行了修訂,吸收了計算機廠商所擴充的一些具有可行性的功能,同時增加了許多新內容。

1978年4月:ANSI正式公布了新的美國國家標準(程式設計語言FORTRAN ANSI X3.9-1978),同時宣布撤消ANSI FORTRAN 3.9-1966,通常稱新標準為FORTRAN 77(該版本原計畫1977年公布)。FORTRAN 77向下兼容FORTRAN 66。

1980年:FORTRAN 77被ISO正式確定為國際標準ISO 1539-1980,該標準分全集和子集。FORTRAN 77推出後,由於具有結構化特徵,在社會上得到了廣泛套用,同時由於擴充了字元處理功能,在非數值處理領域也能大顯身手。

20世紀80年代末,FORTRAN 77結構化和現代化的研究開始興起。

1991年5月:ANSI公布了新的美國國家標準FORTRAN(ANSI 3.198-1991)。之後,ISO採納該標準,並確定為國際標準ISO/IEC 1539-1:1991,新國際標準還採納了中國計算機和信息處理標準化技術委員會程式設計分會提出的多位元組字元集數據類型及相應的內部函式,為非英語國家使用計算機提供了極大的方便。通常稱新標準為Fortran 90,Fortran 90向下兼容FORTRAN 77。之後不久又出現了Fortran 95。

Fortran 90的推出,使傳統Fortran語言具有了現代氣息。Fortran 2003 的規則已經由ISO組織制定發布。

平台化

Windows平台下,微軟公司將Fortran 90無縫集成在Developer Studio集成開發環境之中,推出了Microsoft Fortran PowerStation 4.0,使Fortran 90真正實現了可視化編程,徹底告別了傳統DOS環境(字元界面),轉到了現代Windows環境(視窗界面),共享微軟公司Windows平台的豐富資源。

1997年3月:微軟公司和數據設備公司(Digital Equipment Corp,簡稱DEC)合作研究、開發和推出了功能更強的Fortran語言新版本:Digital Visual FORTRAN 5.0,它是Microsoft FORTRAN PowerStation 4.0的升級換代產品。DEC公司在高性能科學和工程計算方面擁有先進的技術,研發了高質量的FORTRAN編譯器。

1998年1月:DEC與Compaq公司合併,DEC成為Compaq公司的全資子公司,於是Digital Visual Fortran更名為Compaq Visual Fortran,其最新版本為Compaq Visual Fortran 6.6。Compaq和HP合併之後,Compaq的Fortran小組和Intel的Fortran開發小組合併,開發出來Intel Fotran編譯器9,有Linux和windows2個版本,其Windows版本為Intel Visual Fortran, 可以和微軟的Visual Studio,net集成。Windows平台下還有PGI,Absoft,Intel等多個商業公司的Fortran編譯器,還有大量小公司的免費Fortran編譯器。

OpenMPI使Fortran等語言可以容易且免費的實現並行計算。

Linux平台下,其GCC編譯器默認支持Fortran,另外有Intel,Sun Studio,OpenMPI,Photran等共享編譯器和PGI,Absoft,lachy, IBM,SGI,HP等多個版本的商業編譯器。

語法版本

IBM版本

FORTRAN I

FORTRAN FORTRAN

最早的FORTRAN版本套用於IBM704系統上,包含了32種語句,包括:DIMENSION和EQUIVALENCE語句賦值語句三態算術IF語句。以 IF 這個陳述式檢查例外情況(ACCUMULATOR OVERFLOW、QUOTIENT OVERFLOW和DIVIDE CHECK);IF語句以處理判斷開關和判斷指示燈GOTO,計算的GOTO,ASSIGN,和賦值GOTODO循環,格式化的輸入與輸出(Formatted I/O): FORMAT、READ、READ INPUT TAPE、WRITE、WRITE OUTPUT TAPE、PRINT和PUNCH,非格式化的輸入與輸出(Unformatted I/O): READ TAPE、READ DRUM、WRITE TAPE和WRITE DRUM,其他的輸入與輸出:END FILE、REWIND,和BACKSPACE PAUSE,STOP,和CONTINUEFREQUENCY語句(為編譯器提供最佳化幫助)。

FORTRAN II

1958年IBM又推出FORTRAN II。支援使用者撰寫副編程(subroutines)以及函式(functions)。有六個新陳述如下:SUBROUTINE、FUNCTION,和ENDCALL和RETURNCOMMON。接下來的幾年內,FORTRAN II 繼續又支援 DOUBLE PRECISION 和 COMPLEX 等資料型態(data types)。

FORTRAN III

IBM 繼續開發FORTRAN III。至1958年時已可以內建組合語言碼並新增其它功能;然而這個版本卻從未推出。有如704 FORTRAN和FORTRAN II、FORTRAN III等的開發過程包含了過多的機器相依性(machine-dependent),造成編程碼不易移植到其他機器上的問題。

FORTRAN IV

自1961年開始,IBM 開始發展FORTRAN IV,目的在於移除一些FORTRAN II中過於依賴機器本身的編程碼(例如:READ INPUT TAPE)同時新增一些新的功能,如 LOGICAL 資料型別。布爾類型(TRUE或者FALSE)與邏輯IF語句 則取代了算術IF語句。FORTRAN IV於1962年推出,最早套用於IBM 7030(Stretch)計算機之上,以及其接續的IBM 7090和IBM 7094版本。

標準化版本

FORTRAN 66 

在早期的FORTRAN語言發展史上,美國標準協會( American Standards Association,即今日的 ANSI)的委員們開始為FORTRAN制定標準規格,名為"American Standard Fortran"。 1966年委員會推出兩套FORTRAN標準版本,分別定義成 FORTRAN(基於FORTRAN IV,用來應付de facto標準)和Basic FORTRAN(基於FORTRAN II,並且移除其平台依賴性)。FORTRAN 第一套標準後來被稱為FORTRAN 66(大家仍習慣稱之為 FORTRAN IV)。FORTRAN 66有效的成功第一套工業標準版的FORTRAN。其功能如下:

主程式,程式單元SUBROUTINE、FUNCTION和BLOCK DATA,數據類型INTEGER、REAL、DOUBLE PRECISION、COMPLEX和LOGICAL,語句COMMON、DIMENSION和EQUIVALENCE。DATA語句用以指定初始值內部和EXTERNAL(例如庫)函式,賦值語句GOTO、賦值GOTO和計算GOTO語句邏輯IF和算術(三態)IF語句DO循環READ、WRITE、BACKSPACE、REWIND和ENDFILE語句以處理順序讀寫FORMAT語句CALL、RETURN、PAUSE和STOP語句DATA和FORMAT語句中的霍爾瑞斯常數,作為子程式的實際參數最長六個字母的標識符注釋行。

FORTRAN 77

在FORTRAN 66標準推出之後,各家編譯器廠商不斷推出更具擴充性的標準FOTRAN(StandardFortran),這使得ANSI於1969年開始著手於1966標準版本的修正工作。最後定稿於1977年,1978年四月正式推出FORTRAN。新的標準規格也就是著名的 FORTRAN 77,這個版本是基於FORTRAN 66之上新增許多功能,彌補過去的缺點:

CHARACTER數據類型,極大地擴展了的字元輸入和輸出以及對基於字元的數據進行處理的工具IMPLICIT語句IF語句塊,以及可選的ELSE和ELSE IF從句,提供改進了的對結構化編程的語言支持。OPEN,CLOSE和INQUIRE語句以改進I/O能力,直接訪問檔案I/O。PARAMETER語句以指定常數SAVE語句以保存本地變數內部函式的通用名稱。1978年推出了一個重要的版本FORTRAN 77是為MIL-STD-1753Release版。這個規格由美國國防部制定,這個標準化的FORTRAN 77編譯器並未引入ANSI FORTRAN 77標準。一些新功能最終合併到Fortran 90 標準版。

DO WHILE和END DO語句、INCLUDE語句、IMPLICIT NONE變數,用於IMPLICIT語句位處理內部函式,基於類似的包含在工業實時Fortran(ANSI/ISA S61.1 (1976))中的函式1991年推出IEEE 1003.9 POSIX標準版,為Fortran 77的編程人員提供了POSIX system上的呼叫。有超過一百種功能呼叫被定義在檔案上。允許存取POSIX-相容的行程控制(process control)、信號取得(signalhandling)、檔案系統控制(file system control)、裝置控制(devicecontrol)、程式指定(procedure pointing),以及資料流的輸入與輸出(stream I/O)。

由於成功的修正了FORTRAN 77發展流程,使得原本過於緩慢重複的編程設計可以順利的應付計算機領域迅速的變化。同時,作為將近15年的“標準FORTRAN”,FORTRAN 77成為歷史上最重要的一套電腦語言。

Fortran 90

FORTRAN 77的被嚴重推遲的後續版本,非正式的名稱是Fortran 90,最終於1992年作為ANSI標準被發表。這一大版本添加了許多新特性以反映自1978年標準以來發展的在編程方面顯著的變化:

自由格式原始碼輸入,以及小寫的Fortran關鍵字模組,將有關聯的過程和數據組合在一起,使它們可以被其它程式單元調用,包括允許限制一些模組的特定部分訪問。RECURSIVE過程極大地改善了參數傳遞機制,允許在編譯時檢查接口通用過程的用戶自定義接口操作符重載派生/抽象數據類型新的數據類型定義語法,以指定數據類型和變數的其它屬性可以在表達式和賦值語句中按整體運算元組(或數組節),由此極大地簡化了數學和工程計算。這些特性包括整體、部分和通配的數組賦值(比如用WHERE語句作選擇性賦值),數組常數和表達式,用戶定義的數組函式和數組構造。動態記憶體分配通過ALLOCATABLE屬性和ALLOCATE和DEALLOCATE語句POINTER屬性,指針賦值和NULLIFY語句以便於創建和操作動態數據結構CASE結構以用於多路選擇EXIT和CYCLE語句以用於在按順序地"跳出"正常的DO循環重複最長31個字元的標識符行內注釋用戶可控制的可定義的數字精度新的和增強的內部過程。

平台化版本

FORTRAN 95

Fortran 95僅是一個小改版,大部份修正了Fortran 90 standard一些較為顯著的問題。Fortran 95有不少的擴充,尤其是在High Performance Fortran的規格:

FOR ALL和嵌套的WHERE結構以幫助向量化用戶定義的PURE和ELEMENTAL過程。Fortran 95的一個重要補充是ISO技術報告TR-15581:增強的數據類型工具,非正式名稱是可分配的TR。這一標準定義了ALLOCATABLE數組的增強的套用,先於與完全的Fortran 2003兼容的Fortran編譯器,以供使用。這些使用包括在過程偽參數列表中以及將函式返回值使用ALLOCATABLE數組作為派生的類型組件。(ALLOCATABLE數組比基於POINTER的數組更受歡迎,因為ALLOCATABLE數組是由Fortran 95保證的,當它們退出範圍時會被自動釋放掉,避免了記憶體溢出的可能性。另外,別名也不再是最佳化數組引用時的一個問題,可以使編譯器生成比用指針時更快的代碼。)

Fortran 95的第二個補充是ISO技術報告TR-15580:浮點異常處理,非正式名稱是IEEE TR。這一標準定義了對IEEE浮點算術和浮點異常處理的支持。

FORTRAN 2003

最新的版本Fortran 2003,有著更大幅度的改版。ISO Fortran Working Group (WG5)的官方網站有關於Fortran 2003新特性的詳細總結,並有PDF檔案PDF或者壓縮PostScript檔案可供直接下載。

據該文所述,本版本的主要改進包括:

增強了衍生類型:帶參數的衍生類型,改善了控制的可操作性,改善了結構化的創建和釋放。支持面向對象編程:擴展類型和繼承,多態,動態類型分配,以及類型綁定過程。改善了數據操作:可分配的組件(編入IEEE TR 15581),延期的類型參數,VOLATILE屬性,在數組構造和分配語句中顯式定義類型,增強的指針,擴展的初始化表達式,增強的內部過程。增強的輸入/輸出:異步傳輸,流訪問,用戶指定衍生類型的傳輸操作,用戶在格式轉換時指定捨入控制,為連線前單元指定常數,FLUSH語句,關鍵字的規範,訪問錯誤信息。過程指針。支持IEEE浮點算法和浮點異常處理(編入IEEE TR 15580)。與C語言的互動性支持國際化:訪問ISO 106464位元組字元和在格式化的數字輸入/輸出中選擇數字或者逗號。與宿主作業系統增強的集成:訪問命令行參數,環境變數和處理器錯誤信息。

FORTRAN 2008

Fortran 2003之後的下一個版本是Fortran 2008。和Fortran 95一樣只是一個小改版,略微更正了Fortran 2003的一些問題,並且合併了TR-19767的語言功能。

如同 February 2007,新的功能包括了Co-array Fortran–平行處理模式BIT資料型態。2007年8月,資料型態 BIT被刪除了。2008年2月,Coarrays的計畫已縮小,僅有Parallel I/O,而研發團隊也被裁員了。

特性

Fortran語言的最大特性是接近數學公式的自然描述,在計算機里具有很高的執行效率。

易學,語法嚴謹。

可以直接對矩陣和複數進行運算,這一點類似MATLAB。

自誕生以來廣泛地套用於數值計算領域,積累了大量高效而可靠的源程式。

很多專用的大型數值運算計算機針對Fortran做了最佳化。

廣泛地套用於並行計算和高性能計算領域。

Fortran 90,Fortran 95,Fortran 2003的相繼推出使Fortran語言具備了現代高級程式語言的一些特性。

編譯器

Windows作業系統下:

Fortran Power Station 4.0 (FPS 4.0),微軟公司開發的Fortran編譯器。1997年3月轉讓給DEC公司。

Digital Visual Fortran (DVF),Fortran Power Station的DEC公司版本。

Compaq Visual Fortran (CVF),1998年1月,DEC公司被康柏公司收購,Digital Visual Fortran更名為Compaq Visual Fortran。一個著名的版本是Compaq Visual Fortran 6.5。2002年,康柏公司已併入惠普公司。Compaq Visual Fortran的最新版是6.6。

Intel Fortran,英特爾公司的開發的Fortran編譯器。

Lahey Fortran

Absoft Fortran

OpenWatcom

Linux作業系統下:

PGI Fortran

Intel Fortran,英特爾公司的開發的Linux平台Fortran編譯器。

G77,GNU的Fortran77編譯器,集成在GCC中。

GFORTRAN,GNU的最新的Fortran編譯器,集成在GCC 4.0中,目的是支持Fortran 95和一部分Fortran 2003的功能,以替代G77。

G95,跟GFortran同為開放原始碼的Fortran95編譯器。

程式包

幾個著名的Fortran程式包:

IMSL--國際數學和統計程式庫

BLAS--Basic Linear Algebra Subroutines

LAPACK--Linear Algebra PACKage

發展趨勢

Fortran語言是一種極具發展潛力的語言,在全球範圍內流行過程中,Fortran語言的標準化不斷吸收現代化程式語言的新特性,並且在工程計算領域仍然占有重要地位。

Fortran語言與程式化語言JAVA,C#等高級語言相比,它缺乏創造力。但是,由於很多優秀的工程計算軟體都是運用Fortran語言編寫,例如ANSYS、Marc,為了能夠使用這些商業軟體的高級功能,用戶必須先學會Fortran語言,才能編寫應用程式接口。由此決定了Fortran在工程計算領域將長期處於統治地位。

在數值計算中,Fortran語言仍然不可替代。Fortran 90標準引入了數組計算等非常利於矩陣運算的功能。在數組運算時,Fortran能夠自動進行並行運算,這是很多程式語言不具備的。運用Fortran語言,用戶能夠運用很多現成的函式軟體包,所以非常便利。(MATLAB的早期版本,主要就是為兩個著名的Fortran函式包提供程式接口。)

相關詞條

相關搜尋

熱門詞條

聯絡我們