十大应用在数学的计算机语言
作為一位在計(jì)算機(jī)編程和數(shù)學(xué)兩大領(lǐng)域都十分感興趣的研究員,我希望借這篇文章和大家一起分享在數(shù)學(xué)研究當(dāng)中,十大我最喜歡的編程語(yǔ)言。
我這么做是為了給其他研究者提供更多的選擇,并提供更多建立模型的方法。這些語(yǔ)言的介紹直接來(lái)源于他們各自的官方網(wǎng)站簡(jiǎn)介或維基百科,在字里行間當(dāng)中,我也把個(gè)人的看法穿插其中。
1.?WOLFRAM LANGUAGE?
???
Wolfram語(yǔ)言是Mathematica和Wolfram Programming Cloud中使用的編程語(yǔ)言。它是由Wolfram Research公司開(kāi)發(fā)的一種綜合性多模態(tài)編程語(yǔ)言,主要用于符號(hào)計(jì)算、函數(shù)式編程和規(guī)則型編程。在上述領(lǐng)域中,它自身設(shè)計(jì)使得它可以得到最大程度的廣泛使用。
這種語(yǔ)言有許多使用場(chǎng)景,并且時(shí)常是非常專業(yè)化的。
我的看法
這是一種下降泛函、規(guī)則型的編程語(yǔ)言,他在處理符號(hào)計(jì)算上非常有優(yōu)勢(shì)。盡管如此,我覺(jué)得和Go語(yǔ)言比較起來(lái),Wolframe的使用并不簡(jiǎn)潔。
它真正的價(jià)值在于它龐大的多領(lǐng)域標(biāo)準(zhǔn)庫(kù)(特別是數(shù)學(xué)應(yīng)用),這幾乎比世界上任何其他編程語(yǔ)言都領(lǐng)先很多年。看過(guò)他們的演示程序以后,這門(mén)語(yǔ)言的魅力會(huì)讓你神魂顛倒。2. MATLAB / GNU OCTAVE
MATLAB(矩陣實(shí)驗(yàn)室)是由MathWorks公司出品的一門(mén)多模態(tài)數(shù)值計(jì)算運(yùn)行環(huán)境,被認(rèn)為是第四代編程語(yǔ)言。它可以進(jìn)行矩陣運(yùn)算、畫(huà)出函數(shù)和數(shù)據(jù)圖像、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、提供接口以便和其他編程語(yǔ)言的程序(包括C, C++, Java, Fortran和Python)進(jìn)行交互。我的看法
它在數(shù)值計(jì)算方面處于霸主的地位。其開(kāi)源版本——GNU Octave也是如此。3. RR編程語(yǔ)言為統(tǒng)計(jì)計(jì)算和圖像處理提供了軟件環(huán)境,這個(gè)軟件由?the R Foundation for Statistical Computing提供技術(shù)支持。R語(yǔ)言主要使用者是統(tǒng)計(jì)學(xué)家和數(shù)據(jù)開(kāi)發(fā)者,廣泛用于統(tǒng)計(jì)軟件開(kāi)發(fā)和數(shù)據(jù)挖掘分析。
對(duì)數(shù)據(jù)挖掘開(kāi)發(fā)者的調(diào)查和學(xué)術(shù)文獻(xiàn)數(shù)據(jù)庫(kù)調(diào)查中發(fā)現(xiàn),近幾年來(lái),R語(yǔ)言受到了越來(lái)越多的關(guān)注。
4. COQ / GALLINA
Coq是一款交互式定理證明軟件。它允許使用數(shù)學(xué)符號(hào)和命題的形式進(jìn)行邏輯演繹,對(duì)推演驗(yàn)證猜想的推理過(guò)程進(jìn)行模式化處理,幫助人們找到比較合情合理的證明方法。然后,通過(guò)規(guī)范的格式說(shuō)明中進(jìn)行嚴(yán)格證明,最后建立起一個(gè)認(rèn)證程序。
Coq在構(gòu)建算子的衍生物——?dú)w納構(gòu)建算子理論的基礎(chǔ)上運(yùn)行程序。
如果我們要把它當(dāng)做是一種編程語(yǔ)言的話,Coq實(shí)現(xiàn)了一種依賴類型的函數(shù)式編程語(yǔ)言;作為邏輯系統(tǒng),它實(shí)現(xiàn)了高階類型理論。
Coq提供了一種名為Gallina的范式語(yǔ)言。用Gallina編寫(xiě)的程序具有弱規(guī)范化性質(zhì)——讓程序最終運(yùn)行結(jié)束,不會(huì)陷入死循環(huán)。
5. PROLOG
Prolog是一種與人工智能和計(jì)算語(yǔ)言學(xué)相結(jié)合的通用邏輯編程語(yǔ)言。Prolog扎根于一階邏輯(一種形式邏輯)。與其他編程語(yǔ)言的不同之處在于,Prolog是定義式語(yǔ)言。
Prolog的程序邏輯用關(guān)系描述,用事實(shí)和規(guī)則表示。它的運(yùn)行方式是進(jìn)行查詢的這些關(guān)系的內(nèi)在聯(lián)系來(lái)決定的。
6. HASKELL
Haskell是一種標(biāo)準(zhǔn)化,通用純函數(shù)式編程語(yǔ)言。它有非限定性語(yǔ)義和強(qiáng)靜態(tài)類型。Haskell的特色是擁有一個(gè)類型推斷和延后計(jì)算的類型系統(tǒng)。
我的看法
對(duì)于使用非函數(shù)式編程的程序員來(lái)說(shuō),它是最難懂的語(yǔ)言之一.為了能熟練使用這門(mén)語(yǔ)言,程序員的學(xué)習(xí)曲線會(huì)非常陡。但這同時(shí)也是非常值得的。因?yàn)樗臒o(wú)任何其他影響。正因?yàn)樗屑兒瘮?shù)屬性,所以它十分適合用來(lái)對(duì)數(shù)學(xué)問(wèn)題進(jìn)行分析并建立模型。而對(duì)于那些從事范疇理論和做編程語(yǔ)言研究的人來(lái)說(shuō),它有極強(qiáng)的吸引力。
7. IDRIS
Idris是一種擁有依賴類型的通用純函數(shù)式編程語(yǔ)言。它的類型系統(tǒng)與Agda的類似。
它支持交互式定理和策略的證明,可以與Cop相媲美。定理證明開(kāi)始之前,我們就可以將重點(diǎn)放在通用編程上。
Idris的其他目標(biāo)是“充分”性能,它的副作用也容易得到控制,并且他還支持在特別針對(duì)于嵌入式領(lǐng)域中應(yīng)用語(yǔ)言的實(shí)現(xiàn)。
我的看法作為一種研究型語(yǔ)言,它結(jié)合了Haskell和Coq的特性。是很有意思的。
?
8. JULIA
ulia是一種用于技術(shù)計(jì)算的高水平、高性能的動(dòng)態(tài)編程語(yǔ)言,對(duì)于其他技術(shù)計(jì)算環(huán)境的用戶來(lái)說(shuō),它的語(yǔ)法讓初學(xué)者很容易上手。它提供了復(fù)雜的編譯器、分布式并行處理、高數(shù)值精度和一個(gè)可擴(kuò)展的數(shù)學(xué)函數(shù)庫(kù)。Julia的基礎(chǔ)函數(shù)庫(kù)大多數(shù)由官方維護(hù)人員編寫(xiě),同時(shí),它也集成了一些C和FORTRAN中開(kāi)源成熟、性能良好的庫(kù)來(lái)處理線性代數(shù)、隨機(jī)數(shù)產(chǎn)生和字符串處理等問(wèn)題。
我的看法
它是一種非常有前景的科學(xué)計(jì)算和數(shù)據(jù)科學(xué)語(yǔ)言。由于Jupyter項(xiàng)目,Julia也可以用于分享代碼,并和他人一起協(xié)作完成項(xiàng)目。9. PYTHON
Python是一種被廣泛使用的高級(jí)、通用、解釋型動(dòng)態(tài)編程語(yǔ)言。它的設(shè)計(jì)理念是要強(qiáng)調(diào)代碼的可讀性,其變量系統(tǒng)是弱類型的,這樣的特性讓程序員用比C或Java等語(yǔ)言更少的代碼行來(lái)實(shí)現(xiàn)自身需求。
該語(yǔ)言提供了一種旨在實(shí)現(xiàn)各種規(guī)模程序中都能清晰展示程序架構(gòu)的方法。
Python支持多種編程范式,包括面向?qū)ο蟆⒚钍胶秃瘮?shù)式編程或過(guò)程式的風(fēng)格。它具有動(dòng)態(tài)類型系統(tǒng)和自動(dòng)內(nèi)存管理功能,并有一個(gè)龐大而詳盡的標(biāo)準(zhǔn)庫(kù)。
我的看法從數(shù)學(xué)和科學(xué)的角度來(lái)看,Python之所以有趣,是因?yàn)樗写罅康南嚓P(guān)文庫(kù)可供這種流行的編程語(yǔ)言使用(例如, numpy, scipy, scikit-learn, Sage等)。
得益于這個(gè)豐富的生態(tài)系統(tǒng),你能輕松地學(xué)到一門(mén)對(duì)科學(xué)計(jì)算來(lái)說(shuō)非常友好的語(yǔ)言。并且由于它很受歡迎,例子(和Jupyter notebooks中的示例代碼)隨處可見(jiàn)。
10. J
J是一種非常簡(jiǎn)潔的數(shù)組編程語(yǔ)言。它最適合數(shù)學(xué)和統(tǒng)計(jì)編程,尤其是對(duì)矩陣執(zhí)行操作的時(shí)候。它還被用于極限編程和網(wǎng)絡(luò)性能分析。與最初的FP/FL語(yǔ)言一樣,J通過(guò)其默認(rèn)的編程特性支持過(guò)程式(與函數(shù)式編程不同)的編程方式。我的看法像APL和K一樣,J是一種令人費(fèi)解的語(yǔ)言。它的語(yǔ)言很簡(jiǎn)潔,很難讀,但卻強(qiáng)大得難以置信。如果您有興趣采用新的方法來(lái)處理數(shù)據(jù)操作和分析的話,那么J值得一試。
這是一個(gè)快速排序的實(shí)現(xiàn),來(lái)讓您了解我們正在處理的問(wèn)題。
quicksort=: ((:@(<#[)?,?(=#[)?,:@(<#[)?,?(=#[)?,:@(>#[)) ({~ ?@#)) ^: (1<#)寫(xiě)得比較豪放。上面的十種語(yǔ)言就是我眼中認(rèn)為在數(shù)學(xué)領(lǐng)域中值得一試的語(yǔ)言。當(dāng)然,如果您有更好的選擇,歡迎留言表達(dá)你的個(gè)人見(jiàn)解。
————
編輯?∑Gemini
?來(lái)源:青少年數(shù)學(xué)之旅
?泰勒定理的奇聞?shì)W事
?丘成桐:漫談微分幾何
?Leibniz 如何想出微積分?(一)
?線性相關(guān)和秩的物理意義
?數(shù)學(xué)史上你認(rèn)為最丑陋的公式是什么?
?陶哲軒談什么是好的數(shù)學(xué)
?田淵棟:數(shù)學(xué)的用處(下篇)
?你絕對(duì)沒(méi)想過(guò)原來(lái)數(shù)學(xué)家這么流氓,一言不合就進(jìn)行暴力證明
?世界上最牛的五篇博士論文
?數(shù)學(xué)中有哪些巧合讓人眼前一亮?
?算法立功!清華畢業(yè)教授美國(guó)被搶車(chē),警察無(wú)能為力自己用“貪心算法”找回
?學(xué)術(shù)史上的奇文:怎樣用數(shù)學(xué)抓獅子
?臺(tái)大教授的反思:最難的一課 我們卻沒(méi)教給學(xué)生
?麻省理工學(xué)院(MIT)研究生學(xué)習(xí)指導(dǎo)—— 怎樣做研究生
?分享 數(shù)學(xué),常識(shí)和運(yùn)氣 ——投資大師詹姆斯·西蒙斯2010年在MIT的講座
算法數(shù)學(xué)之美微信公眾號(hào)歡迎賜稿
稿件涉及數(shù)學(xué)、物理、算法、計(jì)算機(jī)、編程等相關(guān)領(lǐng)域,經(jīng)采用我們將奉上稿酬。
投稿郵箱:math_alg@163.com
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的十大应用在数学的计算机语言的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CMU博士Nature撰文:机器学习要避
- 下一篇: 西南联大数学名师的“治学经验之谈”及启示