偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

函數(shù)式編程是未來的優(yōu)秀編碼范例嗎?

開發(fā) 前端
簡而言之,函數(shù)式編程需要為固定變量構建純函數(shù)并通過其響應更改狀態(tài)。 相反,其他編程語言具有通過更改程序中變量引用來更改應用程序狀態(tài)的能力。 您可以在本文中了解功能編程與面向對象程序的更多區(qū)別。

函數(shù)式編程已經存在了六十年了,但是到目前為止,它并沒有停止克服面向對象編程的普遍使用。 隨著機器學習和大數(shù)據的爆炸性增長,由于可以并行化純函數(shù)的簡單性,函數(shù)式編程正變得越來越流行。 數(shù)據分析任務和工作流的代碼也更易于遵循,測試和維護,使用功能范式有助于日后的使用。

[[349646]]

甚至像Java和Python這樣的面向對象的編程語言也從內置于地圖,過濾器和簡化功能的功能性編程中采用了巨大的概念。 它們還具有聲明純內聯(lián)lambda函數(shù)以及創(chuàng)建一等和高階函數(shù)以將函數(shù)作為參數(shù)傳遞的功能。

簡而言之,函數(shù)式編程需要為固定變量構建純函數(shù)并通過其響應更改狀態(tài)。 相反,其他編程語言具有通過更改程序中變量引用來更改應用程序狀態(tài)的能力。 您可以在本文中了解功能編程與面向對象程序的更多區(qū)別。

由于其純粹的性質,函數(shù)式編程對于令人垂涎的任務(如機器學習和數(shù)據分析)印象深刻。 但是,這并不意味著您應該放棄其他編程語言而完全發(fā)揮作用,因為每種編程語言都具有比其他編程語言更好的任務。 但是,至關重要的是要學習基本原理,以便在必要時可以將其應用于自己的利益。 出于這些原因,功能編程被稱為未來,但也許機器學習和大數(shù)據的未來才是軟件開發(fā)的全部。

考慮到這一點,讓我們看看為什么軟件開發(fā)人員會愛上函數(shù)式編程,使它成為未來計算機科學的組成部分。 我們還考慮一下面向對象編程的一些功能,看看功能性編程是否可以完全替代它。 劇透:兩者可能會在軟件開發(fā)甚至同一應用程序中共存。

純函數(shù)的使用

純函數(shù)會重復產生相同的結果,并且沒有影響最終結果的外部值。 由于純函數(shù)的這一特性,使用函數(shù)編程創(chuàng)建的算法可輕松識別和糾正錯誤。

純函數(shù)通常采用數(shù)學求解方法。 例如,如果您在計算器中鍵入3 + 3,答案將為6。純函數(shù)也是如此。 不涉及外部元素,因此使功能程序純凈。 一個示例是內聯(lián)lambda函數(shù),該函數(shù)將n作為輸入并返回n + n。

調試對于程序員和開發(fā)人員都是一個長期的問題,這就是為什么他們轉向功能編程的原因,因為它的程序由于使用純函數(shù)而易于調試。

最佳透明度

[[349647]]

> Photo by Pixabay on Pexels.com

純函數(shù)的使用使函數(shù)式編程完全透明。 函數(shù)式編程語言中純函數(shù)和不純函數(shù)之間的顯著區(qū)別極大地提高了這些程序實現(xiàn)的透明性。

此外,純函數(shù)僅在不考慮外部元素的情況下工作。 這意味著他們僅處理用戶的條目。 相反,非功能性編程語言會導致額外的輸入和返回輸出,這些輸入和返回輸出與用戶的信息有些不同。

由于函數(shù)式編程不涉及任何外部元素,因此該算法不會偏離用戶的輸入。 因此,無論輸出如何,它都符合信息并且沒有任何危險的方面。

提高可讀性

函數(shù)式編程提供了許多好處,包括提高了值的可讀性。 使用純值意味著它們的狀態(tài)一直保持到最后。 這些值還增強了程序的可讀性,這使開發(fā)人員不必費力即可掌握代碼。

