lisp語言 崛起的函式式程式設計與它的語言們

2021-10-11 14:22:29 字數 2764 閱讀 2132

全文共2055字,預計學習時長6分鐘

托馬斯.庫爾提出「科學的革命」的正規化論後,robert floyd在2023年圖靈獎的頒獎演說中使用了程式設計正規化一詞。

程式設計正規化,簡單來說,就是編寫命令的方法。

眾所周知,一門語言的思想建立在其程式設計正規化之上。最知名的三種正規化分別是物件導向程式設計、命令式程式設計和函式式程式設計。它們並沒有優劣之分,重要的是使用正確的工具來完成工作。

其中,函式式程式設計是大多數軟體工程師不太熟悉的乙個概念。

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

和命令式程式設計相比,函式式程式設計強調函式的計算比指令的執行重要。

和過程化程式設計相比,函式式程式設計裡函式的計算可隨時呼叫。

曾用於編寫電腦程式的第二種程式語言lisp實際上屬於函式式正規化。函式式程式設計通過簡化程式設計定義,優先考慮資料的不變性和數學計算,而不是像傳統程式設計去修改儲存在類建構函式中的物件。在現代函式式程式設計中,這種想法有點狹隘,但未必是壞事。函式式語言的可變性給函式式程式設計帶來很多功能,可以說函式式程式設計非常實用。

考慮到這一點,函式式程式設計並不侷限於函式式語言,如python具有函式性特徵。雖然函式式程式設計與傳統程式設計極其不同,但是似乎函式式和面對物件正規化與用於資料科學的大多數語言比較接近。

大多數函式式語言的標題都有「統計」字樣。這很便利,因為資料科學家很像統計學家,只是多了程式設計和機器學習技能。函式式語言通常更快,且更易於資料科學家使用。

相信我,你不會想快速瀏覽c**,因為這樣準確性有點低。大多數函式式語言完全可讀,且十分容易編寫和掌握。函式式程式設計是網際網路上最古老的大資料流水線的基礎,一些人對此可能十分驚訝。隨著機器學習和資料計算的發展,函式式程式設計逐漸流行起來。

有很多很酷的統計語言,其中很多語言將自有特徵與其他傳統特徵相互交織,融合在一起。我特別鍾愛以下函式式程式語言。

r語言

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

r語言是一門傳統的函式式語言,但像其它大多數語言一樣,它是(或已經成為)多正規化的,即可以從每個特定程式設計正規化中挑選自己喜歡的正規化。這給予r語言可變性的優點。r語言起源於s語言且一直專注於統計計算。

julia一直是我最喜愛的程式語言。

它雖然是函式式的,但確實包含一些可變的、類似於面對物件的屬性,使得程式設計更加方便。作為一門高階語言,julia非常迅速。它很容易進行型別宣告,當宣告合適時可以像c語言一樣迅速,同時比r語言和scala更具可讀性。

通常,使用julia的好處之一是它不會占用過長時間來建立模型並進行訓練,因為語言簡單,機器學習(ml)也很迅速。某些情況下,如在我的ml包lathe中,只需很少的**行就能完成機器學習,而且可以通過使用引數動態性更容易地修改建構函式的屬性。

haskell完全不同於以上所提及的多正規化語言,它以純粹的函式性聞名。

我從未使用過haskell,因此不能代表它,但據我所知,haskell確實是一門很酷的語言。我對haskell的了解很侷限。如上所述,大多數現代語言是多正規化的,使得它們可以在不建立新**庫的同時有效修復漏洞。

雖然lisp在資料科學領域不一定聞名,但它仍是一門很酷的語言。

lisp和julia一樣可使程式設計十分方便簡單。乙個非常值得注意的屬性是lisp和julia的巨集。巨集本身是乙個主要的函式式特徵,如果使用恰當,可使在notebook中程式設計更容易。需要注意,lisp已經將自己分為了一組包括scheme、clojure和(通用)lisp在內的語言集。作為第二高階語言,很難探索或估計它及其功能的影響,但影響範圍肯定相當大。

對於另一些人來說,函式式語言可能無法完成他們的目標,對於一直使用面對物件語言的人來說也比較難以學習。

歸根結底,程式語言是一項選擇,大多數程式語言都有開發者,也有其優點和缺點,所以並沒有什麼好壞高低之分,就看你個人的程式設計習慣和喜好啦!

我們一起分享ai學習與發展的乾貨

LISP 函式型程式語言

lisp有很多種方言,各個實現中的語言不完全一樣。1980年代guy l.steele編寫了common lisp試圖進行標準化,這個標準被大多數直譯器和編譯器所接受。在unix linux系統中,還有一種和emacs一起的emacs lisp 而emacs正是用lisp編寫的 非常流行,並建立了自...

函式式程式語言python 函式式程式設計

函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...

函式式程式語言

函式式程式設計是種程式設計方式,它將電腦運算視為函式的計算。函式程式語言最重要的基礎是 演算 lambda calculus 而且 演算的函式可以接受函式當作輸入 引數 和輸出 返回值 1 和命令式程式設計相比,函式式程式設計強調函式的計算比指令的執行重要。和過程化程式設計相比,函式式程式設計裡函式...