Fortran
Fortran,可音譯做福傳,源自於「公式翻譯」(英語:FormulaTranslation)的縮寫,伊是通用的編譯型指令式程式語言,特別適用佇數值計算和科學計算。伊佇一九五七年由 IBM 開發出來,是世界上頭一个予正式採用並流傳到今的高階程式語言。
簡介
Fortran 上原初由 IBM 佇一九五空年代開發,用佇科學佮工程應用,而且長時間統治了科學計算程式。伊已經佇計算密集領域內底應用超過六个年代,譬如數值天氣預報、有限元分析、計算流體力學、地球物理學、計算物理學、晶體學佮計算化學。伊是高效能運算的流行語言,並且予世界上上緊超級電腦的基準測試佮排名。
Fortran 足濟版本的,逐个嘛增加擴充煞佇咧真大程度上保持佮頭前版本的相容性。後續的版本已經增加支援矣:結構化程式和是字元資料的處理(FORTRAN 七十七), 陣列程式、模組化程式佮泛型程式(Fortran 九十), 高效能 Fortran ( Fortran 九十五), 物件導向程式設計(Fortran 兩千空三), 並行計算(Fortran 兩千空八)佮天然的平行計算能力(Coarray Fortran 兩千空一十八分之二千空八)。
Fortran 的設計是足濟其他語言的基礎。其中上蓋周知的是 BASIC,伊敢若是 FORTRAN II,具有一寡語法清理,尤其是閣較好的邏輯結構,佮其他互動式環境中使工作閣較容易的變閣較。
起源
佇一九五三年後期,約翰 ・ 巴科斯(John W . Backus)伊向佇咧 IBM 的上司提交了一份提案,愛為程式𪜶的 IBM 七百空四主機,來開發一種閣較實用的語言以替代組合語言。歷史上 Backus 的團隊包括程式的設計師 Richard Goldberg、Sheldon F . Best、Harlan Herrick、Peter Sheridan、Roy Nutt、Robert Nelson、Irving Ziller、Harold Stern、Lois Haibt 和 David Sayre。伊的概念包括閣較容易的共方程錄入電腦,這是 J . Halcombe Laning 發展出的想法,並且佇一九五二年演示 Laning 佮 Zierler 系統內底。
佇一九五四年十一月,Backus 等人完成矣草案規定《IBM 數學公式轉譯系統 FORTRAN》,第一本 FORTRAN 手冊出來佇一九五六年十月,隨後佇一九五七年四月交頭一个 FORTRAN 編譯器。這是頭一个最佳化編譯器,因為客戶毋情願使用高階程式語言,除非伊的編譯器會當生做接近於手工編碼組合語言效能的代碼。
就算是程式社群質疑新方法敢會當較贏過手工編碼,伊共操作一台機器所需要的程式語句數目縮減二十倍,毋過快速的得著接受。John Backus 佇一九七九年佮 IBM 倩員雜誌《Think》的一改訪談中講道:「 我的多數工作出於貧惰。我無佮意寫程式,所以當時我工課咧 IBM 七百空一上,為計算彈道軌跡書寫程式的時,我開始製造一个程式的系統來使這書寫程式閣較容易」。
FORTRAN 語言被科學家廣泛接納,用來書寫數值計算密集程式,這鼓勵編譯器作者生產會當生成閣較緊佮閣較高效代碼的編譯器。佇語言內底包括複數資料類型,予得 Fortran 特別適合技術應用譬如電子工程。
到甲一九六O年,FORTRAN 版本已經會當得著 IBM 七百空九、六仔五、一千六百二十佮七千空九十電腦。FORTRAN 流行性的顯對增長,刺激矣競爭電腦製作商佇咧𪜶的機械頂懸提供 FORTRAN 編譯器,就按呢到甲一九六三年,儉佇超過四十个 FORTRAN 編譯器。故此,FORTRAN 予人認為是第一个廣泛使用的跨平台程式語言。
Fortran 的發展平行佇咧編譯器技術的早期演進,佇咧理論佮編譯器設計的進步,受著為著 Fortran 程式生做高效代碼的激勵。
FORTRAN
上早的啊 FORTRAN 版本應用於 IBM 七百空四系統上,包含著三十二个語句:
- ` DIMENSION ` 和 ` EQUIVALENCE ` 語句。
- 這个語句。
- 三態算術 ` IF ` 語句。
- 檢查異常的情況:` IF ACCUMULATOR OVERFLOW `、` IF QUOTIENT OVERFLOW ` 和 ` IF DIVIDE CHECK `;操縱感應開關佮感應燈:` IF ( SENSE SWITCH i ) `、` SENSE LIGHT i ` 和 ` IF ( SENSE LIGHT i ) `。
- ` GOTO `、計算 ` GOTO `、` ASSIGN ` 佮這个價值 ` GOTO `。
- ` DO ` 迴箍。
- 格式化輸入佮輸出:` FORMAT `、` READ `、` READ INPUT TAPE `、` WRITE OUTPUT TAPE `、` PRINT ` 和 ` PUNCH `。
- 非格式化輸入佮輸出 : ` READ TAPE `、` READ DRUM `、` WRITE TAPE ` 和 ` WRITE DRUM `。
- 其他的輸入佮輸出:` END FILE `、` REWIND ` 和 ` BACKSPACE `。
- ` PAUSE `、` STOP ` 和 ` CONTINUE `。
- ` FREQUENCY ` 語句(為編譯器提供最佳化提供)。
演化
FORTRAN II
一九五八年 IBM 閣推出 FORTRAN II。主要的增強是欲藉允准使用者書寫的次常式佮函式,𪜶通過傳遞參照的形式參數來回值,從而支援程序式程式。` COMMON ` 語句為常式提供了存取公共(抑是講全域)變數的一種方式。增加著欲下六个新語句:
- ` SUBROUTINE `、` FUNCTION ` 和 ` END `。
- ` CALL ` 和 ` RETURN `。
- ` COMMON `。
紲落來的幾冬來,FORTRAN II 閣繼續支援矣 ` DOUBLE PRECISION ` 和 ` COMPLEX ` 資料類型。
古早的 FORTRAN 編譯器佇咧較早時代無支援遞迴。早期的電腦架構無支援疊的概念,當𪜶直接支援鬥陣的時陣,倒轉去位置不三時都儲存佇咧1626鄰這个案件定定式代碼的一个固定位置(比如講 IBM 一千一百三十), 抑是一个特定的機器暫存器(IBM 三百六十系列)之中,𪜶干焦會當佇這條件下允准遞迴,隨由軟體來維護一个疊起來,這搭轉去位址欲佇咧進行呼叫進前儲存佇咧疊起去頂懸,並佇咧這个呼叫回回了後恢復。就算講無規定佇咧 FORTRAN 七十七之中,足濟的 F 七十七編譯器共其做一个選項來支援遞迴,而且 Burroughs 主機,設計有內建的遞迴,咧共做其他的預設來支援。伊佇咧 Fortran 九十中通過新關鍵字 ` RECURSIVE ` 成做標準。
簡單的 FORTRAN II 程式
下跤的海倫公式程式,對磁帶盤上讀資料,伊包含三个五位整數 A、B 和 C 作為輸入。遮也無「類型」聲明可用:名開始就開始 I、J、K、L、M 抑是 N 的變數是「定點數」(就是整數), 其他的是浮點數。因為這个例愛處理整數,變數的名開始於字母「I」。 佇咧 FORTRAN II 中變數名著愛開始於字母,並且會當後續字母和數字二者,到甲六字元的限制。若是 A、B 和 C 袂當表示佇咧平面幾何中一个三角形的邊,程式欲結束執行,` STOP ` 予出錯誤代碼「一」。 抑若無列印輸出行來顯示 A、B 和 C 的輸入值,隨後是計算出的作為浮點數的三角形的面積 AREA,伊占領輸出行的十个空位,並顯示較小數點咧兩位,這指定佇標號六百空一的 ` FORMAT ` 語句內底的「F 十二」。
FORTRAN III 至 FORTRAN IV
IBM 繼續開發 FORTRAN III,至一九五八年的時已經允准內建組合語言代碼以及其他一寡特徵;毋過這个版本煞毋捌做產品推出。類似七百空四 FORTRAN 和 FORTRAN II,FORTRAN III 包含著過多的機器依賴性,造成程式碼歹徙栽去其他的機器頂懸的問題。所以其他的廠商提供的早期 FORTRAN 版本嘛定定遭受類似的困苦。
FORTRAN 被提供予 IBM 一千四百空一電腦,通過一種創新的六十三階段編譯器,伊完整的執行干焦八千个(六位元)字元的磁芯記持體中。這个編譯器會使對磁帶或者是對兩千兩百張拍空卡開始執行;伊無進一步的使用磁帶抑是磁碟儲存。伊保持程式佇記憶體中閣裝載崁的部份,取締共轉做可執行形式,正如 Haines 咧講的彼款按呢。此文被重印編輯佇兩版的《編譯器破析》和 IBM 手冊《Fortran 規定佮操作的過程,IBM 一千四百空一》之中。這種可執行形式無完全是機器語言;轉浮寡數算術、下標、輸入 / 輸出佮函式參照是解說執行的,這較早先於 UCSD Pascal 的 P-code 兩个年代。IBM 尾仔為一千四百系列電腦提供了 FORTRAN IV 編譯器。
自一九六一年開始,因為客戶的強烈要求,IBM 開始發展 FORTRAN IV,目的就是佇咧徙掉一寡 FORTRAN II 較過依賴機器本身的程式碼(比如講:` READ INPUT TAPE `), 嘛增加仝一寡新的特徵,比如講 ` LOGICAL ` 資料型別(TRUE 抑是講 FALSE)、 布林表達式佮取代了算術 IF 語句的邏輯 IF 語句。FORTRAN IV 佇一九六二年推出,上早應用佇咧 IBM 七千空三十(「 Stretch」)計算機之上,來閣推出來矣 IBM 七千空九十佮 IBM 七千空九十四版本,佮尾仔一九六六年的 IBM 一千四百空一版本。
到甲一九六五年,FORTRAN IV 應該已經有符合美國標準協會矣 X 三孵四 . 三 FORTRAN 工作群組開發的標準。佇一九六六年至一九六八年中間,IBM 為其 System / 三百六十提供一寡 FORTRAN IV 編譯器,逐个攏以指示矣乎編譯器執行需要的上細記憶體量的字母來號名。字母 F、G、H 匹配 System / 三百六十模式編號來指示記持體大細,逐字母增長攏是二倍:
- 一千九百六十六 : FORTRAN IV F for DOS / 三百六十(六十四 K 位元組)
- 一千九百六十六 : FORTRAN IV G for OS / 三百六十(一百二十八 K 位元組)
- 一千九百六十八 : FORTRAN IV H for OS / 三百六十(兩百五十六 K 位元組)
數字裝置公司(DEC)佇一九六七年至一九七五年之間為 PDP 鋪十維護矣 DECSYSTEM 鋪十 Fortran IV(F 四十)。
大約佇咧這个時陣,FORTRAN IV 開始足重要的教育工具佮實現,比如講趨鐵盧大學創造了 WATFOR 和 WATFIV 來簡化早期編譯器複雜的編譯佮連結的過程。
FORTRAN 六十六
古早的 FORTRAN 語言發展史上上重要的一件大事,凡勢是美國標準協會(即今仔日的美國國家標準協會 ANSI)的委員阮,開始為 FORTRAN 制定標準的規格,伊的名「美國標準 FORTRAN」。 一九六六年委員會推出兩套 FORTRAN 標準版本,分別定義成 FORTRAN(是因為 FORTRAN IV,伊已經充任事實標準), 和 Basic FORTRAN(是因為 FORTRAN II,並且移除其實機器依賴性)。 由第一套標準定義的 FORTRAN,官方代號做 X 三石九九一千九百六十六,後來予人號做 FORTRAN 六十六(猶原有誠濟人慣勢講的 FORTRAN IV)。 FORTRAN 六十六有效的成為第一套 FORTRAN 的工業標準版本。FORTRAN 六十六包括著:
- 主程式、` SUBROUTINE `、` FUNCTION ` 和 ` BLOCK DATA ` 程式單元。
- ` INTEGER `、` REAL `、` DOUBLE PRECISION `、` COMPLEX ` 和 ` LOGICAL ` 資料類型。
- ` COMMON `、` DIMENSION ` 和 `EQUIVALENCE ` 語句。
- ` DATA ` 語句,用指定初初值。
- 內部佮 ` EXTERNAL `(比如講庫)函式。
- 這个語句
- ` GOTO `、計算 ` GOTO `、` ASSIGN ` 佮這个價值 ` GOTO ` 語句。
- 邏輯 ` IF ` 佮算術(三態)` IF ` 語句。
- ` DO ` 迴箍語句。
- ` READ `、` WRITE `、` BACKSPACE `、` REWIND ` 和 ` ENDFILE ` 語句,用以處理順序讀寫。
- ` FORMAT ` 語句佮賦值格式。
- ` CALL `、` RETURN `、` PAUSE `、` STOP ` 和 ` CONTINUE ` 語句。
- 霍爾瑞斯常數,用佇咧 ` DATA ` 和 ` FORMAT ` 語句,作為予子程式的實際參數。
- 上長六字元的識別碼。
- 注釋行。
- ` END ` 走。
FORTRAN 七十七
佇咧 FORTRAN 六十六標準捒出來了後,逐家編譯器廠商不斷推出閣較擴充性的標準 FORTRAN,促使 ANSI 委員會 X 三 J 三於一九六九年開始著手於一千九百六十六標準版本的修訂工作,這會著電腦商業裝置製造商協會 CBEMA(曾經的 BEMA)贊助。這个修訂標準的最總草案佇一九七七年發表,並且佇一九七八年四月去予正式批准為新的 FORTRAN 標準。新標準叫做 FORTRAN 七十七,其官方代號是 X 三石九石一千九百七十八,伊增加一寡重要特徵來彌補 FORTRAN 六十六的濟濟缺點:
- 塊狀 ` IF ` 和 ` END IF ` 語句,以及可選的 ` ELSE ` 和 ` ELSE IF ` 子句,提供改進了的對結構化程式的語言支援。
- ` DO ` 迴圈擴充,包括參數列達式,負數增量,佮零行程計數。
- ` OPEN `、` CLOSE ` 和 ` INQUIRE ` 語句,用改進 I / O 能力。
- 直接存取檔案 I / O。
- ` IMPLICIT ` 語句,用來變更或者是確認對未聲明變數的隱含約定,即如果𪜶的名開始於 I、J、K、L、M 抑是 N 著著 ` INTEGER `(抑無來做 ` REAL `)。
- ` CHARACTER ` 資料類型,替代了霍爾瑞斯字串,極大地擴充了字元輸入佮輸出猶閣有對基於字元的資料進行處理的設施。
- ` PARAMETER ` 語句,用指定定數。
- ` SAVE ` 語句,用以持久儲存局的變數。
- 內部函式的通用名稱(比如講 ` SQRT ` 嘛接受其他類型的實際參數,比如講 ` COMPLEX ` 抑是 ` REAL * 十六 `)。
- 一組內底函式(` LGE `、` LGT `、` LLE ` 和 ` LLT `), 因為用著字捾的邏輯較,伊敢若是 ASCII 定序順序。
佇咧這改標準修訂內底,一寡特徵去予人刣掉抑是以使捌符合標準的程式失效的方式來更加改矣。就算講佇這个衝突列表的二十四个案當中的大多數(參見 X 三石樵九一千九百七十八的附錄 A 二), 解決佇咧較早標準中允准但是真少使用的空縫佮病態的情形,少量特定功能去予人刁工刣除了,比如講:
- 霍爾瑞斯常數佮霍爾瑞斯資料,比如講:` GREET=十二 HHELLO THERE ! `。
- 佇咧 ` FORMAT ` 規定中讀入去 H 編輯(霍爾瑞斯欄位)描述符仔。
- 通過落去對陣列邊界的改變引𤆬,比如講:
- 共控制轉移出離佮回入 ` DO ` 迴圈的範圍(嘛是叫做「擴充範圍」)。
過渡甲 ANSI 標準 Fortran
開發繼續 FORTRAN 七十七了後的修訂標準被重複的捒慢,因為標準化過程難以佮上計算和程式實踐的快速變化。佮這个同時,做為「標準 FORTRAN」將近十五冬,FORTRAN 七十七成為著程式語言歷史上上重要的 Fortran 方言。
一个重要的 FORTRAN 七十七實用擴充,是一九七八年發行的 MIL-STD 被一千七百五十三。這個由美國國防部制定的規範,標準化了由多數 FORTRAN 七十七編譯器實現,煞並無引入去 ANSI FORTRAN 七十七標準內底的足濟特徵。遮的特徵最終合併入 Fortran 九十標準之中。
- ` DO WHILE `、` EXIT `、` CYCLE ` 和 ` END DO ` 語句。
- ` INCLUDE ` 語句。
- ` IMPLICIT ` 語句的 ` IMPLICIT NONE ` 變體。
- 位操縱內部函式,是因為了包括佇咧工業即時 Fortran(ANSI / ISA S 六十一孵一 ( 一千九百七十六 ))就是中的類似的函式。
一九九一年推出 IEEE 一千空三孵九 POSIX 標準,為 Fortran 鋪七十七的程式人員提供矣 POSIX 系統上的呼叫。有超過一百種功能呼叫被定義佇文件內底。允准存取 POSIX 相容的行程控制、訊號處理、檔案系統控制、裝置控制、過程定點,佮會當徙栽的方式下跤的串串流輸入去 / 輸出。
Fortran 九十
FORTRAN 七十七的被嚴重捒慢的後續版本,無正式的名稱是 Fortran 九十,終其尾佇一九九一年發行為 ISO / IEC 標準一千五百三十九 : 一千九百九十一,佇一九九二年發行為 ANSI 標準。除了共官方拚寫對 FORTRAN 改做 Fortran 以外,這重大的修訂版本有增加足濟特徵,用來反映自從一九七八年標準以來演變出的程式實踐中的重要變化:
- 自由格式原始碼輸入,不再需要佇鍵入語句進前越過前六字元位置。
- 細寫的 Fortran 關鍵字。
- 上長三十一字元的識別碼(佇咧較早的標準中為六字元)。
- 行內注釋。
- 會使揤整體運算元組(抑是陣列節), 是按呢真大的數化數學佮工程計算是。
- ` WHERE ` 語句用佇選擇性陣列值。
- 陣列值的常數佮表達式。
- 整體、部份佮遮的陣列值佮陣列表達式,比如講 ` X ( 一 : N )=R ( 一 : N ) \ * COS ( A ( 一 : N ) ) `。
- 使用者定義的陣列值的函式佮陣列構造子。
- ` RECURSIVE ` 過程。
- 模組,共有關聯的過程佮資料鬥做伙,使𪜶會當予其他程式單元呼叫,包括限制干焦允准存取模組的特定部份的能力。
- 極大地改善了參數傳達的機制,允准佇編譯時檢查介面。
- 使用者書寫的泛型過程的介面。
- 運算子加載。
- 衍生(結構化)資料類型。
- 新的資料類型定義語法,以指定資料類型佮變數的其他特性。
- 動態記持體分配,通過 ` ALLOCATABLE ` 特性佮 ` ALLOCATE ` 和 ` DEALLOCATE ` 語句。
- ` POINTER ` 特性,指標佮值 ` NULLIFY ` 語句,通好建立佮操作動態資料結構。
- 結構化迴圈構造,使用 ` END DO ` 語句用於迴圈總止,` EXIT ` 和 ` CYCLE ` 語句,用於有秩序地「跳出來」正常的 ` DO ` 迵天天代。
- ` SELECT `…` CASE ` 構造,用佇加路選擇。
- 使用者控制下會當徙栽的數值精度規定。
- 新的佮增強的內部的過程。
無愛刣掉
無仝款過去的這个修訂,佇咧 Fortran 九十標準文字的附錄「B . 一刪除特徵」中,無列出任何愛刣除的特徵。任何符合標準的 FORTRAN 七十七程式,佇咧 Fortran 九十之下嘛是符合標準的,二个標準攏應當會當定義伊的行為。
佇附錄「B . 二廢棄特徵」中列舉一个小組特徵,並向望佇將來的標準中刪除𪜶。所有的早期版本特徵的功能,攏會使用較新的 Fortran 特徵來完成。其中一寡為著簡化舊程式徙栽,大多數佇咧 Fortran 九十五中予人刣掉去矣。
Fortran 九十五
Fortran 九十五正式發表做 ISO / IEC 一千五百三十九孵一 : 一千九百九十七,伊干焦是一个小改版,其大部份是修正 Fortran 九十標準的一寡為著的問題。雖然如此,Fortran 九十五猶閣有袂少的擴充,尤其是對高效能 Fortran 的規定:
- ` FOR ALL ` 佮岫狀的 ` WHERE ` 結構,用輔助向量化。
- 使用者定義的 ` PURE ` 和 ` ELEMENTAL ` 過程。
- 衍生類型成員的預設初化,包括指標初始化。
- 擴充對資料物件使用初初開始化表達式的能力。
- 初初化的指標至 ` NULL ( ) `。
- 明確矣 ` ALLOCATABLE ` 陣列的定義,即𪜶咧出離了作用域的時自動的被釋放。
Fortran 九十五的一个重要補充按呢是 ISO 技術報告 TR 抹一爿五千五百八十一:《 增強的資料類型設施》,無正式的名稱是「會當分配 TR」。 這標準定義矣 ` ALLOCATABLE ` 陣列的增強的應用,先於完全與 Fortran 二千空三相容的 Fortran 編譯器來投入使用。這寡使用包括將 ` ALLOCATABLE ` 陣列做衍生類型成員、用佇過程偽參數列中以及作為函式倒轉值。
` ALLOCATABLE ` 陣列比是比 ` POINTER ` 的陣列閣較受歡迎,因為乎 ` ALLOCATABLE ` 陣列是由 Fortran 九十五提供保證的,當𪜶登出作用域的時陣會去予自動釋放掉,避免記持體流失的可能性。另外咧,別名嘛不再是最佳化陣列參照時的一个問題,會當使編譯器生成比用指標的時較緊的代碼。
Fortran 九十五的第二个補充是 ISO 技術報告 TR 抹一爿五千五百八十:《 浮點例外處理》,無正式的名稱是「IEEE TR」。 這標準定義矣嘿 IEEE 浮點算術佮浮點例外處理的支援。
條件編譯佮變長字串
除了強制性的「基礎語言」(定義佇咧 ISO / IEC 一千五百三十九孵一 : 一千九百九十七)Fortran 九十五語言閣包括兩个可選的模組:
- 變長字串(ISO / IEC 一千五百三十九孵二 : 兩千)。
- 條件編譯(ISO / IEC 一千五百三十九孵三 : 一千九百九十八)。
𪜶做伙構成做多部份的國際標準(ISO / IEC 一千五百三十九)。
現代 Fortran
成做由二十一世紀的標準定義的語言,特別是因為伊敆帶了物件導向程式設計支援佮後來的 Coarray Fortran,伊定定予人叫做「現代 Fortran」,這个術語佇文獻中的使用日漸漸增長。
Fortran 兩千空三
Fortran 兩千空三正式的發表為 ISO / IEC 一千五百三十九孵一 : 兩千空四,伊是介入足濟新特徵的重大修訂版本。ISO Fortran 工作群組(ISO / IEC JTC 一 / SC 二十二 / WG 五)的官方網站有關於著 Fortran 二千空三新特徵的詳細總結。
根據這个文所教,本版本的主要改進包括:
- 增強了的衍生類型:參數化衍生類型,改進的可存取性控制,改進的結構構造子佮終止器。
- 支援物件導向程式設計:類型擴充佮繼承,多型,動態型毋通分配,以及類型結束的過程,提供對抽象的資料類型的完全支援。
- 改善矣資料操縱:會當分配的成員(結合矣 IEEE TR 一爿五千五百八十一), 延遲類型形式參數,` VOLATILE ` 特性,佇陣列構造子佮分配語句內底顯式的類型指定,增強的指標,擴充的初始化表達式,增強的內部的過程。
- 增強的輸入 / 輸出:非同步傳輸,串流的存取,使用者指定的衍生類型的傳輸操作,使用者指定的在格式轉換時的失入控制,預連接單元的號名常數,` FLUSH ` 語句,關鍵字的規格化,存取錯誤資訊。
- 過程指標。
- 支援 IEEE 浮點演算法佮浮點仔例外處理(結合矣 IEEE TR 一爿五千五百八十)。
- 佮 C 語言的互動性。
- 支援國際化:存取 ISO 一鋪空六百四十六四位元組字元,佇數值格式化輸入 / 輸出中選擇較小數點抑是弄號。
- 增加佮宿主作業系統的整合:存取命令列參數、環境變數佮處理器錯誤資訊。
著 Fortran 兩千空三的一个重要補充是 ISO 技術報告 TR 被一石九千七百六十七:《 增強的 Fortran 中模組設施》。 這个報告提供矣「子模組」,伊會使 Fortran 模組閣較和類似 Modula 鋪二模組。𪜶攏類似 Ada 私有子對單元。這允准模組的規定佮實現,會當用分立的程式單元來表達,伊改大型庫的包裝,允准儘管發布明確介面煞保護商業機密,並防止編譯級聯。
Fortran 兩千空八
ISO / IEC 一千五百三十九孵一 : 二千空一十, 無正式的叫做 Fortran 兩千空八,佇二空一空年九月通過。伊只是一个小改版,略仔閣較正範矣 Fortran 兩千空三的一寡問題,並且合併矣 ISO / IEC TR 一交九千七百六十七 : 兩千空五的子模組功能。新的功能包括:
- 子模組,伊是用於模組的補充的結構設施;取代矣 ISO / IEC TR 一交九千七百六十七 : 兩千空五。
- Coarray Fortran,伊是並列執行模型。
- ` DO CONCURRENT ` 構造,用無內部依賴性的迵天。
- ` CONTIGUOUS ` 特性,用來指定儲存格局的限制。
- ` BLOCK ` 構造,伊會當包含具有構造作用域的物件的聲明。
- 遞迴會當分配成員,作為佇衍生類型中遞迴指標的替代者。
著 Fortran 兩千空八的一个補充是 ISO 技術規定(TS)二嬸九千一百十三 : 二千空一十二《進一步的 Fortran 仝 C 語言的互操作性》,伊佇二空一二年五月予人提交著 ISO 並得著批准。這个規定增加嘿 C 語言存取陣列描述符的支援,並且允准忽略實際參數的類型佮秩。
Fortran 兩千空一十八
Fortran 語言的上新修訂(Fortran 兩千空一十八)早先號做 Fortran 二千空一十五,伊是一个重大的修訂並且發行佇二空一八年十一月二八。
Fortran 二千空一十八結合了兩个此前出版的技術規範:
- ISO / IEC TS 二嬸九千一百十三 : 二千空一十二《進一步的 Fotran 仝 C 語言的互操作性》。
- ISO / IEC TS 一爿八千五百空八 : 二千空一十五《補充的 Fortran 並列特徵》。
另外的變更佮新特徵包括支援:ISO / IEC / IEEE 六桱空五百五十九 : 二千空一十一(佇咧 IEEE 七百五十四追二千空一十九的上新細細修訂進前的 IEEE 浮點數標準)、 十六進位輸入 / 輸出、` IMPLICIT NONE ` 增強佮其他變更加。
Fortran 的特徵
Fortran 語言的上大的特徵,是接近數學公式的自然描述,佇電腦里具有足懸的執行效率。Fortran 會當直接對矩陣佮複數平行運算。其矩陣元素佇記憶空間儲存次序,是採用縱排做主(Column major)次序,Matlab 嘛承襲這點,而且 C 語言是採用橫排做主(Row major)次序。
Fortran 自誕生以來較廣泛地應用佇數值計算領域,特別是平行計算佮高效能計算領域。真濟專用的大型數值運算電腦針對 Fortran 做了最佳化。Fortran 疊規晡是高效果靠咧的原始程式。Fortran 九十、Fortran 九十五、Fortran 兩千空三、Fortran 兩千空八和 Fortran 兩千空一十八的相紲出來,使 Fortran 語言有備現代高階程式語言的一寡特徵。
代碼例
Hello World
範例一个佇標準輸出裝置上輸出 Hello World 的簡單程式,這種程式通常做為開始學習程式語言的時陣的第一个程式,下跤是 FORTRAN 七十七的寫法:
下跤是 Fortran 九十的寫法:
上大公約數
下跤的 FORTRAN 七十七代碼例,使用歐幾里德演算法計算兩个數 ` A ` 和 ` B ` 的上大公約數:
下跤展示編譯佮執行這个程式的結果:
Fortran 九十特色的範例
下跤的程式展示動態記憶體分配佮陣列的運算,這是 Fortran 九十介入的兩个特徵。愛特別注意的是咧操縱陣列的時陣,未出現 ` DO ` 迴圈佮 ` IF ` / ` THEN ` 語句,數學運算應用佇做整體的陣列。仝款明顯的是運用描述性變數名佮普通代碼格式,這符合當代的程式風格。這个例佇互動式錄入的資料頂懸算平均值:
FORTRAN 編譯器
Windows 作業系統下:
Linux 作業系統下:
FORTRAN 數值庫
幾个出名的 Fortran 軟體套件:
參見
- f 二 c
- F 二 PY NumPy
- Fortran 編譯器列表
- Fortran 數值庫列表
- 矩陣表示
- 行主序佮列主序
註解
參照
延伸閱讀
語言標準
- Ansi x 三石九九一千九百六十六 . USA Standard FORTRAN ( PDF ) . American National Standards Institute . Informally known as FORTRAN 六十六 .
- Ansi x 三石九石一千九百七十八 . American National Standard–Programming Language FORTRAN ( PDF ) . American National Standards Institute . Also known as ISO 一千五百三十九–一千九百八十 , informally known as FORTRAN 七十七 .
- ANSI X 三孵一九八孵一千九百九十二 ( R 一千九百九十七 ) / ISO / IEC 一千五百三十九 : 一千九百九十一 . American National Standard–Programming Language Fortran Extended ( PDF ) . American National Standards Institute / ISO / IEC . Informally known as Fortran 九十 .
- ISO / IEC 一千五百三十九孵一 : 一千九百九十七 ( Final Draft ) . Information technology–Programming languages–Fortran–Part 一 : Base language ( PDF ) . Informally known as Fortran 九十五 . There are a further two parts to this standard . Part 一 has been formally adopted by ANSI .
- ISO / IEC 一千五百三十九孵一 : 兩千空四 . Information technology–Programming languages–Fortran–Part 一 : Base language ( PDF ) . Informally known as Fortran 兩千空三 .
- ISO / IEC 一千五百三十九孵一 : 二千空一十 ( Final Draft ) . Information technology–Programming languages–Fortran–Part 一 : Base language ( PDF ) .
- ISO / IEC 一千五百三十九孵一 : 兩千空一十八 ( Final Draft ) . Information technology–Programming languages–Fortran–Part 一 : Base language ( PDF ) .
有關標準
- Kneis , Wilfried . Draft standard Industrial Real-Time FORTRAN . ACM SIGPLAN Notices . October 一千九百八十一 ,十六( 七 ) : 四十五–六十 . ISSN 三百六十二孵一千三百四十 . S 二 CID 八百六十六曲兩千三百八十一 . doi : 十 . 九十四分之七千八百六十四分之一千一百四十五 . 九十四交七千八百六十八 .
- ISO 八千六百五十一孵一 : 一千九百八十八 Information processing systems–Computer graphics–Graphical Kernel System ( GKS ) language bindings–Part 一 : FORTRAN . Geneva , Switzerland : ISO . 一千九百八十八 .
其他參考材料
- ECMA Standard on FORTRAN ( PDF ) . European Computer Manufacturers Association . April 一千九百六十五 .
- FORTRAN 七十七四配零 Reference Manual ( PDF ) . Sun Microsystems , Inc . 一千九百九十五 .
- FORTRAN Coding Form ( PDF ) . IBM . [二千空一十四抹十一孵十七] .(原始的內容 ( PDF ) 存檔佇八 June 二千空一十五).
- Grace E . Mitchell . The FORTRAN Automatic Coding System for the IBM 七百空四 EDPM : Programmer's Primer ( PDF ) . IBM . 一千九百五十七 .
- IBM System / 三百六十 and System / 三百七十 Fortran IV Language ( PDF ) . IBM . May 一千九百七十四 .
- Michael Goerz . Modern Fortran Reference Card ( PDF ) . 二千空一十四 [二千空一十四抹十二孵十四] .(原始內容存檔 ( PDF ) 佇二千空一十四抹十二孵十四).
外部連結
- ISO / IEC JTC 一 / SC 二十二 / WG 五—the official home of Fortran standards
- Fortran Standards Documents—GFortran standards
- fortran-lang . org ( 二千空二十 ) .
- History of FORTRAN and Fortran II—Computer History Museum
- Valmer Norrod , et al . : A self-study course in FORTRAN programing—Volume I—textbook , Computer Science Corporation El Segundo , California ( April 一千九百七十 ) . NASA ( N 七十五二石五千兩百八十七 ) .
- Valmer Norrod , Sheldom Blecher , and Martha Horton : A self-study course in FORTRAN programing—Volume II—workbook , NASA CR 被一千四百七十八 ( April 一千九百七十 ) , NASA ( N 七十五二追五千兩百八十八 ) .
- An introduction to the Fortran programming language , by Reinhold Bader , Nisarg Patel , Leibniz Supercomputing Centre .
- A coarray tutorial