用于數學的 10 個優秀編程語言

2017-12-17 14:26| 發布者: 小貝| 查看: 132347| 評論: 0|來自: codeceo

摘要: 作為一個對數學和編程語言充滿激情的人,誰也不能阻止我分享我總結的10個超棒的用于數學的編程語言。總結的目標在于多樣化,為大家提供廣泛的編程和問題建模方法。編程語言描述摘自它們各自的網站或維基百科頁面,但 ...

作為一個對數學和編程語言充滿激情的人,誰也不能阻止我分享我總結的10個超棒的用于數學的編程語言。

總結的目標在于多樣化,為大家提供廣泛的編程和問題建模方法。

編程語言描述摘自它們各自的網站或維基百科頁面,但里面也加進去了我的一些看法。

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 <#)

寫得比較豪放。

好了,到這里就結束了。當然,還有其他有價值的選擇,歡迎在評論中告訴我們。

相關閱讀