導航:首頁 > 編程語言 > 函數式編程優點

函數式編程優點

發布時間:2023-02-04 12:30:55

⑴ 函數式編程的特性

在經常被引用的論文 「Why Functional Programming Matters」(請參閱 參考資料) 中,作者 John Hughes 說明了模塊化是成功編程的關鍵,而函數編程可以極大地改進模塊化。在函數編程中,編程人員有一個天然框架用來開發更小的、更簡單的和更一般化的模塊, 然後將它們組合在一起。函數編程的一些基本特點包括:
支持閉包和高階函數,支持惰性計算(lazy evaluation)。使用遞歸作為控制流程的機制。加強了引用透明性。沒有副作用。我將重點放在在 Java 語言中使用閉包和高階函數上,但是首先對上面列出的所有特點做一個概述。 副作用是修改系統狀態的語言結構。因為 FP 語言不包含任何賦值語句,變數值一旦被指派就永遠不會改變。而且,調用函數只會計算出結果 ── 不會出現其他效果。因此,FP 語言沒有副作用 。

⑵ 函數式編程有什麼弊端

我接觸過Haskell、Clojure和其他語言,也做過PL的「研究」。可以淺談一下:

分析Haskell程序的時間和空間復雜度是很麻煩的。首先編寫Haskell程序往往是很多「重用」內置/自定義數據結構,以實現數據持久性(或「不變性」)可以增加空間和時間消耗(實現策略有很多,但採取臨時解決方案不影響永久治癒),優點是控制副作用。然後,函數組合和高階函數可能代價昂貴,可以生成額外的中間數據。其優點是抽象能力強,模塊化是有益的。最後,惰性評價使過程評價模型復雜,濫用可導致效率的降低。功能語言的分析工具也較少。

但是這些提供了細粒度的模塊化,程序員需要更多的「設計」。「使用函數式編程的程序員必須努力確保程序使用更小、更簡單、更通用的模塊,」Huges說。這是一個挑戰。

而且,模塊之間的交互也是一個問題。

⑶ 什麼是編程範式

編程範式Programming paradigm是指計算機中編程的典範模式或方法。

常見的編程範式有:函數式編程、程序編程、面向對象編程、指令式編程等。

不同的編程語言也會提倡不同的「編程范型」。一些語言是專門為某個特定的范型設計的,如Smalltalk和Java支持面向對象編程。而Haskell和Scheme則支持函數式編程。現代編程語言的發展趨勢是支持多種范型,如 C#、Java 8+、Kotlin、 Scala、ES6+ 等等。


(3)函數式編程優點擴展閱讀

編程範式中函數式編程的優點及應用情況:

1、易於重構、調試、測試。

2、整體應用:數學計算、人工智慧。

3、局部應用:已遍地開花。

python的優點有哪些

優點

簡單:Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣。它使你能夠專注於解決問題而不是去搞明白語言本身。

易學:Python極其容易上手,因為Python有極其簡單的說明文檔[10]。

易讀、易維護:風格清晰劃一、強制縮進

用途廣泛

速度快:Python 的底層是用 C 語言寫的,很多標准庫和第三方庫也都是用 C 寫的,運行速度非常快。[7]

免費、開源:Python是FLOSS(自由/開放源碼軟體)之一。使用者可以自由地發布這個軟體的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟體中。FLOSS是基於一個團體分享知識的概念。

高層語言:用Python語言編寫程序的時候無需考慮諸如如何管理你的程序使用的內存一類的底層細節。

可移植性:由於它的開源本質,Python已經被移植在許多平台上(經過改動使它能夠工作在不同平台上)。這些平台包括linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基於linux開發的android平台。

解釋性:一個用編譯性語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。

運行程序的時候,連接/轉載器軟體把你的程序從硬碟復制到內存中並且運行。而Python語言寫的程序不需要編譯成二進制代碼。你可以直接從源代碼運行 程序。

在計算機內部,Python解釋器把源代碼轉換成稱為位元組碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。這使得使用Python更加簡單。也使得Python程序更加易於移植。

面向對象:Python既支持面向過程的編程也支持面向對象的編程。在「面向過程」的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在「面向對象」的語言中,程序是由數據和功能組合而成的對象構建起來的。

Python是完全面向對象的語言。函數、模塊、數字、字元串都是對象。並且完全支持繼承、重載、派生、多繼承,有益於增強源代碼的復用性。Python支持重載運算符和動態類型。相對於Lisp這種傳統的函數式編程語言,Python對函數式設計只提供了有限的支持。有兩個標准庫(functools, itertools)提供了Haskell和Standard ML中久經考驗的函數式程序設計工具。

可擴展性、可擴充性:如果需要一段關鍵代碼運行得更快或者希望某些演算法不公開,可以部分程序用C或C++編寫,然後在Python程序中使用它們。

Python本身被設計為可擴充的。並非所有的特性和功能都集成到語言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C語言、C++、Cython來編寫擴充模塊。Python編譯器本身也可以被集成到其它需要腳本語言的程序內。因此,很多人還把Python作為一種「膠水語言」(glue language)使用。使用Python將其他語言編寫的程序進行集成和封裝。在Google內部的很多項目,例如Google Engine使用C++編寫性能要求極高的部分,然後用Python或Java/Go調用相應的模塊。《Python技術手冊》的作者馬特利(Alex Martelli)說:「這很難講,不過,2004 年,Python 已在Google內部使用,Google 召募許多 Python 高手,但在這之前就已決定使用Python,他們的目的是 Python where we can, C++ where we must,在操控硬體的場合使用C++,在快速開發時候使用 Python。」

可嵌入性:可以把Python嵌入C/C++程序,從而向程序用戶提供腳本功能。

豐富的庫:Python標准庫確實很龐大。它可以幫助處理各種工作,包括正則表達式、文檔生成、單元測試、線程、資料庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其他與系統有關的操作。這被稱作Python的「功能齊全」理念。除了標准庫以外,還有許多其他高質量的庫,如wxPython、Twisted和Python圖像庫等等。

規范的代碼:Python採用強制縮進的方式使得代碼具有較好可讀性。而Python語言寫的程序不需要編譯成二進制代碼。Python的作者設計限制性很強的語法,使得不好的編程習慣(例如if語句的下一行不向右縮進)都不能通過編譯。其中很重要的一項就是Python的縮進規則。一個和其他大多數語言(如C)的區別就是,一個模塊的界限,完全是由每行的首字元在這一行的位置來決定(而C語言是用一對花括弧{}來明確的定出模塊的邊界,與字元的位置毫無關系)。通過強製程序員們縮進(包括if,for和函數定義等所有需要使用模塊的地方),Python確實使得程序更加清晰和美觀。

高級動態編程:雖然Python可能被粗略地分類為「腳本語言」(script language),但實際上一些大規模軟體開發計劃例如Zope、Mnet及BitTorrent,Google也廣泛地使用它。Python的支持者較喜歡稱它為一種高級動態編程語言,原因是「腳本語言」泛指僅作簡單程序設計任務的語言,如shellscript、VBScript等只能處理簡單任務的編程語言,並不能與Python相提並論。

做科學計算優點多:說起科學計算,首先會被提到的可能是MATLAB。除了MATLAB的一些專業性很強的工具箱還無法被替代之外,MATLAB的大部分常用功能都可以在Python世界中找到相應的擴展庫。和MATLAB相比,用Python做科學計算有如下優點:

● 首先,MATLAB是一款商用軟體,並且價格不菲。而Python完全免費,眾多開源的科學計算庫都提供了Python的調用介面。用戶可以在任何計算機上免費安裝Python及其絕大多數擴展庫。

● 其次,與MATLAB相比,Python是一門更易學、更嚴謹的程序設計語言。它能讓用戶編寫出更易讀、易維護的代碼。

● 最後,MATLAB主要專注於工程和科學計算。然而即使在計算領域,也經常會遇到文件管理、界面設計、網路通信等各種需求。而Python有著豐富的擴展庫,可以輕易完成各種高級任務,開發者可以用Python實現完整應用程序所需的各種功能。

閱讀全文

與函數式編程優點相關的資料

熱點內容
玩操正太電影 瀏覽:682
伺服器如何添加自啟軟體 瀏覽:489
小時候的一部台灣電影的名字 瀏覽:510
為什麼看片的網站都看不了了 瀏覽:476
交換的一天女主角是 瀏覽:669
男主是只黑豹子叫夜 瀏覽:517
韓國愛情電影割眼鏡 瀏覽:712
微信伺服器怎麼連接到客戶端的 瀏覽:435
朴銀狐的電影有什麼 瀏覽:881
河北航天金稅盤伺服器地址雲主機 瀏覽:406
男人看日本片網址求一個 瀏覽:760
如何用boat玩伺服器 瀏覽:273
天堂txt 瀏覽:305
陳小春去台灣是哪一部 瀏覽:973
宅男免費影院 瀏覽:198
電影阿努可敦在線觀看 瀏覽:262
法國小女生電影推薦 瀏覽:606
畫江湖之不良人同人小說 瀏覽:75
北京少兒編程必修課 瀏覽:991
我愛你韓國百度雲 瀏覽:761