Fortran 目前仍然是科學計算領域使用的主要語言嗎?


我比較懷疑。比如Intel的數學庫既有Fortran版本,也有C版本。純數學運算的庫是最容易移植的。

更新:看了其它幾位的回答,我的懷疑消除了。FORTRAN仍然是科學計算的主要語言。這也是因為科學計算在今天的軟體系統里比重不大。按照《Hackers Painters》的說法,數學之於軟體,相當於顏料化學之於繪畫。

最近在寫一個核心是偏微分方程逼近的程序(MKL)。不過方程的輸入和輸出都是用C++編寫的複雜界面。


看情況:

1.小規模代碼fortran多,相對大規模c++多。

2.老代碼fortran多,新代碼c++多。

3.相對大規模的代碼中,陳年軟體包fortran多,很多甚至還是77的風格;代碼量大,有重用代碼需求的計算組,自用代碼c++多。

fortran的優勢是簡單好寫,計算效率也很高,非常適合短小的計算程序。但對於很多大規模科學計算來說,核心部分往往是高強度的矩陣運算,不管用什麼語言都需要高度優化、甚至拿C或者彙編根據體系結構特點來寫。實踐中,這一部分一般都要調lapack一類的庫,因此用C++和FROTRAN都沒有什麼區別。而當代碼量越來越大,重用代碼、多人合作的需求也越來越大的時候,C++就有很多優勢了。


怎麼說呢?這問題就像「40歲以上的人是否占人群中的主體」一樣......

現實情況是新程序用Fortran的越來越少,但是還有相當一批老程序是用Fortran寫的.......

所以,是不是「主流」沒法說,見仁見智吧。


寫在最前面的話:這個答案現在三十多個贊,排名一路起伏不定。我知道有許多人在踩這個答案。對此我只能說:想推著別人進步,實在是一件非常難的事情!


並不是!

在一些小課題組做的小玩意兒上,可能吧。

工業級別的大規模程序,以及斯坦福 mit這種真正在科研跟技術上都走在最前沿的地方,c++ 甚至python占統治檔位。

你們說是的人,自己看一看這個界面下面還有幾個近二十年來開發的程序跟軟體是用fortran寫的。呵呵!

https://www.cfd-online.com/Wiki/Codes#Solvers


匿名用戶的答案中給出了一段代碼,說Fortran的計算時間只有C++的一半,呵呵。我把那段代碼在實現之後編譯運行結果如下(有時間我會在專欄裡面寫一篇文章詳細比較並且討論Fortran與C/C++計算效率的問題,以及怎樣寫程序其運行效率才會比較高。一般來說C/C++要稍好於Fortran,但是還是同一個量級的,不會有本質差別。)

C++代碼

Fortran代碼

編譯選項(優化級別都為O3):

運行結果:

這套代碼邏輯是匿名用戶提供的,不是我的。經評論區提醒,加一個Fortran的考慮列優先的情況吧:

結果:

上圖顯示2000x2000矩陣乘法運算C++耗時11.68秒,匿名用戶Fortran邏輯耗時14.092秒,優化後耗時11.95秒,並無顯著差別。(剛剛跑了c++裡面boost庫裡面ublas的axby_prod的結果,2000x2000矩陣相乘只要4秒鐘,比自己手寫的C++與FORTRAN的代碼快兩到三倍。我只能說,目前高端C++庫的發展速度是FORTRAN社區無法想像的。

有人說intel編譯器會表現得更加好的,在這個問題上試了下intel編譯器,是比gnu的編譯器好,但是fortran用時1.141426秒,c++用時0.5秒,c++更快。這裡fortran代碼是考慮了列優先的代碼。不過我在大規模程序上面的運行結果表明intel編譯器並沒有比gnu編譯器有明顯改善。


既然有人跳出來在評論區談這個問題,那我就重重地多懟幾句。平生最看不慣的就是一些人對自己不懂的東西橫加評論,比如看不慣一些人持中華文化在台灣之論,這些人既不懂中華文化,也不懂台灣;還看不慣一些果粉,這些人既不懂國民黨也不懂共產黨。很可惜,那些提起Fortran就說什麼計算效率高的人就屬於我看不慣的。這些人既不懂Fortran也不懂C++,比如評論區裡面有人講C++是一個本科生就能懂的東西,你不如去看看這兩個問題下面的答案(為什麼說用了10年C++的程序員也不敢說自己精通C++?,精通 C++ 是一種怎樣的體驗?)。你們要是說Fortran易學易上手,那我承認這是它的優點,我也認為這是它僅有的優點。可是你們說它的優點是計算效率高,那就純屬放屁。與同為編譯型語言的C/C++相比,Fortran在計算效率上基本差不多。當然,肯定比Python這種解釋型語言高多了。

Fortran我學過。以前讀研的時候剛進課題組,組裡的結構化網格CFD程序用的是Fortran,讓我學。學完之後覺得其能力比起C++來說不知道弱到哪裡去了,抗拒不用,自己花三個月時間用C++實現了一套同樣的代碼,計算效率基本一樣(原程序開發了三年,開發效率這個不比較,畢竟我當時有參照,沒具體參照代碼,但是知道大概框架吧)。後來組裡來了一個博士期間做CFD的博士後,他博士期間開發的結構網格CFD程序(也是Fortran,基礎功能跟我們差不多,只是他應用的領域不一樣而已)也跟我們的計算效率基本一致。再後來,組裡一個比我低一級的研究生,對CFD也感興趣,想寫程序,讓他用我的C++代碼,不用,非要自己寫,還聽信了網上說Fortran效率高的謠言,還想做得跟課題組原來的程序不一樣,去用Fortran裡面新的面向對象的那一套東西去搞,最後搞出來計算效率反而比我的C++程序,課題組原來的Fortran程序,博士後的程序都慢兩三倍。呵呵。況且,C/C++與Fortran在計算效率上比較也不是我一個比過,不信自己看同一個問題下的這個答案:james Zhang:Fortran 目前仍然是科學計算領域使用的主要語言嗎?。

我再說一次:但凡說Fortran比C++除了容易上手之外還有什麼別的優勢的人都是不怎樣熟悉C++的,反而承認C++是主流、Fortran已經落伍而且有顯著缺陷的一般都是兩者都比較了解的。

你們Fortran的擁護者要明白,做數值研究方面的組,但凡是跟工業界保持密切聯繫的,沒有什麼人還在用Fortran的。可能有些做純演算法研究的、偏數學方向的人可能在用Fortran,比如我知道的CFD高階演算法裡面舒其望、邱建賢他們數學專業出身的,演算法上做得特別好,但是課題組一般只用Fortran。那是因為他們只用自己新發展的演算法去做一做什麼一維激波管、二維前台階繞流這種問題,研究下演算法的性質而已,他們自己的程序是沒有什麼人用的,剩下的向工程上的擴展他們是留給工程界完成的。但是像斯坦福、帝國理工學院這種,演算法上厲害,程序開發上也很厲害。斯坦福的SU2,HiFiLES都是用C++寫的,帝國理工的PyFR是用Python寫的,開源CFD界占統治地位的OpenFOAM也是C++寫的,這些都是新開發的用了前沿演算法的CFD程序,評論區有人講Python是膠水語言,就那麼看不起膠水語言啊?一般數值計算程序 中也就10%不到的代碼佔據了90%以上的計算量,這部分可以在Python中調用C/C++來完成,剩下的腳本性的代碼用Python開發效率不知道比C/C++高到哪裡去了,何況Fortran?

為什麼還有這麼一些人鼓吹Fortran呢?目光短淺罷了!無非是自己課題組積累的程序不想重構,導師的眼光還停留在自己讀博士的那會兒,又不想深入了解新技術,又招不到本科的時候就已經很會寫程序的學生,就算招到了有些老師也固執地拒絕學生的想法,繼續用著課題組老掉牙的代碼。呵呵。

評論中有人講搞計算核心是演算法,而不是語言。問題不能這樣講。依我的觀察,一般在工具上能夠跟上時代的人,演算法上也能跟上時代。遺留下來的Fortran代碼中沒有多少東西是先進的、前沿的。不滿足於落後的Fortran工具的人會自動去追尋更加好用的編程工具,一般來說他當然也會主動去追尋更加先進的演算法。由於最近的一些大型、先進的開源代碼中本身就使用了最近提出的一些模型、方法,你在C++/Python社區中獲得的技術與演算法的視野當然是Fortran社區比不了的。

至於我自己,一向在用C++。目前我自己實現了一套泛型的數值分析函數庫,可以原生支持大規模並行稀疏矩陣與並行的向量的存儲與運算,用起來不知道簡單到哪裡去了。比如

// 一個並行向量,其元素為固定大小為5的一個double類型的小數組,為什麼固定5啊,因為3維Euler/NS方程的未知數就是5個啊(rho, rho u, rho v, rho w, rho E),那為什麼用固定大小的VECTOR,這又是另外一個話題了,總的來說是為了避免效率上的損失....
MPI_vector& &> dof;
// ...這裡經過初始化什麼的之後
dof.local()[1] [0] = 1.0;
// 這句是將當前CPU(那個local()函數就是當前cpu上的向量)中的下標為1的單元上的密度賦為1.0.這裡最後取密度用了下標,這樣子代碼含義不明晰,我實際上不是這樣做的,這裡不想展開太多
// 在每一個CPU上對向量各元素的操作結束之後執行
dof.update();
// 就完成了各個CPU上的數據通信。

又比如,對於非結構網格,我要在許多並行的CPU上遍歷每一個單元

for (auto const ce : mesh().cells().local())
{
// ce是一個單元(cell)對象,這樣我在這個循環體內調用ce的成員函數就可以獲得我需要的單元信息
// 我要遍歷這個單元的每一個面(face),怎麼辦呢?很簡單
for (auto const fc : faces_of(ce))
{
// 現在,fc就代表了ce的第一個面(face),我在循環體內就可以操作這個面了
}
}

這麼寫起來不知道有多爽,我一套完整的泛型的大規模並行數值分析函數庫(支持固定大小的小向量、矩陣;可變大小的向量、稠密矩陣;大規模並行環境下的稀疏矩陣、向量;線性代數方程組的求解、非線性方程組求解;非線性方程組求解;常微分方程組顯、隱式高階精度地求解)一萬行不到。在它基礎上實現的一套支持並行環境下高階曲線/曲面非結構網格的拓撲庫不過6K行代碼。在前兩者基礎上實現的有限體積法的Euler/NS/RANS/DES程序就特么更加簡單了,不過5K行左右,其中還有1k左右在做控制參數的讀取什麼的。我再寫一個間斷有限元方法的程序,就更加簡單了,無非計算一個每一個單元內一些小的矩陣的值(這些矩陣的類型也都在數值分析函數庫裡面定義好了),計算一下形成的離散方程組的Jacobian矩陣與右端(rhs)值,網格讀取以及剩下的什麼時間推進、稀疏線性代數方程組的求解,並行化什麼完全不用操心。呵呵,不知道簡單到哪裡去了。

評論裡面有人認為我在秀優越那是你的想法,不是我的想法。我無非是想讓你們能夠跟得上時代的步伐而已。承認自己的落後然後努力跟上時代是一件很難的事情么?

最後秀一下自己的程序用DES算的圓柱繞流


目前在做dynamic economics的PhD。 Dynamics Economics model我基本上還是用fortran. 我自己曾經在某著名IT公司寫過10幾萬行的C++代碼。雖然對C++有感情,但是效率決定一切,不僅僅是執行效率,也包括編程效率。矩陣運算fortran是原生支持啊。沒辦法。程序易讀而且短。不是什麼東西都用函數就是好的。C++裡面即使是矩陣加法運算也必須用函數。想一想函數調用是有開銷的,100次可能不算什麼1億次那就是大問題。

下面引用的是馬里蘭大學的S. Boragan Aruoba 和沃頓商學院的 Jes˙s Fern·ndez-Villaverdez的一篇論文(A Comparison of
Programming Languages
in Economics)的數據,即使用各種計算機語言求解經典recursive經濟學模型的平均相對時間。我只給結果好了:

在intel平台下,(我只使用intel CPU的PC或者HPC),Fortran基本上在流行的兩款OS上是目前速度最快的語言之一!基本上fortran跟C一樣快。但就數學模型編程而言的開發速度Fortran優勢明顯。

註: 文中寫C++只是因為編譯器的名字帶C++而已,作者代碼只用到了C,並未使用任何C++的特性例如object(參見3.1節第一段最後四句話)。

結論:fortran不會消亡,只會更進步。當然想做碼工的就別學了。fortran的核心是代碼背後的數學模型而C++的背後是你自己。這就是區別!


是的,科學計算方面現在Fortran還是主要語言。Fortran至今能在數值計算方面並不是單純因為有長期積累下來的庫。而且確實非常適合數值計算,寫起來非常舒服。intel的MKL雖然有Fortran版也有C/C++版,但是底層的BLAS,LinPack還是用Fortran寫的,然後再用C封裝一下。現在量子化學方面比較流行的Vasp,gaussian,Abinit,PWscf等等都是清一色用Fortran 寫的。而且Fortran90後也增加了許多功能的,C/C++能有的功能或者特長Fortran也基本都有的。


是的. 大量長期積累下來的庫決定了這一點. 況且 FORTRAN 的確是最適合於純科學計算的


原因:

1.簡單高效,例如函數直接傳址,變數不強制聲明,雖然不安全,但是對於不是專業編程的來說,非常容易理解,寫起來、調試起來也很快。

2.合適科學計算。例如多維數組非常方便使用,在c/c++里,建個2維數組簡直就是噩夢。又比如矩陣可以直接相乘,自帶複數結構。更不用說有無數的像blas這樣的庫存在。

3.歷史,畢竟這麼多的原有程序在那兒了,你加入一個計算化學實驗室,實驗室師兄傳給你的代碼就是fortran的,都是人家好幾年的成果,你也不可能有精力改成c,就算改成了也只能做一樣的事情,也發不了paper,費力不討好對不對?

4.效率,不能說有多好,但是和c/c++比,不相上下。

5.通用性,module使用還是很方便的,另外可以和c/c++混合編程。


以我們自己的經驗來比較一下吧

1,fortran確實是最適合做科學計算的,效率高,較為靈活,同時加上使用的傳統,成為最主流的語言

2,對我們關注純粹的計算用途時,C/C++會讓我們覺得有點麻煩,有很多程序結構等非計算問題困擾我們

3,matlab非常的好用,也很喜歡用,直觀簡單,但有時候在計算大數據量的時候效率太低,但在效率允許的時候會優先選擇它


從我們現在的研究工作中,可以看出Fortran依然是科學計算的主流應用語言。個人認為主要原因有以下幾點:

1、Fortran的語言習慣相對鬆散隨便,用戶不需了解太多編程的規定就能夠上手。但這樣也會造成不同的人寫出的程序風格差別很大。(我這兩天翻譯幾位師兄的Fortran程序時對這個感觸很深。)

2、Fortan有比較完善的科學計算的庫,以及現成的各種演算法的實現。

3、最重要的是前人積累的各種計算的程序,最方便的使用方法還是直接用Fortran接著編。(如我前面提到,想要看懂別人的程序是太費勁的一件事了。)


Python的Numpy庫和SciPy-Stack的一部分其實就是在穩定運行了三四十年的Fortran代碼上搞的(因為這些玩意不太可能錯)。所以你可以認為他仍然是一個mainstream。另一部分Numpy庫是C和C++造的。

這玩意的優勢:舊代碼多(你看Julia就火不起來),準確,而且其實Fortran速度不錯。


從現代計算機體系結構角度談,我無法想像有什麼理由,讓極限優化下的C++在性能上不如Fortran。當然,開發成本和歷史積澱來說,閉源的遺產Fortran系統比C++快是完全可能的。

另外一提,科學計算,大數據計算,高性能計算未必是同一回事,我感覺有些答案中的爭論怕是在關公戰秦瓊。

即便同樣是科技領域,搞CFD的,搞天體物理的和搞遙感的,用的語言也不一定一樣。有的領域計算量非常龐大,用Fortran改寫C代碼,性能增長10%,立刻就能省一大筆錢。另一些領域數據龐大,但未必要追求極限的性能,比如遙感所可能更新一些衛星數據,每周都能新增幾個TB,大家用的卻是matlab/idl。有的領域是算偏微分方程,另一些領域搞得卻是圖像處理,化學生物領域用的python,金融領域用的R和SAS,如何同日而語?本科時代聽說過,隔壁空間物理所的有些組,計算太陽活動規律都開始動用機器學習了,不知道fortran對機器學習領域有何支持?

只談我大學時代的見聞的話,身邊Fortran77,matlab,C/C++,IDL,什麼都有,很多時候祖產代碼牛逼未必是由於他是什麼語言寫的,而是長年累月的優化積累帶來的高效和耐用。套用一個句式,「你們看市面上主流那些(衛星影像處理)系統,哪個跑的比envi+IDL快了,IDL仍是行業主導的語言,不是你們C++/fortran能比的」。


科學研究有幾種,做數值計算的喜歡用Fortran.研究演算法的喜歡用matlab,mathemetic做試驗,matlab上手快,然後用c/c++發布演算法。

目前數值計算也有用cuda c在GPU上執行,主要為了加速演算法


同意樓上的看法,數值計算用Fortran很大一部分原因是歷史遺留,老一輩的研究人員都是用Fortran的,但是我們這一代(研究生在讀)根據我的觀察,基本上是用C/C++或者IDL,matlab等等。現在對於程序的可讀性要求比以前高了。


在計算流體力學研究領域,Fortran目前勉強還能算主流,但很快就可能不是了。這幾年雨後春筍般冒出的一大堆花里胡哨的solver沒一個是Fortran寫的。因為傳統的結構網格求解器已經成熟,沒有重複造輪子的必要。而相對前沿的高階格式、有限元方向的軟體開發C++有壓倒性的數量優勢。但是C++ solver家族在運行效率上還有很長的路要走。目前以Fortran為主的結構網格求解器的運行效率幾乎是單方面吊打非結構求解器,簡單來說就是「一個能打的都沒有」。以上是業界現狀。

說完業界現狀,這個問題基本也算答完了。但是問這個問題的人想知道的東西顯然不止上面這點。就像關於vim和emacs的討論最終都會變成引戰帖,科學計算領域c++黨和Fortran黨的互掐也是由來已久。討論的內容最終會脫離話題本身,甚至到人身攻擊的程度。Fortran黨在這個爭論中一般特別吃虧,因為:

1.Fortran的缺點很明顯,幾乎每個寫Fortran的人都有被Fortran坑或者被前人坑的經歷。而Fortran在的優點卻不是很容易說清。運行效率高很多時候並不是那麼一目了然,在優化方面c++的上限和Fortran是一樣的,也就是說,Fortran跑的快的程序,c++幾乎都可以寫出效率差不多的程序。

2.Fortran黨多數的編程經驗要小於C++黨。Fortran的開發效率確實低,多數Fortran黨手中都有著祖傳的老代碼,這意味著Fortran黨的日常工作基本以函數級的改動和調試為主。而C++黨很容易對現有的C++代碼做更激進的改動,甚至重頭造輪子。所以,按照程序員「talk is cheap,show me the code」的優良傳統,C++黨一般會比Fortran黨更有心理優勢。

3.Fortran黨圈子小,高手少,網上的學習資料少,尤其是從新手到高手進階的資料少。而C++黨的大本營根本不在科學計算這邊,可以說是同志滿天下。很容易獲得從基礎到進階到精通的全部資料,還有在社區得到老手的指導。

前面 @雲天明 的回答很有意思,他基本上完全體現了C++黨對Fortran黨的上述心理優勢,甚至說出了一些行家看來很可笑的言論,比如:

們要是說Fortran易學易上手,那我承認這是它的優點,我也認為這是它僅有的優點。可是你們說它的優點是計算效率高,那就純屬放屁。

Fortran有再多缺點,數值計算,尤其是大規模數組的數值計算可是其拿手本事,沒理由在這上面被C++給爆了。記得當初我在寫計算代碼是用c++還是用Fortran的選擇上面並沒猶豫太久,就是以我那可憐的編程水平分別用c和Fortran寫了個三重耿直for循環求兩個2000x2000數組的矩陣乘。結果跑下來c版本的用時4.8秒,Fortran版本的用時2.3秒(只統計三重循環主體時間)。若用mkl庫,Fortran的也比c的略快一些。

這是C代碼:

time_start = clock();
for(i=0;i&

這是Fortran代碼(代碼塊居然不支持Fortran語法,果然藥丸):

call system_clock(time_start)
do i=1,size
do j=1,size
c(i,j)=0
do k=1,size
c(i,j)=c(i,j)+a(i,k)*b(k,j)
end do
end do
end do
!原生函數c=matmul(a,b)速度更快
call system_clock(time_end)
write(*,*) ((endtime-starttime)/10000.)

基本上,對於數值計算領域的特定問題的特定演算法,Fortran能很容易逼近其計算效率的理論極限,C++若要達到相同的計算效率,必然要捨棄很多特性,去使用近c的寫法或者說近Fortran的寫法。說Fortran效率不高,那是民科。如果同樣演算法,Fortran實現比C++的還慢,那一定是寫Fortran的人寫出了特別蠢的代碼。你師弟寫出慢兩三倍的代碼絕不是Fortran的鍋。

這位答主舉的例子,自己寫的C++求解器和課題組原有求解器運行效率差不多。這很容易理解,因為你是照著課題組的代碼重構,自然能無意識地避免很多C++的低效寫法。如果答主當初是本著炫技心理多用一些C++的特性,可能結果就完全是另一個故事了。

你們Fortran的擁護者要明白,做數值研究方面的組,但凡是跟工業界保持密切聯繫的,沒有什麼人還在用Fortran的。

這個。。。我建議這位答主去看一下歷年的DPW(Drag Prediction Workshop) summary,去看看什麼才是真正的工業界現狀。工業界的主流求解器多數都是閉源的,或者限定範圍開源的。目前開源求解器,有幾個能稱得上是工業界代碼?這不正好,美國有個求解器CFL3D,不是開源了么?(NASA真是好人啊!)你可以去試試,同樣的網格量,真正的工業界代碼能跑多快。

nasa/CFL3D


最起碼在大氣科學方面,FORTRAN是我們十分重視的必修課,每個人都要掌握,在做論文時也要用,而c語言只是選修…


科學計算是一個很大的領域,並且裡面的人們也具有不同的背景。據我所知,在計算化學,部分計算物理(第一性原理計算,部分分子動力學計算等)這一塊,Fortran的應用大大超過其他語言。當然,近幾年也有很多人嘗試使用C,C++等,並出現了一些使用這些語言的優秀軟體包,但至少現在還不是主流。


彙編語言是當今最優秀的科學計算語言。trust me。

最早的各個領域的科學家,都使用彙編語言進行科學計算。彙編語言是科學計算的祖先,歷史上大量的科學計算程序都是由彙編語言完成的,本身就擁有了適合科學計算的優秀基因。而且彙編擁有簡潔的語法,和極高的編譯運行效率,同時兼顧大量靈活的語法和結構。而且彙編肯定是世界上最通用的編程語言。

我們實驗室都用彙編語言完成科學計算任務,我的同行同事們也都寫彙編。什麼C/Java/C++/Python/Matlab實在是弱爆了,我從來沒聽有人用過他們完成科學計算。現在小孩兒太浮躁,什麼語言新潮就玩什麼,但有哪些真正的重要性成果是由這些語言實現的?反正我是沒聽說過。真正的學術界公認語言還是彙編。這是經歷了歷史考驗的。

----

好啦好啦,我好好答。

當然不是。

當然要看你如何定義「科學計算」這個領域了。要是你把「科學計算」狹隘地定義為只有他自己的實驗室傳承下來的程序,承接師兄和導師們的任務,那Fortran對於他來說就是編程世界的全部,是佔有率100%的絕對主流語言。

但是如果你試著了解過其他人的工作,把「科學計算」的概念擴大到金融、工程、計算機和這個世界的各個領域,你會發現,C,C++,Java,Python,Matlab,R都在各自的小領域裡綻放,這是個美妙的豐富多彩的世界。

說到底,眼界有多高遠,世界就有多精彩。

可是有的人總是閉上眼睛,「但是這跟我有什麼關係?」


對於CFD領域而言,感覺C/C++的程序越來越多了吧。前些年Stanford的CTR做普惠發動機的全流場模擬時用了三個軟體:一款LES求解器,一款RANS求解器,一款link,全都是基於C/C++的求解器。作為湍流以及CFD的帶頭大哥龍頭老大,CTR的選擇應該一定程度上代表了這個行業的走勢了吧。

CTR現在很愛用的CharLES就是基於C++的基於非機構化網格的可壓縮湍流LES求解器


是的,但是 FORTRAN 在科學計算領域的壟斷地位已經風光不再。隨著計算機科學的發展,越來越多的程序員開始投身科學計算領域,C/C++,和 Python 已經得到廣泛應用。作為一門面向科學計算的現代編程語言,Julia 也在蓬勃發展中。

然而,FORTRAN 的發展並沒有完全停滯。最新的穩定版本 FORTRAN 2008 已經具備足夠的面向對象編程能力,其更新版本 FORTRAN 2015 預計將於 2018 年發布。仍然有大量的科學計算工作者使用 FORTRAN。以有限元求解器的開發為例,典型代表 FEAP 仍在開發中,最新版本中已經加入 Isogeometric analysis 求解功能。而 FEMPAR 作為一個大量使用面向對象 FORTRAN 的並行有限元求解器,也在積極開發中。參見 https://link.springer.com/article/10.1007/s11831-017-9244-1.


推薦閱讀:

寫kinetic Monte Carlo模擬程序用什麼語言合適?

TAG:編程語言 | Fortran | 工程學 | 科學計算 |