搞數值計算的,julia, OCamal, Python怎麼選?
01-15
對於fortran和C/C++比較熟悉了。覺得需要掌握一個腳本語言。對函數式編程有點興趣,不知道這個對於CFD這類數值計算來說有多大意義?
Julia比Python快不止一點,和C速度差不了太多,如果追求速度又想要Matlab之類的快速測試演算法的能力,可以用Julia。不過Julia的OOP不是類似於C++的OOP,不知道未來會不會改進一下。
如果不太關心速度,那肯定Python比較方便。Python可以參考的內容太多了,有時候copy別人的代碼就可以了。。
Julia和Python都可以用wrapper也就是你可以頂層用Julia,Python,底層用c++,或者petsc什麼的。
學OCamel吧,速度比Python強了不是一星半點,以後還可以去面Jane Street
如果是自己寫代碼做數值計算的話 我建議採用python + C++ 實現。julia版本貌似還沒到1.0。可能性能,甚至語法都不太穩定,相關庫也不多。OCamal不太了解。 python用於快速編程,而且語言成熟相關庫十分豐富,C++用於效率優化。實際上C部分可能根本不用自己寫。有許多C寫的求解包都有python介面。如PETSc。如果性能要求較高可以考慮使用MPI的python介面,也是十分簡單易用的。如果性能要求特別高的話整個求解器還使用C++實現吧…python可以前處理啥的…
必須python可以很好兼容fortran 做混編, f2py 是不錯的工具。 大型矩陣計算部分fortran仍 不可替代。
python。julia可以copy paste的代碼太少(逃)
用過Fortran,C,matlab,python寫過FDM,FEM,SEM。。
我覺得類似於python之類的語言在CFD上的意義主要在於演算法的快速實現,也就是說在學習演算法的過程中用這類語言快速實現某種演算法,並學習某個演算法的要點。我覺得實際過程中CFD的計算量的原因,Fortran,C,C++都能用MPI協議來實現並行計算編程。
我在學習的時候,覺得寫的最開心的是用Matlab來寫。在CFD裡面矩陣運算很多,說實話不是很喜歡python 裡面的numpy帶的矩陣運算。(我同學會自己寫個class做矩陣運算。。。)。不過,對於提問人這樣熟練使用Fortran,C,C++的人來說,應該不是個問題。不過我們用這類語言不就是想快一點嘛。
我個人的選擇是首推Matlab。然後就推薦Python。我在上課的時候,涉及到CFD的課,一半用的Matlab,一半用的Python。都寫的非常快。數據處理也很方便。
不知道題主是具體做什麼的,如果是二次開發之類的,應該從兼容性的方向來考慮吧。如果像我一樣是學生的話,問老師吧。推薦閱讀: