新聞中心
托馬斯.庫爾提出“科學(xué)的革命”的范式論后,Robert Floyd在1979年圖靈獎(jiǎng)的頒獎(jiǎng)演說中使用了編程范式一詞。

創(chuàng)新互聯(lián)從2013年成立,先為江北等服務(wù)建站,江北等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為江北企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
編程范式,簡(jiǎn)單來說,就是編寫命令的方法。
眾所周知,一門語言的思想建立在其編程范式之上。很知名的三種范式分別是面向?qū)ο缶幊?、指令式編程和函?shù)式編程。它們并沒有優(yōu)劣之分,重要的是使用正確的工具來完成工作。
其中,函數(shù)式編程是大多數(shù)軟件工程師不太熟悉的一個(gè)概念。
函數(shù)式編程是種編程方式,它將電腦運(yùn)算視為函數(shù)的計(jì)算。函數(shù)編程語言很重要的基礎(chǔ)是λ演算(lambda calculus),而且λ演算的函數(shù)可以接受函數(shù)當(dāng)作輸入(參數(shù))和輸出(返回值)。
和指令式編程相比,函數(shù)式編程強(qiáng)調(diào)函數(shù)的計(jì)算比指令的執(zhí)行重要。
和過程化編程相比,函數(shù)式編程里函數(shù)的計(jì)算可隨時(shí)調(diào)用。
曾用于編寫計(jì)算機(jī)程序的第二種編程語言Lisp實(shí)際上屬于函數(shù)式范式。函數(shù)式編程通過簡(jiǎn)化編程定義,優(yōu)先考慮數(shù)據(jù)的不變性和數(shù)學(xué)計(jì)算,而不是像傳統(tǒng)編程去修改存儲(chǔ)在類構(gòu)造函數(shù)中的對(duì)象。在現(xiàn)代函數(shù)式編程中,這種想法有點(diǎn)狹隘,但未必是壞事。函數(shù)式語言的可變性給函數(shù)式編程帶來很多功能,可以說函數(shù)式編程非常實(shí)用。
考慮到這一點(diǎn),函數(shù)式編程并不局限于函數(shù)式語言,如Python具有函數(shù)性特征。雖然函數(shù)式編程與傳統(tǒng)編程極其不同,但是似乎函數(shù)式和面對(duì)對(duì)象范式與用于數(shù)據(jù)科學(xué)的大多數(shù)語言比較接近。
適合我們的工作
大多數(shù)函數(shù)式語言的標(biāo)題都有“統(tǒng)計(jì)”字樣。這很便利,因?yàn)閿?shù)據(jù)科學(xué)家很像統(tǒng)計(jì)學(xué)家,只是多了編程和機(jī)器學(xué)習(xí)技能。函數(shù)式語言通常更快,且更易于數(shù)據(jù)科學(xué)家使用。 相信我,你不會(huì)想快速瀏覽C代碼,因?yàn)檫@樣準(zhǔn)確性有點(diǎn)低。大多數(shù)函數(shù)式語言完全可讀,且十分容易編寫和掌握。函數(shù)式編程是互聯(lián)網(wǎng)上最古老的大數(shù)據(jù)流水線的基礎(chǔ),一些人對(duì)此可能十分驚訝。隨著機(jī)器學(xué)習(xí)和數(shù)據(jù)計(jì)算的發(fā)展,函數(shù)式編程逐漸流行起來。
很酷的語言
有很多很酷的統(tǒng)計(jì)語言,其中很多語言將自有特征與其他傳統(tǒng)特征相互交織,融合在一起。我特別鐘愛以下函數(shù)式編程語言。
R語言
R語言是我們的老朋友了。
R語言是一門傳統(tǒng)的函數(shù)式語言,但像其它大多數(shù)語言一樣,它是(或已經(jīng)成為)多范式的,即可以從每個(gè)特定編程范式中挑選自己喜歡的范式。這給予R語言可變性的優(yōu)點(diǎn)。R語言起源于S語言且一直專注于統(tǒng)計(jì)計(jì)算。
Julia
Julia一直是我很喜愛的編程語言。
它雖然是函數(shù)式的,但確實(shí)包含一些可變的、類似于面對(duì)對(duì)象的屬性,使得編程更加方便。作為一門高級(jí)語言,Julia非常迅速。它很容易進(jìn)行類型聲明,當(dāng)聲明合適時(shí)可以像C語言一樣迅速,同時(shí)比R語言和Scala更具可讀性。
通常,使用Julia的好處之一是它不會(huì)占用過長(zhǎng)時(shí)間來建立模型并進(jìn)行訓(xùn)練,因?yàn)檎Z言簡(jiǎn)單,機(jī)器學(xué)習(xí)(ML)也很迅速。某些情況下,如在我的ML包Lathe中,只需很少的代碼行就能完成機(jī)器學(xué)習(xí),而且可以通過使用參數(shù)動(dòng)態(tài)性更容易地修改構(gòu)造函數(shù)的屬性。
Haskell
Haskell完全不同于以上所提及的多范式語言,它以純粹的函數(shù)性聞名。
我從未使用過Haskell,因此不能代表它,但據(jù)我所知,Haskell確實(shí)是一門很酷的語言。我對(duì)Haskell的了解很局限。如上所述,大多數(shù)現(xiàn)代語言是多范式的,使得它們可以在不創(chuàng)建新代碼庫的同時(shí)有效修復(fù)漏洞。
Lisp
雖然Lisp在數(shù)據(jù)科學(xué)領(lǐng)域不一定聞名,但它仍是一門很酷的語言。
Lisp和Julia一樣可使編程十分方便簡(jiǎn)單。一個(gè)非常值得注意的屬性是Lisp和Julia的宏。宏本身是一個(gè)主要的函數(shù)式特征,如果使用恰當(dāng),可使在notebook中編程更容易。需要注意,Lisp已經(jīng)將自己分為了一組包括scheme、Clojure和(通用)Lisp在內(nèi)的語言集。作為第二高級(jí)語言,很難探索或估計(jì)它及其功能的影響,但影響范圍肯定相當(dāng)大。
筆者對(duì)于Julia的喜愛想必不言而喻了,此前也出過相關(guān)文章專門介紹Julia,雖然有時(shí)候Python的構(gòu)造函數(shù)(類)可能更適合于特定的工作,但就整體而言,Julia也能完成工作,且對(duì)我而言更加流暢高效。
對(duì)于另一些人來說,函數(shù)式語言可能無法完成他們的目標(biāo),對(duì)于一直使用面對(duì)對(duì)象語言的人來說也比較難以學(xué)習(xí)。
歸根結(jié)底,編程語言是一項(xiàng)選擇,大多數(shù)編程語言都有開發(fā)者,也有其優(yōu)點(diǎn)和缺點(diǎn),所以并沒有什么好壞高低之分,就看你個(gè)人的編程習(xí)慣和喜好啦!
分享題目:函數(shù)式編程的第二春?揭秘其再次崛起的背后原因
瀏覽路徑:http://fisionsoft.com.cn/article/cociejo.html


咨詢
建站咨詢
