FORTRAN

FORTRAN

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

  • 中文名稱
    公式翻譯器
  • 外文名稱
    FORmula TRANslator
  • 外語縮寫
    Fortran

開發歷史

早在1951年,美國IBM公司約翰·貝克斯(John Backus)針對匯編語言的缺點著手研究開發FORTRAN語言,並于1954年在紐約正式對外發布。稱約翰·貝克斯提出的FORTRAN語言為FORTRANⅠ,FORTRANⅠ雖然功能簡單,但它的開創性工作,在社會上引起了極大的反響。到1957年第一個FORTRAN編譯器在IBM704電腦上實現,並首次成功運行了FORTRAN程式。

FORTRAN

在1958年,對FORTRANⅠ進行了擴充和完善,引進了子函式等概念,推出了商業化的FORTRANⅡ版本。之後,FORTRAN語言發展迅速,多種版本相繼在其它電腦上實現。

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

隨著FORTRAN語言版本的不斷更新和變化,語言不兼容性問題日益突出,語言標準化工作被提上了日程。1962年5月,美國標準化協會(簡稱ANSI)成立相關機構著手進行FORTRAN語言標準化的研究工作,並于1966年正式公布了兩個標準文本:美國國家標準FORTRAN(ANSI X3.9-1966)和美國國家標準基本FORTRAN(ANSI X3.10-1966),前者相當于FORTRAN Ⅳ,後者相當于FORTRANⅡ。基本FORTRAN是美國國家標準FORTRAN的一個子集,從而實現了語言的向下兼容,初步解決了語言的兼容性問題。通常稱美國國家標準FORTRAN為FORTRAN 66。FORTRAN 66的推出在國際上產生了廣泛影響,1972年國際標準化組織(簡稱ISO)在FORTRAN 66基礎上製定了FORTRAN語言三級國際標準:基本級、中間級和完全級。

FORTRAN

20世紀60代末,結構化程式設計方法提出後,具有結構化特征的程式語言開始出現,如:ALGOL、PASCAL、MODULA、C等。如何將結構化特征引入FORTRAN 66引起電腦廠商和研究機構的高度重視,許多電腦廠商開始對FORTRAN 66進行不同程度的擴充,引入了結構化特征。針對這種情況,ANSI于1976年對FORTRAN 66(ANSI X3.9-1966)進行了修訂,吸收了電腦廠商所擴充的一些行之有效的功能,同時增加了許多新內容。ANSI于1978年4月正式公布了新的美國國家標準(程式語言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推出後,由于具有結構化特征,在社會上得到了廣泛套用,同時由于擴充了字元處理功能,在非數值處理領域也能大顯身手。

FORTRAN

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與Compag公司合並,DEC成為Compag公司的全資子公司,于是Digital Visual FORTRAN更名為Compaq Visual FORTRAN,其最新版本為Compag 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編譯器。

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

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

支持Fortran 2003標準的編譯器行將推出,新版本的Sun Studio 編譯器已經支持部分 Fortran 2003 文法。

文法版本

FORTRAN I

最早的FORTRAN版本套用于IBM 704系統上,包含了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,和BACKSPACEPAUSE, 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版本的廠商經常為此所苦

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/OPARAMETER語句以指定常數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做了最佳化。

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

Fortran90,Fortran95,Fortran2003的相繼推出使Fortran語言具備了現代高級程式語言的一些特徵。

編程

下面是一個在標準輸出設備上使用Fortran90輸出Hello World的簡單程式,這種程式通常作為開始學習程式語言時的第一個程式:

program main

print *,'hello world'

end

編譯器

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。目前康柏公司已並入惠普公司。Compaq Visual Fortran的最新版是6.6。

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

Lahey Fortran

Absoft Fortran

OpenWatcom

Linux作業系統下:

PGI Fortran

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

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

g95,跟GFORTRAN同為開放原始碼的Fortran95編譯器。

程式包

幾個著名的Fortran程式包:

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

BLAS--Basic Linear Algebra Subroutines

LAPACK--Linear Algebra PACKage

FORTRAN90是ISO(國際標準化組織)于1991年推出的最新標準,我國國家標準是GB/T 3057-1996.除了保持FORTRAN77的全部優點之外,又 增加了許多具有現代特徵的功能,使他成為具有良好的結構特徵,鮮明的時代特徵的程式語言.程式設計是電腦基礎教育的基礎與重點,高級語言程式設計課是繼微機套用基礎之後的一門必修的基礎課,目的是向學生介紹程式設計的基礎知識,使學生掌握高級語言程式設計的基本方法,具有套用電腦的初步能力,並培養學生掌握用電腦處理問題的思維方法。通過該課程的學習,要求學生了解FORTRAN語言的特點,基本成份及使用方法,具有閱讀程式和初步編程的能力。進行演算法的初步訓練,掌握最基本演算法的設計和實現方法。掌握結構化程式設計方法,能設計出良好風格的程式。具有調試程式的基本能力。

將來發展

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

不可否認,Fortran語言與目前流行的JAVA,C#等高級語言相比,它缺乏創造力。但是,工科學生必須註意到,由于Fortran在工程計算領域長期處于統治地位,很多優秀的工程計算軟體都是運用fortran語言編寫,例如ANSYS,Marc,為了能夠使用這些商業軟體的高級功能,必須先學會fortran語言,才能編寫應用程式接口。

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

相關詞條

相關搜尋

其它詞條