由于絕大多數(shù)函數(shù)式編程語言都是高級語言,并且用戶將每個函數(shù)都視為一種價值,因此對于開發(fā)人員而言,毫不費力地調用該函數(shù)程序并將這些值最終合并到其他各種函數(shù)中即可。

靜態(tài)變量

用外行的語言來說,"變量"是不斷變化的狀態(tài)。 但是,這與功能編程相反。

在這里,程序員/開發(fā)人員無法立即修改變量; 它已經被煽動。 人們可能會認為,變量的恒定性與遞歸結合可能會導致性能下降。

但是,有必要理解此功能可確保程序直到最后都保持不變。 除了函數(shù)式編程通過使用純函數(shù)提供的寶貴保護外,這種方法還使函數(shù)式編程語言在安全性方面優(yōu)于同類語言。

安全性是軟件開發(fā)中的關鍵要素,促使開發(fā)人員轉向功能編程以提高其系統(tǒng)安全性。

無縫并行編程

[[349648]]

> Photo by Isaac Quesada on Pexels.com

通常認為函數(shù)式編程具有開發(fā)完整的并行程序的能力。 不可否認,開發(fā)應用程序是最容易被理解的使用方案之一,尤其是在采用功能性編程的開發(fā)人員中。

其背后的主要因素是各種函數(shù)式編程語言中變量的靜態(tài)應用。 由于純函數(shù)不會修改變量,而只能在用戶輸入上起作用,因此處理并行性變得不太復雜。

此外,考慮到程序的可靠性提高,大大減少了出錯的余地,從而提高了程序的效率。

驗證功能簽名

簽名驗證是軟件開發(fā)的關鍵方面。 與其他排除函數(shù)程序的方式相比,函數(shù)程序設計因其使函數(shù)簽名極其有效和值得的能力而受到高度評價。 函數(shù)式編程語言的純變量可確保簽名概述有關函數(shù)工作的所有信息以及其參數(shù)詳細信息和任何其他必要的詳細信息。

此外,這是功能編程成為軟件開發(fā)的未來的另一個實際原因。

作為一種功能性編程語言,Scala允許開發(fā)人員同時使用OOP和FP(功能性編程)編寫代碼。 Scala主要致力于使用專有的純函數(shù)和恒定值編寫軟件。 該語言正在逐漸發(fā)揮作用。

為什么函數(shù)式編程不會棄用面向對象的編程

[[349649]]

> Photo by Christina Morillo on Pexels.com

面向對象編程(OOP)已成為軟件開發(fā)的重要組成部分。 盡管引入了許多編程語言(例如C ++和Java),但是希望開發(fā)移動軟件的開發(fā)人員必須掌握面向對象的方法。 考慮到OOP語言(例如PHP和Python)的流行,這同樣適用于復雜的Web開發(fā)。

一些IT專業(yè)人員認為面向對象的編程已過時,因此掌握其概念完全是浪費時間。 他們發(fā)現(xiàn)使用對象代替像Visual Basic這樣的語言中的傳統(tǒng)編程的自上而下的方法是不合邏輯的。

如果您已經編寫了此類軟件的代碼,則可能習慣于將復雜的問題分解為不太復雜的問題,并以代碼為單位分別解決它們。 如果您對函數(shù)式編程有所了解,可以將代碼元素視為適當?shù)臄?shù)學函數(shù),并禁止它們篡改其他方面,即,輸出反映了用戶的輸入。

盡管功能編程越來越流行,但是仍然使用面向對象的編程。 函數(shù)式編程未棄用OOP的一些原因包括:

1. 通過繼承重用代碼

假設一個人除了您的桌子對象還想要金屬桌子對象,而另一個人需要玻璃對象。 每個人都單獨構建對象,但是卻意識到它們之間的相似之處。 每個對象只是一個不同類型的表。 這就是繼承方法證明可以節(jié)省時間的地方。 在這里,您需要創(chuàng)建一個通用類(表),然后定義子類(金屬和玻璃)以采用通用玻璃功能。

