函數式編程,我心中的 C 位

csdn 發佈 2019-12-29T06:17:16+00:00

實際上,大多數軟體工程師對於函數式編程的概念並不太熟悉。作者 | Emmett Boudreau譯者 | 彎月,責編 | Elle以下為譯文:編程範式指的是編寫命令的方法。程式語言的思想正是建立在其編程範式之上。

實際上,大多數軟體工程師對於函數式編程的概念並不太熟悉。

作者 | Emmett Boudreau

譯者 | 彎月,責編 | Elle

以下為譯文:

編程範式指的是編寫命令的方法。程式語言的思想正是建立在其編程範式之上。最常見的三種範式分別是面向對象程序設計、命令式程序設計和函數式程序設計。這三種思想體系並無優劣之分,通常我們都需要選擇正確的工具來完成工作。

大多數軟體工程師對於函數式編程的概念並不太熟悉。實際上,歷史上的第二個程式語言Lisp就屬於函數式範式。函數式編程簡化了編程的定義,傳統編程非常注重修改存儲在類構造函數中的對象,而函數式編程則優先考慮數據的不變性和數學計算。在現代函數式編程中,這種思想有點冗長,但這不一定是一件壞事。函數式程式語言的可變性非常實用,我敢說函數式編程非常實用。

如此說來,函數式編程不限於函數式語言。例如,Python 也擁有函數式特性。儘管現代函數式編程已與傳統的函數式大相逕庭,但是似乎大多數用於數據科學的語言都採用了函數式和面向對象的範式。

很適合我們當前的工作

大多數函數式程式語言的標題均帶有「統計」字樣。這很方便,因為數據科學家與統計學家很相像,只是他們還掌握了編程和機器學習的技術。函數式程式語言的速度很快,而且最重要的是,對數據科學家而言,函數式程式語言更容易使用。

沒人喜歡瀏覽C代碼,因為C的可讀性不太好。而大多數函數式程式語言都具有可讀性,而且很容易輸入和上手。你甚至不會想到,網際網路上許多早期的大數據流水線使用的都是函數式編程。實際上,隨著機器學習和統計計算的興起,函數式編程也越來越流行了。

了不起的語言

我們有很多了不起的統計語言,其中許多語言能夠將自己的特徵和其他傳統的特徵融合在一起。我喜歡很多函數式程式語言。

Julia

Julia 一直都是我最喜歡的程式語言。雖然 Julia 是實打實的函數式程式語言,但它還包含一些可變和類似於對象的屬性,因此十分方便編寫程序。作為一種高級語言,Julia 的速度非常快。它的類型聲明很容易,而且如果有了恰當的類型定義,它可以與 C 一樣快,同時比 R 和 Scala 易於閱讀。通常,你不需要花費太多時間就可以用 Julia 建立模型並進行訓練,而且由於語言簡單易用,機器學習的速度很快,因此使用 Julia 擁有很大優勢。在某些情況下,例如使用我的機器學習軟體包 Lathe 時,只需很少的代碼就可以完成機器學習,而且可以通過參數多態性輕鬆地修改構造函數的屬性。

Lisp

儘管 Lisp 在數據科學領域名不見經傳,但它仍然是一種非常酷的語言。Lisp 和 Julia 一樣,是一種非常方便使用的程式語言。值得一提的屬性之一是 Lisp 的宏和 Julia 的宏。宏本身是重要的函數式特徵,如果使用得當,在 notebook 中編寫代碼就會非常容易。應該注意的是,Lisp 本身還可以分成一系列語言,包括Scheme,Clojure 和(通用)Lisp。作為歷史上的第二個高級程式語言,我們很難估計 Lisp 及其功能的影響,但我敢說影響範圍肯定很深遠。

R語言

下面讓我們來談一談老朋友 R。從傳統意義來看,R語言是一種函數式程式語言,但是與大多數其他語言一樣,R語言也屬於多範式,這意味著它可以從各個編程範式中進行選擇。這是一種優勢,因為R語言可以利用可變性。R語言源自S語言,並且一直專注於統計計算。

Haskell

Haskell 與我上面所說的多範式語言完全不同,它是純粹的函數式程式語言。與本文提及的其他語言不同,我從未使用過 Haskell,因此沒有太多發表權。但據我所知,Haskell 是一種相當了不起的語言。我對 Haskell 的了解很局限。如上所述,大多數現代語言都是多範式的,因此它們可以更有效地消滅bug,同時又無需創建新的代碼庫。

總結

在工作中,我最常用的都是函數式程式語言,主要是Julia,而GitHub代碼庫主要保存的也是 Julia notebook。我喜歡函數式編程,因為它非常適合我當前的工作。當然,有時候用 Python 的構造函數(類)來處理某個特定的工作可能會更好,但是總的來說,Julia 也可以勝任,而且我覺得用 Julia 編程非常流暢且高效。對於有些人來說,可能函數式程式語言無法完成他們的目標,而且對於一生都在使用面向對象語言的人來說,可能學習函數式編程語的難度很大。歸根結底,語言只是一種選擇,大多數語言都有一批忠實的擁護者,而且大多數語言都有優點和缺點。

原文:https://towardsdatascience.com/functional-programming-is-awesome-c94bcd150ae6

本文為 CSDN 翻譯,轉載請註明來源出處。

關鍵字: