總結的目標在於多樣化,為大家提供廣泛的程式設計和問題建模方法。
程式語言描述摘自它們各自的網站或維基百科頁面,但裡面也加進去了我的一些看法。
1. WOLFRAM語言
Wolfram語言是Mathematica和Wolfram程式設計雲的程式語言。
它是由Wolfram Research開發的一種通用的多正規化程式語言。它被設計得儘可能通用,並且強調符號計算,函數語言程式設計和基於規則的程式設計。
語言非常大,涉及眾多領域,通常較為專業化。
我的看法
這是一種相當好的函式式的基於規則的程式語言,可以非常好地處理符號計算。也就是說,就程式語言而言,我並不覺得它特別優雅。
它的真正價值在於其龐大的多領域標準庫,尤其是對於數學應用程式,幾乎領先於世界上任何其他程式語言。點選檢視演示,很大可能會給你留下深刻印象。
2. MATLAB / GNU OCTAVE
MATLAB(matrix laboratory 矩陣實驗室)是一個多範型數值計算環境和第四代程式語言。
這是由MathWorks開發的一種專有程式語言,MATLAB支援矩陣操作,函式和資料繪圖,演算法的實現,使用者介面的建立以及用其他語言(包括C,C++,Java,Fortran和Python)編寫的程式介面。
我的看法
很難勝任數值計算。對此不妨考慮開源替代實現/克隆GNU Octave。
3. R語言
R是由R Foundation for Statistical Computing支援的用於統計計算和圖形的程式語言和軟體環境。
R語言被統計學家和資料探勘者廣泛用於開發統計軟體和資料分析。
民意調查,資料探勘者調查和學術文獻資料庫研究表明,近年來R的受歡迎程度大幅增加。
4. COQ / GALLINA
Coq是一個互動式的定理證明工具。它允許表達數學斷言,機械地檢查這些斷言的證明,幫助找到形式化的證明,並從其正式規範的建設性證明中提取認證程式。
Coq工作在歸納結構微積分理論的基礎上,歸納結構微積分是結構微積分的一個衍生物。
作為程式語言,Coq實現了一種依賴型別的函數語言程式設計語言,作為邏輯系統,Coq實現了一個更高階的型別理論。
Coq提供了一種名為Gallina的規範語言。用Gallina編寫的程式具有弱化的標準化屬性 ——它們總是終止。
5. PROLOG
Prolog是與人工智慧和計算語言學相關的通用邏輯程式語言。
Prolog的根源是一階邏輯——一種形式邏輯,且與許多其他程式語言不同的是,Prolog是宣告式的。
程式邏輯用關係來表達,用事實和規則來表現。通過對這些關係執行查詢來啟動計算。
6.Haskell
Haskell是一個標準化的,通用的純函數語言程式設計語言,具有非嚴格的語義和強大的靜態型別。Haskell具有型別推斷和惰性計算的型別系統。
我的看法
作為非函式程式設計師最難掌握的語言之一,其學習曲線走得非常艱難。由於沒有副作用及其純粹的功能性使它非常適合建模數學問題。那些從事類別理論和程式語言研究的人會對Haskell特別感興趣。
7. IDRIS
Idris是一種具有相關型別的通用純函式程式語言。型別系統類似於Agda使用的型別系統。
語言支援可與Coq媲美的互動式定理證明,包括策略,即使在定理證明之前,重點仍然放在通用程式設計上。
Idris的其他目標是“充足”效能,易於管理的副作用和支援實施嵌入式領域特定語言。
我的看法
研究型語言。它結合了Haskell和Coq的元素。很有意思。
8. JULIA
Julia是用於技術計算的高階和高效能的動態程式語言,具有使用者熟悉的其他技術計算環境的語法。
它提供了一個複雜的編譯器,分散式並行執行,數值準確性和廣泛的數學函式庫。 Julia的基本庫,主要是用Julia編寫的,它還整合了用於線性代數,隨機數生成,訊號處理和字串處理的成熟和最佳的開源C和Fortran庫。
我的看法
用於科學計算和資料科學非常有前途的程式語言。由於Jupyter專案,Julia也可以用作可執行的膝上型電腦。
9. PYTHON
Python是一種廣泛使用的高階通用解釋型動態程式語言。
其設計理念強調程式碼可讀性,其語法允許程式設計師用比C ++或Java等語言更少的程式碼行來表達概念。
該語言提供了旨在實現小規模和大規模清晰程式的構造。
Python支援多種程式設計範例,包括物件導向,命令式和函數語言程式設計或過程式樣式。它具有動態型別系統和自動記憶體管理,並有一個大而全面的標準庫。
我的看法
從數學和科學的觀點來看,Python有趣的地方在於有大量可用的相關庫可用於這種流行的程式語言(例如,numpy,scipy,scikit-learn,Sage等)。
得益於此豐富的生態系統,你可以輕鬆學習,這對於科學計算來說真的非常棒。而且,由於它很受歡迎,因此示例(和Jupyter notebooks)可以廣泛使用。
10. J
J是一種非常簡潔的陣列程式語言,尤其適用於數學和統計程式設計,特別是在矩陣上執行操作的時候。它也被用於極限程式設計和網路效能分析。
與原來的FP / FL語言一樣,J通過它的隱性程式設計功能支援函式級程式設計(與函數語言程式設計不同)。
我的看法
J,和APL和K一樣,是一種離奇古怪令人費解的語言。起初簡潔難以閱讀,但非常強大。如果你對處理資料操作和分析的新方法感興趣,那麼值得嘗試一下。
下面是一個quicksort的實現——只是為了讓你知道我們在這裡處理什麼。
quicksort = : (($:@(<#[),(=#[),$:@(>#[))({〜?@#))^:(1 <#)
寫得比較豪放。
好了,到這裡就結束了。當然,還有其他有價值的選擇,歡迎在評論中告訴我們。
相關閱讀
評論(0)