『壹』 為什麼越來越多的科學家使用python,Ruby而非Fortran
需要強調的一點是, 語言只是工具, 在特定應用場景下滿足特定需要的工具,
脫離應用場景來談不但沒有意義而且還會扣友善度。以下經驗(吐槽)都是針對大規模科學計算的, 個人電腦寫一個下午的代碼,然後跑十分鍾的代碼趁早去用
Python/R/Matlab/Ruby, 上手容易, 功能強大, 網上資源豐富, 絕對是您無悔的選擇。
大家的難用都是從
fortran77那裡感受來的,看過80年代的Fortran77代碼,混亂程度簡直爆表。再看2000年左右的Fortran95代碼,馬馬虎虎,
算是中規中矩的結構化語言。最近看過2010年左右的Fortran2003 code(Fortran的lua介面)
。抽象類,構造函數滿天飛,我擦好多feature都不知道。
所以你們批判的不是Fortran, 而是任性的,非結構化的coding
style。這不過恰巧搞科學的這票人都不太鳥coding standard和coding style,
所以Fortran寫出來的代碼大都比較亂, 這是使用者自身需要學習一個, 跟語言本身關系不大吧。見過師弟師妹們寫的C代碼,
比Fortran版本的還魔幻。
而C和C++裡面也有goto, 也有extern可以不做函數參數參數檢查,倒是沒見你們怎麼噴。Fortran裡面也有interface來聲明函數原型, 倒也沒見你們怎麼用。
比
如elemental, pure, 函數重載, forall, where,
Fortran95新加的功能一大部分是為並行度設計的,其語法也非常偏向高維的大數組操作, 自動並行化(openmp
workshare)用起來簡直比C++爽不知道多少倍。在OpenMP+MPI的場合加上千核量級的並行度,還是有優勢的。還有一種東西叫CAF,
CoArray Fortran, 專門針對大並行度的超級計算機添加了很多新語法,估計知道的人不多。
更不要說Fortran2003/2008支持面向對象。當然在虛函數方面好像比C++缺了一個功能, 其他都是完整復刻的。
所
以真要批判, 請先看看Fortran95/2003/2008在來批判, 哪怕只看目錄或者Feature
List也好。真正值得噴的是Fortran95裡面的mole的mod file的依賴問題, 寫Makefile很麻煩,
還有就是輸入輸出功能太弱, 必須要靠lua,hdf5,netcdf, json這些第三方工具來支撐。
至少說,只要不用implicit,Fortran編譯的時候可以精確地告訴你哪一行有問題。(對,我就是說給C++黨的, 最近做習題被虐的不要不要的)
如
果要用心做好一個代碼, 並行度在幾千CPU核心的量級上, 有核心維護團隊, 用戶在百人千人量級上的話,正確的姿勢是,
Fortran負責運算密集部分, C++/C負責常用邏輯和介面,
python/ruby/lua負責做膠水,負責暴露給不太關心細節的終端用戶。這套東西199幾年就有人在做,
結果到現在大家還在吵哪一個更好的問題。
-----2016-02-07 補充-------
獲悉Fortran2008裡面終
於對變數聲明坑進行了修補, 在2008之前的版本中, 變數只能在函數的開始部分聲明, 實際的聲明語句可能距離使用語句較遠,
同時可能引發臨時變數誤修改的情況, Fortran2008內加入了BLOCK結構, 可以當地生成臨時變數,
並顯式指明生存期,即使在BLOCK內部使用goto強行跳出, 編譯器也會釋放臨時變數,即
mole m
implicit none
contains
subroutine test1(a, b)
integer,intent(in) :: a
integer, intent(out) :: b
....(執行語句)
TMP1 : BLOCK
integer :: temp_var
temp_var = a*b
a = temp_var
END BLOCK TMP1
....(執行語句)
end subroutine test1
end mole m
『貳』 Python作為一門編程語言,學完了python能做什麼工作
Python是一種高級編程語言,因為有很多包,你可以快速開始,很多公司都在使用。在學習Python之後,可能適合的職業主要集中在以下幾個方面:
產品管理器通常需要准備PPT報告各種數據,並且Python數據分析師也可以使用Python很多工作。如今,數據分析師基本上沒有說Python,因為Python內部數據分析太多,熊貓,Numpy,Scikit學習,Matplotlib,Tensorflow .許多數據科學家也在使用Python,所以如果數據分析,那麼有興趣學習,還可以考慮網路的方向探索Python培訓。這也很明顯。現在對Python的需求如此之高,很多人已經開始學習Python,總是被教導,教育培訓也是一個持久的行業。至少有一些編程基礎在Python之後,然後學習一些新興語言,觸摸旁路,並正確做訓練。財務顧問現在處於數字轉型,金融方向本身是一堆數據。這是大量數據。它是很多手工工作,付款和責任,現在,自動化得到改善,對於財務人員的要求也很高,如果你可以在這些數據的基礎上進行一些分析,它也是非常繁榮的做一個好主意,它非常受歡迎。
『叄』 為何Python是數據科學家的最佳選擇
數據科學工作需要用到數學和統計科學的知識,因此選擇數據科學語言時要考
慮其對數值處理、統計分析、矩陣運算等的良好支持。Python中提供了第三方包NumPy和
SciPy,它們很好地提供了這些功能。其次,從事數冊早據科學工作還需要整合各種數據源、
開發數據應用。這些需要語言能支持各種資料庫的連接、不同數據格式文件讀取、與企業
當前的應用整合以及外部數據爬取等功能。Python作為一門高級面向對象編程語言可以完
美完成上述工作。最後,數據科學家還需要結合領域知識完成數據分析、機器學習,最終
形成報告。而利用基於Python的Jupyter Notebook,數據科學家可以進行可重復的數據分
析,快速與團隊分享,編寫分析報告,同時基於Python第三方軟體包Scikit-learn、
Tensorflow、Pytorch和Keras,既可以完成傳統的機器學習應用開發,又可以完成最前沿
的深度學習橋首應用開發。數據科學工作需要用到數學和統計科學的知識,因此選擇數據科學語言時要考
慮其對數值處理、統計分析、矩陣運算等的良好支持。Python中提供了第三方包NumPy和
SciPy,它們很好地提供了這些功能。其次,從事州消雀數據科學工作還需要整合各種數據源、
開發數據應用。這些需要語言能支持各種資料庫的連接、不同數據格式文件讀取、與企業
當前的應用整合以及外部數據爬取等功能。Python作為一門高級面向對象編程語言可以完
美完成上述工作。最後,數據科學家還需要結合領域知識完成數據分析、機器學習,最終
形成報告。而利用基於Python的Jupyter Notebook,數據科學家可以進行可重復的數據分
析,快速與團隊分享,編寫分析報告,同時基於Python第三方軟體包Scikit-learn、
Tensorflow、Pytorch和Keras,既可以完成傳統的機器學習應用開發,又可以完成最前沿
的深度學習應用開發。
『肆』 為什麼越來越多的科學家使用Python,Ruby而非Fortran
Fortran語言作為一種上古語言,其實被淘汰也不為過,單就編程語言來講,估計要被很多語言吊打。
但是啊但是,你看,搞科學研究的,不是每個人都可以做吧?很多科學家並不是特別地偏愛Fortran,只是在很多研究領域,早於計算機的逗伍發明,對科學家而言,很多時候計算是一個很大的瓶頸。
剛好計算機出來宴指沖之後,Fortran整出來,科學家們十分高興地找到了能代替他們完成計算的編程語言,然後就一發不可收拾了,慢慢地就積累了一批優秀的代碼(以及更多你看不到的稀爛的代碼),等老闆帶徒弟搞研究,一來已經有很多大量的Fortran代碼可以用,二來你自己搞個其他語言寫的代碼,老闆表示看不懂可如何是好。所以自然地繼承下來(並順便發揚光大了)。
如果Python和Fortran處在同樣的歷史機遇下,我估計現在很多人都不知道有這么個語言了。
和Fortran語言境遇類似的還有一個叫做COBOL,據說現在還晌殲有代碼運行在商業應用上。