狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

怎么理解函數式編程思維?

admin
2023年10月25日 9:52 本文熱度 516

      理解函數式編程要注重思維的轉變。函數式編程聚焦于簡潔的高階函數,高階函數注重封裝底層運作原理來解決復雜的業務場景,比如 Scala、Groovy、Clojure 語言:



1. 靜態類型必須先指定變量和函數的類型,而動態類型則允許推遲指定類型。強類型的變量“知道”自己的類型,允許反射和對實例作類型測試,且一直保有自身的類型信息。弱類型的語言相對不了解變量所指向的內容。

2. 命令式告訴計算機執行的步驟,一步一步告訴它怎么做。函數式更注重“做什么”本身,函數式編程是面向數學的抽象,函數式的代碼里只有函數和數據。

       

       函數式編程提供以下幾個特性,讓開發拋開細節,投入到更高的抽象工作中:

  • 高階函數

  • 閉包:由函數(環境)及其封閉的自由變量組成的集合體,比如 Java script 和 Groovy 都提供了閉包的概念。

  • 柯里化和函數的部分施用:柯里化指的是從一個多參數函數變成一連串單參數函數的變換。部分施用指通過提前代入一部分參數值,使一個多參數函數得以省略部分參數,從而轉化 為一個參數數目較少的函數。

  • 遞歸:命令式與函數式最大一個區別是,當需要重復做一件事時,命令式喜歡用循環,而函數式更偏好遞歸。

  • Stream 和作業順序重排

  • 記憶(memoization)和緩求值(laziness):類似于命令式編程的緩存,Groovy、Clojure 都提供了記憶的功能。


        函數式語言的重用表現在函數的通用性上,它們鼓勵在數據結構上使用各種共通的變換,并通過高階函數來調整操作以滿足具體事項的要求。比如函數式編程語言用一組關鍵數據結構(如 list、 set、map)來搭配專為這些數據結構深度優化過的操作,基于這些關鍵數據結構和操作組成的一套運轉機構上面,按需要“插入”另外的數據結構和高階函數來調整機器來解決具體的問題。再比如函數式編程語言提供了如 Either 類、Option 類來優化異常處理問題等。


        在模式與重用方面,Java 提供了經典的 23 種設計模式來解決復雜的業務問題,函數式編程讓這些設計模式有了三種歸宿:

  • 模式被吸收成為語言的一部分。針對于工廠模式,Groovy 語言直接提供的高階函數特性可以讓我們節約大量的八股代碼。針對工廠模式,在設計模式的語境下,柯里化相當于產出函數的工廠。針對策略模式, Groovy 語言以代碼塊定義的形式為開發提供了便利。

  • 模式中描述的解決辦法在函數式范式下依然成立,但實現細節有所變化。針對享元模式,函數式編程提供的記憶功能發揮了重要作用。

  • 由于在新的語言或范式下獲得了原本沒有的能力,產生了新的解決方案


        現實應用方面,Java8 提供了基于 lamda 表達式的函數式編程,但 Java 非函數式編程語言,Java 將問題域封裝在對象之內,并允許通過業務操作來改變對象的狀態,完全與函數式編程“變量無狀態”的思想背道而馳。那么函數式編程能應用于企業級需求解決方案嗎?從另一個角度來思考,Java 是面向對象的的編程語言,領域驅動設計(DDD)是面對企業級需求的解決方案,DDD 的戰術設計趨向于 CQRS 架構,而基于“變量不可變”的特性的函數式編程把 CQRS 架構作為基礎設施,所以能把函數式編程視為企業級需求的解決方案嗎?很明顯不能,DDD注重模擬現實世界,函數式編程思維并沒有試圖模擬現實世界,所以無法滿足復雜的企業需求,函數式編程大處理大量數據方面比面向對象方式更具有效率,正解是:面向對象編程是解決企業級需求的解決方案,解決過程中會產出大量的數據需求,可借力函數式編程。另外,《函數式編程思維》作者提到多范式語言組合才是趨勢,這一點很認同,未來語言必是混合的。編程語言是我們在計算機世界里解決問題的工具,函數式更注重What,而命令式更注重How。對于解決問題的能力,沒有高低強弱之分,只是角度和工具不同而已。


附《函數式編程思維》讀書筆記:


該文章在 2023/10/25 9:52:04 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved