01.25 函數式編程,真香

為什麼函數式編程正在上升

函數式編程,真香

編程範例是一個術語,用於描述編寫命令的方法。 語言的真正思想是建立在其編程範例之上的。 最著名的三種範例是面向對象的程序設計,命令式程序設計和函數式程序設計。 任何一種意識形態都不會比另一種更好,因為通常它是關於使用正確的工具完成工作的。

函數式編程是大多數軟件工程師至少對此不太熟悉的概念。 實際上,有史以來寫給程序計算機的第二種編程語言Lisp完全在功能範式內。 通過簡化的定義編程,函數式編程將數據的不變性和數學計算作為優先事項,而不是傳統上修改存儲在類構造函數中的部分對象。 在現代函數式編程中,這個想法有些冗長,不一定是一件壞事。 函數語言的可變性帶來了更多實用性,我敢說:

功能性

功能編程。 考慮到這一點,函數式編程不限於函數式語言。 例如,Python具有功能特性。 儘管從傳統上講,函數式編程已經有了令人難以置信的不同,但是函數式和麵向對象的範例似乎與大多數用於數據科學的語言有點相似。

我們做的偉大的事情

大多數功能語言的標題均帶有"統計"字樣。 這很方便,因為數據科學家非常像統計學家,只需要具備編程和機器學習技能即可。 函數式語言通常可以更快,而對於數據科學家而言,最重要的是更容易。

相信我,您不想瀏覽C代碼,因為您的準確性有點低。 大多數功能語言都是完全可讀的,並且很容易鍵入和掌握。 對於某些人來說,知道函數式編程是許多Internet上最古老的大數據管道的基礎,可能會令人感到意外。 實際上,隨著機器學習和統計計算的興起,函數式編程實際上變得越來越流行。

炫酷的編程語言

有許多很酷的統計語言,其中許多語言具有與其他更傳統的特徵交織在一起。 在函數式編程語言下,我非常喜歡很多很酷的語言。

Julia

函數式編程,真香

Julia很容易成為我一直以來最喜歡的語言。 儘管Julia確實是功能性的,但它確實包含一些可變的和麵向對象的屬性,使其編程起來更加方便。Julia作為這樣一種高級語言的速度非常快。 它易於鍵入,鍵入正確時,它可以與C一樣快,同時比R和Scala易於閱讀。 通常,不需要花費太多時間就可以在Julia中建立模型並對其進行訓練,並且由於語言簡單易行且ML速度快,這增加了使用Julia的好處。 在某些情況下,例如在我的ML包Lathe中,機器學習可以用更少的行完成,並且構造函數的屬性可以使用參數多態性更輕鬆地進行突變。

Lisp

函數式編程,真香

儘管Lisp不一定以其數據科學領域而聞名,但它仍然是一種非常酷的語言。 Lisp和Julia一樣,使編程變得非常容易和方便。 Lisp的宏和Julia的宏是一個真正值得注意的屬性。 宏本身是一項主要的功能性功能,如果正確使用,可以使筆記本編碼真正容易。 應該注意的是,Lisp已將自己分為多種語言,包括Scheme,Clojure和(通用)Lisp。 很難理解或估計第二種高級語言及其功能的影響,但是範圍肯定很大。

R

函數式編程,真香

現在,我們迎接我們的好朋友R. R傳統上是一種面向函數的語言,但是像大多數其他語言一樣(或已經成為)多範式,這意味著它從每個特定的編程範式中進行選擇。 很好,因為它使R具有可變性的優點。 R起源於S語言,並且一直專注於統計計算。

Haskell

函數式編程,真香

Haskell與我上面提到的多種範式語言完全不同,Haskell以純粹的功能而自豪。 我無法代表Haskell,與清單上的其他語言不同,我從未使用過。 但是據我所知,Haskell當然是一種很酷的語言。 我對學習Haskell的關注純粹是侷限性。 正如我所討論的那樣,大多數現代語言都是多範式的,這使它們可以有效地壓縮需要壓縮的任何錯誤,而無需創建新的代碼庫。

最後的想法

我的大部分時間都花在函數式語言(主要是Julia)上,如Github上的筆記本資料庫所顯示的那樣,其中主要包含Julia筆記本。 我喜歡函數式編程,因為對於我所做的事情,它非常適合該規則。 當然,有時候Python構造函數(類)可能對某個特定的工作會更好,但是總的來說,Julia可以完成工作,而且鍵入的方式對我來說非常流暢和高效。 對於其他人而言,功能語言可能無法實現其目標,並且對於一生都使用面嚮對象語言的人來說可能很難學習。 歸根結底,語言是一種選擇,大多數語言都有開發人員,大多數語言都有優缺點。


(本文翻譯自Emmett Boudreau的文章《Functional Programming is AWESOME》,參考:https://towardsdatascience.com/functional-programming-is-awesome-c94bcd150ae6)


分享到:


相關文章: