為什麼從事尖端科研的研究人員仍然在使用計算機時代早期發明的語言?

時間 2021-05-31 02:09:15

1樓:科學匠人

一切都是因為成本

把老code改成C++,研究人員要多花錢和時間招熟悉C++的研究人員,要多花錢

研究人員的薪水可能不如碼龍高,但是時間更加寶貴說研究人員懶的,都是外行

還有一句話,搞軟體的人自己常說,如無必要,勿增實體。

有些人說fortran 沒法和cad 結合。無知,cad出現的時候c語言都不知道在哪,當時幾何演算法一定是fortran這種老古董實現的。還扯什麼大資料,就是個統計的事。

當然我猜他指的是不容易呼叫現成的api。只要有c介面,fortran就能呼叫。

本人不是fortran的原教旨主義者,但是這裡這麼多新語言極端主義者。本來科學計算領域就那麼為數不多的幾種語言,就像車間裡不同的工具機一樣各有特色和擅長,非要貶低其它語言來顯出自己的高大上麼?只能表現自己的偏執甚至無知罷了。

2樓:

這個問題背後是計算語言使用者面對需求不同。用C,C++那些所謂行業主流語言的都志在開發面向市場的軟體,又要保持良好的開發效率和成本可控。而用FORTRAN做科研的,不是開發乙個軟體投放市場,而是產出科研成果,向專案投資人負責。

前面有人說行業衰敗或懶,根本是不了解科研需求。以氣候變化為例,需要知道人類活動如何導致增溫,定量評估氣候變化影響,要給出定量資料和政策意見,這是科研最終產品,科研人員精力都在於此。難道把模型用C重寫一邊,預報就能更準?

FORTRAN是傳統,難道要讓學界前輩大牛們放棄多年FORTRAN不用,重新學C,就因為IT很流行?更何況,現在PYTHON也開始在學界流行。現在很多博后招人都要求會PYTHON。

3樓:大熊

很多回答列出了原因/例子,說得也很明了。

但與其說「歷史包袱」,我更傾向說「成本」。因為「包袱」自帶貶義啊! 任何技術都面臨生存週期,現在的新技術就是明天的成熟品,後天可能就成了legacy。

關鍵是系統夠不夠用,換個角度,是否濫到不能忍。

碼農做久了,會發現似乎有許多人「閒」得發慌,折騰各種已經有的系統,從一種語言移植到另一種,或A平台到B平台。個人感受,大部分半途而費。真正有結果的,是有實際用處的工具或產品。

所以這個問題或許可以換個方式問「為什麼那些老(sheng)得(ming)掉(wang)渣(sheng)的語言還可以支援頂尖的科學系統呢?」

4樓:MARTIN CHEN

主要還是因為庫吧。我們專業好多組預設用matlab,也是因為庫比較完善,然後為了用OpenCV,據說NYU有人用matlab重寫了很多api。科研很多時候是怎麼方便怎麼來。

5樓:Belleve

我默默開啟 VASP 的目錄,然後:哦對,對於專業程式設計師來說,改寫這個規模的 Fortran 程式不算困難,問題是用 VASP 的大多數都不會寫程式,你叫他們把這玩意重做一遍?

另外,對「計算時間」的要求不是 1 秒和 5 秒,而是乙個月 vs 五個月。曾經為了批量優化分子結構,從星雲買了 1000 個核算三個月,你們感受一下。

6樓:

歷史因素其實不多了,新的方向新的方法往往C++比Fortran的資源還多,畢竟整個CS群體很少有人用Fortran,而computer graphics,geometry,vision中的很多演算法和computational physics是互通的。

主要原因是科研環境裡多數情況下沒有人全職做軟體工程的工作,c++的威力不能完全發揮。僅僅開發維護軟體對於科研人員來說是不算成果的,而如果僅僅是工程師性質的軟體開發維護,用科研人員的工資是招不到人的。如果某個組能招(得起)乙個全職軟工,很快整個組就都換成C++了(不是說code都讓軟工寫,而是他負責總體架構,科研人員各自負責自己的計算模組)。

7樓:Valerius Sun

未免有些誇大其詞,至少在大氣和海洋modeling的領域,大型model的開發已經逐漸轉向python,而日常的資料處理所用語言五花八門,python,R,matlab,mathematica,IDL等等都很常見,做乙個project同時用三四種語言的也並不少見。對於大部分自然科學工作者來說,爭論各種語言孰優孰劣是個次要問題,有經驗的研究者總能找到解決某一問題最適合的語言。

譬如如果是統計回歸、或者時間序列分析,在能用R的時候肯定沒人會用fortran。在做偏微分方程數值解的時候,也沒有人會去用R。至於data visualization,估計只要稍微會點matlab的都不可能會用fortran去做的。

當然,你如果要操作乙個十萬行乘十萬列的矩陣,還是用fortran編寫核心部分的演算法比較快一點。

8樓:Yongtao Wang

研究機構的軟體/程式最主要的目標是穩定,效率高,而且它的絕大多數編碼人員不是專業的程式設計師,很多是專業領域的研究員。而通用軟體公司的軟體目標是穩定性,維護性,畢竟任何乙個大型的軟體都是幾百、上千人的合作結果,因此必須在語言層面來支援這種協作性要求。

大型軟體公司對軟體工程的要求比演算法更為重視

9樓:湯鴻程

看起來很白痴的理解就是如果你把你生活中現有的數字相關計算,比如你的存摺餘額,換成16進製表示,你會看哭的。

「還是10進製好。」

10樓:火上冰