當然,金屬和玻璃桌具有其獨特的品質和功能。 由于兩者之間存在相似之處,因此兩個繼承類可以重用主流代碼,而不必再次編寫這些函數(shù)。

例如,如果您想對所有表對象進行更改,而不論其類型如何,您所需要做的就是對表類進行調整,并且所有表對象都將采用新代碼。 這就是為什么某些開發(fā)人員仍然更喜歡OOP而不是函數(shù)式編程的原因。

2. 多態(tài)性的靈活性

根據上面的示例,您不需要很多功能即可上手。 例如,金屬和玻璃物體具有某些共性,但每個物體都有其他獨特的特征。

3. 有效的問題解決

像C這樣的編程語言在編程世界中享有良好的聲譽,但是除非您對此感到滿意,否則強烈建議不要使用自上而下的語言開發(fā)軟件。 這是因為由于復雜性,項目崩潰的可能性更高。 另一方面,以功能編程語言(例如Haskell或ML)編寫程序可以是常規(guī)的。

一旦開始使用面向對象的編程,它通常是最自然,最明智的方法。 OOP語言使開發(fā)人員可以將您的軟件分為中等大小的問題,這些問題可以獨立解決。

4. 數(shù)據抽象

數(shù)據抽象不會向用戶顯示瑣碎的元素; 相反,它僅顯示基本細節(jié)。 例如,汽車被視為車輛,而不是其零件。

數(shù)據抽象被稱為僅指出忽略無關細節(jié)的對象必不可少的特征的過程。 對象的功能和特性使它與其他具有相似性的對象區(qū)分開來,以幫助對對象進行分類/分組。

以某人操作計算機為例。 他只知道按下電源按鈕可以打開/關閉計算機。 他或她不了解打開和關閉PC電源的PC內部機制。 這就是抽象的全部。

在OOP編程語言中,抽象是通過接口和抽象類實現(xiàn)的。 通過使用接口可以實現(xiàn)100%的抽象。

結論

對于不可變的代碼和并發(fā)而言,功能性編程盡管比面向對象的編程更受青睞,但離OOP的使用還有很遠的距離。 如上所述,只有通過面向對象的編程才能實現(xiàn)代碼的可重用性,數(shù)據抽象,有效的問題解決以及多態(tài)性的靈活性。 在系統(tǒng)安全方面,功能性編程勝過面向對象的編程,因此功能性編程才是未來。 尤其是隨著越來越多的大公司在其業(yè)務應用程序中依賴機器學習和人工智能。 函數(shù)式編程在編寫代碼以訓練可在大型計算機主機網絡上進行訓練的ml模型方面尤其重要。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2018-07-27 14:17:32

2019-01-17 10:25:56

Python編程語言程序員

2020-12-21 11:34:37

程序員編程技術

2014-09-05 10:15:41

函數(shù)式編程

2020-03-11 14:44:58

?編碼無碼代碼

2020-03-04 08:00:00

計算機互聯(lián)網 技術

2017-10-26 08:53:38

前端JavaScript函數(shù)式編程

2009-07-24 17:31:30

C#2.0函數(shù)式編程

2023-10-08 13:13:00

無代碼編程

2012-08-23 14:23:33

函數(shù)式編程

2019-11-06 09:05:43

云計算數(shù)據中心網絡安全

2020-07-22 12:03:55

編程程序員技術

2013-09-09 09:41:34

2012-09-21 09:21:44

函數(shù)式編程函數(shù)式語言編程

2021-02-19 23:40:53

人工智能技術無人機

2016-01-28 13:44:03

混合云私有云公有云

2021-12-22 08:00:00

元宇宙虛擬技術

2012-04-11 09:46:40

Web App

2021-05-10 12:30:40

智慧農業(yè)物聯(lián)網IOT

2022-09-22 08:19:26

WebFlux函數(shù)式編程
點贊
收藏

51CTO技術棧公眾號