為什么函數(shù)式編程正在上升
編程范例是一個(gè)術(shù)語(yǔ),用于描述編寫命令的方法。 語(yǔ)言的真正思想是建立在其編程范例之上的。 最著名的三種范例是面向?qū)ο蟮某绦蛟O(shè)計(jì),命令式程序設(shè)計(jì)和函數(shù)式程序設(shè)計(jì)。 任何一種意識(shí)形態(tài)都不會(huì)比另一種更好,因?yàn)橥ǔK顷P(guān)于使用正確的工具完成工作的。
函數(shù)式編程是大多數(shù)軟件工程師至少對(duì)此不太熟悉的概念。 實(shí)際上,有史以來(lái)寫給程序計(jì)算機(jī)的第二種編程語(yǔ)言Lisp完全在功能范式內(nèi)。 通過(guò)簡(jiǎn)化的定義編程,函數(shù)式編程將數(shù)據(jù)的不變性和數(shù)學(xué)計(jì)算作為優(yōu)先事項(xiàng),而不是傳統(tǒng)上修改存儲(chǔ)在類構(gòu)造函數(shù)中的部分對(duì)象。 在現(xiàn)代函數(shù)式編程中,這個(gè)想法有些冗長(zhǎng),不一定是一件壞事。 函數(shù)語(yǔ)言的可變性帶來(lái)了更多實(shí)用性,我敢說(shuō):
功能性
功能編程。 考慮到這一點(diǎn),函數(shù)式編程不限于函數(shù)式語(yǔ)言。 例如,Python具有功能特性。 盡管從傳統(tǒng)上講,函數(shù)式編程已經(jīng)有了令人難以置信的不同,但是函數(shù)式和面向?qū)ο蟮姆独坪跖c大多數(shù)用于數(shù)據(jù)科學(xué)的語(yǔ)言有點(diǎn)相似。
我們做的偉大的事情
大多數(shù)功能語(yǔ)言的標(biāo)題均帶有"統(tǒng)計(jì)"字樣。 這很方便,因?yàn)閿?shù)據(jù)科學(xué)家非常像統(tǒng)計(jì)學(xué)家,只需要具備編程和機(jī)器學(xué)習(xí)技能即可。 函數(shù)式語(yǔ)言通??梢愿?,而對(duì)于數(shù)據(jù)科學(xué)家而言,最重要的是更容易。
相信我,您不想瀏覽C代碼,因?yàn)槟臏?zhǔn)確性有點(diǎn)低。 大多數(shù)功能語(yǔ)言都是完全可讀的,并且很容易鍵入和掌握。 對(duì)于某些人來(lái)說(shuō),知道函數(shù)式編程是許多Internet上最古老的大數(shù)據(jù)管道的基礎(chǔ),可能會(huì)令人感到意外。 實(shí)際上,隨著機(jī)器學(xué)習(xí)和統(tǒng)計(jì)計(jì)算的興起,函數(shù)式編程實(shí)際上變得越來(lái)越流行。
炫酷的編程語(yǔ)言
有許多很酷的統(tǒng)計(jì)語(yǔ)言,其中許多語(yǔ)言具有與其他更傳統(tǒng)的特征交織在一起。 在函數(shù)式編程語(yǔ)言下,我非常喜歡很多很酷的語(yǔ)言。
Julia
Julia很容易成為我一直以來(lái)最喜歡的語(yǔ)言。 盡管Julia確實(shí)是功能性的,但它確實(shí)包含一些可變的和面向?qū)ο蟮膶傩?,使其編程起?lái)更加方便。Julia作為這樣一種高級(jí)語(yǔ)言的速度非??臁?它易于鍵入,鍵入正確時(shí),它可以與C一樣快,同時(shí)比R和Scala易于閱讀。 通常,不需要花費(fèi)太多時(shí)間就可以在Julia中建立模型并對(duì)其進(jìn)行訓(xùn)練,并且由于語(yǔ)言簡(jiǎn)單易行且ML速度快,這增加了使用Julia的好處。 在某些情況下,例如在我的ML包Lathe中,機(jī)器學(xué)習(xí)可以用更少的行完成,并且構(gòu)造函數(shù)的屬性可以使用參數(shù)多態(tài)性更輕松地進(jìn)行突變。
Lisp
盡管Lisp不一定以其數(shù)據(jù)科學(xué)領(lǐng)域而聞名,但它仍然是一種非??岬恼Z(yǔ)言。 Lisp和Julia一樣,使編程變得非常容易和方便。 Lisp的宏和Julia的宏是一個(gè)真正值得注意的屬性。 宏本身是一項(xiàng)主要的功能性功能,如果正確使用,可以使筆記本編碼真正容易。 應(yīng)該注意的是,Lisp已將自己分為多種語(yǔ)言,包括Scheme,Clojure和(通用)Lisp。 很難理解或估計(jì)第二種高級(jí)語(yǔ)言及其功能的影響,但是范圍肯定很大。
R
現(xiàn)在,我們迎接我們的好朋友R. R傳統(tǒng)上是一種面向函數(shù)的語(yǔ)言,但是像大多數(shù)其他語(yǔ)言一樣(或已經(jīng)成為)多范式,這意味著它從每個(gè)特定的編程范式中進(jìn)行選擇。 很好,因?yàn)樗筊具有可變性的優(yōu)點(diǎn)。 R起源于S語(yǔ)言,并且一直專注于統(tǒng)計(jì)計(jì)算。
Haskell
Haskell與我上面提到的多種范式語(yǔ)言完全不同,Haskell以純粹的功能而自豪。 我無(wú)法代表Haskell,與清單上的其他語(yǔ)言不同,我從未使用過(guò)。 但是據(jù)我所知,Haskell當(dāng)然是一種很酷的語(yǔ)言。 我對(duì)學(xué)習(xí)Haskell的關(guān)注純粹是局限性。 正如我所討論的那樣,大多數(shù)現(xiàn)代語(yǔ)言都是多范式的,這使它們可以有效地壓縮需要壓縮的任何錯(cuò)誤,而無(wú)需創(chuàng)建新的代碼庫(kù)。
最后的想法
我的大部分時(shí)間都花在函數(shù)式語(yǔ)言(主要是Julia)上,如Github上的筆記本資料庫(kù)所顯示的那樣,其中主要包含Julia筆記本。 我喜歡函數(shù)式編程,因?yàn)閷?duì)于我所做的事情,它非常適合該規(guī)則。 當(dāng)然,有時(shí)候Python構(gòu)造函數(shù)(類)可能對(duì)某個(gè)特定的工作會(huì)更好,但是總的來(lái)說(shuō),Julia可以完成工作,而且鍵入的方式對(duì)我來(lái)說(shuō)非常流暢和高效。 對(duì)于其他人而言,功能語(yǔ)言可能無(wú)法實(shí)現(xiàn)其目標(biāo),并且對(duì)于一生都使用面向?qū)ο笳Z(yǔ)言的人來(lái)說(shuō)可能很難學(xué)習(xí)。 歸根結(jié)底,語(yǔ)言是一種選擇,大多數(shù)語(yǔ)言都有開(kāi)發(fā)人員,大多數(shù)語(yǔ)言都有優(yōu)缺點(diǎn)。
-
編程語(yǔ)言
+關(guān)注
關(guān)注
10文章
1929瀏覽量
34540 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4284瀏覽量
62325
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論