除了別的答案中講的原因以外。我感覺或許還有以下原因。

一、 語言只是個工具,如同做個手錶,並不是用高效的機器或者是某一方面有突出優勢的工具就一定適合某項工作。手工打造的手錶往往更珍貴。原因一,只選對的。二、

結合自己過去做專案開發和支援的經驗。更新乙個開發工具或者是語言,甚至公升級已經在production生產環境的軟體系統,額外的一點變化,更改,就要付出額外的人力物力金錢,花在裝置測試和各式各樣的事情上。而且背後還有巨大的時間成本或者是隱藏巨大的風險。

捨本逐末,放棄自己本質要做的事情,把精力用在旁枝末節上,這樣的階段我們都會經歷,隨著年日的增長,當我們的工作經驗和自己的能力慢慢上公升的時候,我們或許就有了更加敏銳的眼光把握自己當下最應該抓住的是什麼東西?工作如此,家庭、婚姻、事業、愛情盡皆是如此。呵呵

三、 掌握乙個工具只是最基本的基礎。暫且不論別的基礎性的人的潛質、勤勞和踏實的態度。隨著混跡「江湖」的時日久了,我們或許都會發現,發現問題、分析問題、

解決問題的能力往往更為要緊。記得上學的時候,俺們那個學術碩果累累的老師,對俺們說,武林高手的最高境界是無招勝有招。這道問題似乎是在問「為什麼武林高~~高手仍然在使用一根樹枝、樹葉做暗器甚至徒手進行PK呢?

」 呵呵,兄弟那是內力。

呵呵,略有跑題,希望大家樂呵樂呵。

11樓:

我也用fortran,學的時候不明白怎麼不交C?於是自學了點pascal,結果畢業後根本沒用上,專業上還得用F,因為穩定簡單而且傳統,畢竟語言只是專業研究輔助工具而已。 後來隨著軟體進步,又增加了點python。

12樓:張楊

即便是早期的計算機語言也是不斷進化的,例如FORTRAN的最新版是2008,C語言也在2023年發展到了C11版本。也就是說這些語言的生命力都是旺盛的,與時俱進的。每一種語言在設計的時候都有其針對的領域,解決一定的問題,沒有哪種語言能夠解決所有問題,因此使用各種語言都是有其道理的。

當然,那些不能適應發展的語言已經有很多被淘汰掉了,品種絕不下百種。

13樓:

首先Fortran是專業人士為科學計算設計的語言。其他語言不是(同意上面的觀點,matlab一看就不是專業人士設計的)。所以在科學計算上Fortran更具優勢。

其次Fortran也是在不斷改進的,早已不是上個世紀50年代那個老樣子了。Fortran很早就可以很好的支援平行計算了。

最後程式語言其實自上個世紀50年代初以來沒有什麼太大的技術革命,主要玩的仍然是fortran,lisp,c那一套。所以Fortran並沒有什麼明顯的劣勢。作為以科學計算為目的的語言,並不需要物件導向程式設計。

14樓:

個人看有這麼幾點:

1. 歷史原因,有很多已經用fortran寫就的library,省事兒。

2. 歷史悠久的library因為不斷使用不斷測試,非常穩定,用起來放心。

3. 語言針對數值計算,速度快。運算速度快,開發速度快,好維護。

綜合來看,如果今後不考慮科研以外的工作,fortran用得很爽,大家也沒有換的動力了。

15樓:damon wang

樓上答案很對,主要是歷史問題,已數值分析領域來說,比如早期的包 EIS、LINPACK 及其替代者 LINACK 都是 Fortran 寫的而且久經不衰,不過,C 語言的包也不少,比如 NAG (Numerical Algorithms Group) ,包含 1000+ 個 Fortran、400+個 C、200+個 Fortran 90 程式。主要還是大家覺得能用就行啊……沒多大動力更新啊,你看 Matlab 這麼賺錢,當然就有李特和班格爾特花了約一年半的時間用 C 重寫了以前的 Fortran。

為什麼研究人員總喜歡說在外國期刊發表了多少篇文章,而不說自己給社會帶來了什麼進步?

花間李白 前者好判斷,後者不好界定。你說你的研究給社會帶來進步,誰能證明?乙個專案裡面有多少個行業,專業技術人員在支撐,怎麼評價?沒有單一的指標。 科研嘛,其實就和咱們的國粹京劇差不多,外行看熱鬧,內行看門道。不過呢,其實內行也知道你是在表演,演得好!達到餘音繞梁三日不絕,那是大佬,大家都不覺得你是...

如何看待谷歌研究人員提出的卷積正則化方法 DropBlock ?

peter dropout 隨機丟棄點,像降低解析度 下取樣 dropblock 選中乙個點後,連同周圍一起丟棄,像通過遮擋的方式進行資料增強 之前有過文章通過遮擋或randcrop的資料增強方式,提公升效能,這種提公升和dropblock的提公升應該會有重合的地方,尚未實驗。 問個問題 文章說7x...

歐洲研究人員發現難以解釋的超光速現象,這個訊息可靠嗎?如果屬實,對物理理論可能會產生哪些影響?

不懂超光速怎樣被測量或觀察到的,但要是計算兩個背向運動的物體之間的距離與時間關係,是可以超光速的 然後,我必須非常謹慎。物理學理論需要修改,注意我說的是修改,不是推翻。未來的物理學理論,必須能包容現在的物理學。是將物理學的適用範圍擴大,而不是一巴掌全部拍死。因為物理學是實踐的科學,現在的物理學是經過...