自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

函數(shù)式編程的第二春?揭秘其再次崛起的背后原因

開發(fā) 后端
托馬斯.庫爾提出“科學的革命”的范式論后,Robert Floyd在1979年圖靈獎的頒獎演說中使用了編程范式一詞。編程范式,簡單來說,就是編寫命令的方法。

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

[[313219]]

編程范式,簡單來說,就是編寫命令的方法。

眾所周知,一門語言的思想建立在其編程范式之上。很知名的三種范式分別是面向對象編程、指令式編程和函數(shù)式編程。它們并沒有優(yōu)劣之分,重要的是使用正確的工具來完成工作。

其中,函數(shù)式編程是大多數(shù)軟件工程師不太熟悉的一個概念。

函數(shù)式編程是種編程方式,它將電腦運算視為函數(shù)的計算。函數(shù)編程語言很重要的基礎是λ演算(lambda calculus),而且λ演算的函數(shù)可以接受函數(shù)當作輸入(參數(shù))和輸出(返回值)。

和指令式編程相比,函數(shù)式編程強調函數(shù)的計算比指令的執(zhí)行重要。

和過程化編程相比,函數(shù)式編程里函數(shù)的計算可隨時調用。

曾用于編寫計算機程序的第二種編程語言Lisp實際上屬于函數(shù)式范式。函數(shù)式編程通過簡化編程定義,優(yōu)先考慮數(shù)據(jù)的不變性和數(shù)學計算,而不是像傳統(tǒng)編程去修改存儲在類構造函數(shù)中的對象。在現(xiàn)代函數(shù)式編程中,這種想法有點狹隘,但未必是壞事。函數(shù)式語言的可變性給函數(shù)式編程帶來很多功能,可以說函數(shù)式編程非常實用。

考慮到這一點,函數(shù)式編程并不局限于函數(shù)式語言,如Python具有函數(shù)性特征。雖然函數(shù)式編程與傳統(tǒng)編程極其不同,但是似乎函數(shù)式和面對對象范式與用于數(shù)據(jù)科學的大多數(shù)語言比較接近。

適合我們的工作

 

大多數(shù)函數(shù)式語言的標題都有“統(tǒng)計”字樣。這很便利,因為數(shù)據(jù)科學家很像統(tǒng)計學家,只是多了編程和機器學習技能。函數(shù)式語言通常更快,且更易于數(shù)據(jù)科學家使用。 相信我,你不會想快速瀏覽C代碼,因為這樣準確性有點低。大多數(shù)函數(shù)式語言完全可讀,且十分容易編寫和掌握。函數(shù)式編程是互聯(lián)網(wǎng)上最古老的大數(shù)據(jù)流水線的基礎,一些人對此可能十分驚訝。隨著機器學習和數(shù)據(jù)計算的發(fā)展,函數(shù)式編程逐漸流行起來。

很酷的語言

有很多很酷的統(tǒng)計語言,其中很多語言將自有特征與其他傳統(tǒng)特征相互交織,融合在一起。我特別鐘愛以下函數(shù)式編程語言。

R語言

 

R語言是我們的老朋友了。

R語言是一門傳統(tǒng)的函數(shù)式語言,但像其它大多數(shù)語言一樣,它是(或已經(jīng)成為)多范式的,即可以從每個特定編程范式中挑選自己喜歡的范式。這給予R語言可變性的優(yōu)點。R語言起源于S語言且一直專注于統(tǒng)計計算。

Julia

 

Julia一直是我很喜愛的編程語言。

它雖然是函數(shù)式的,但確實包含一些可變的、類似于面對對象的屬性,使得編程更加方便。作為一門高級語言,Julia非常迅速。它很容易進行類型聲明,當聲明合適時可以像C語言一樣迅速,同時比R語言和Scala更具可讀性。

通常,使用Julia的好處之一是它不會占用過長時間來建立模型并進行訓練,因為語言簡單,機器學習(ML)也很迅速。某些情況下,如在我的ML包Lathe中,只需很少的代碼行就能完成機器學習,而且可以通過使用參數(shù)動態(tài)性更容易地修改構造函數(shù)的屬性。

Haskell

 

Haskell完全不同于以上所提及的多范式語言,它以純粹的函數(shù)性聞名。

我從未使用過Haskell,因此不能代表它,但據(jù)我所知,Haskell確實是一門很酷的語言。我對Haskell的了解很局限。如上所述,大多數(shù)現(xiàn)代語言是多范式的,使得它們可以在不創(chuàng)建新代碼庫的同時有效修復漏洞。

Lisp

 

雖然Lisp在數(shù)據(jù)科學領域不一定聞名,但它仍是一門很酷的語言。

Lisp和Julia一樣可使編程十分方便簡單。一個非常值得注意的屬性是Lisp和Julia的宏。宏本身是一個主要的函數(shù)式特征,如果使用恰當,可使在notebook中編程更容易。需要注意,Lisp已經(jīng)將自己分為了一組包括scheme、Clojure和(通用)Lisp在內的語言集。作為第二高級語言,很難探索或估計它及其功能的影響,但影響范圍肯定相當大。

筆者對于Julia的喜愛想必不言而喻了,此前也出過相關文章專門介紹Julia,雖然有時候Python的構造函數(shù)(類)可能更適合于特定的工作,但就整體而言,Julia也能完成工作,且對我而言更加流暢高效。

對于另一些人來說,函數(shù)式語言可能無法完成他們的目標,對于一直使用面對對象語言的人來說也比較難以學習。

歸根結底,編程語言是一項選擇,大多數(shù)編程語言都有開發(fā)者,也有其優(yōu)點和缺點,所以并沒有什么好壞高低之分,就看你個人的編程習慣和喜好啦!

責任編輯:華軒 來源: 讀芯術
相關推薦

2013-03-04 10:03:17

Python函數(shù)式編程

2011-09-26 09:58:46

Windows 8

2024-11-26 00:38:26

2023-05-17 18:38:58

宕機認證令牌

2016-08-11 10:34:37

Javascript函數(shù)編程

2016-11-15 13:52:19

2012-05-04 23:24:10

應用

2010-03-31 13:41:46

證券市場Linux

2012-03-28 16:37:05

2011-04-06 11:21:25

PHPPython

2011-10-18 09:23:47

函數(shù)式編程

2012-10-16 09:57:55

Facebook數(shù)據(jù)中心開放式數(shù)據(jù)

2009-01-04 09:26:44

架構Google服務器

2012-09-21 09:21:44

函數(shù)式編程函數(shù)式語言編程

2011-07-04 14:53:56

服務器虛擬化

2009-08-14 11:34:09

802.11n無線標準無線路由器

2021-06-03 23:02:39

比特幣虛擬貨幣貨幣

2016-09-07 20:41:38

辦公

2011-07-01 13:11:44

服務器虛擬化

2012-03-20 21:00:52

Android
點贊
收藏

51CTO技術棧公眾號