淺談函數式編程
【本期沙龍】淺談函數式編程
常見的編程範式
探秘函數式編程
綁定:變數值不變
表達式:「語句」都是表達式
高階函數:像「變數」一樣使用函數
集合上的高階函數:函數式編程的利器
閉包:「代碼生成器」
柯里化: 數學化的語言技法
部分施用:減少重複的傳參
其他功能:記憶化、惰性求值、模式匹配
從函數式編程中汲取精華
不必學習新語言
正如前面所說,傳統語言也變得更加函數式起來, Java 8提供了集合上一些高階函數, C++ 11也開始支持Lambda表達式。這些都讓你的代碼變得更加簡潔優雅。
匿名函數代替僅出現一次的函數
在Java 8以及C++ 11以後的版本,此兩門語言開始支持Lambda表達式,從而提供了匿名函數特性。在使用需要提供函數指針作為輔助參數的函數,不再需要另行聲明。
使用Lambda表達式減少命名空間污染
為了使演算法清晰明確,有時解決某個問題的演算法可能需要多個函數,但提供最終結果的函數僅僅有其中一個。我們可以通過Lambda表達式將輔助函數綁定到函數內部的函數指針上,從而使輔助函數不再對外暴露。
高階函數代替重複部分
即使是C語言中,也可以使用函數指針來模擬高階函數的運作,C標準庫中利用了高階函數實現了很多函數。
減少代碼中不必要的可變數
代碼中的可變數是影響多線程程序效率的一大重要因素,如果儘可能的減少這部分的內容,既使代碼更加清晰,也使代碼除錯更容易,同時減少了線程間訪問共享數據時用在加鎖解鎖上的時間。
處理高並發: Akka & Actor
Akka是一個用Scala編寫的庫,用於簡化編寫容錯的、高可伸縮性的Java和Scala的Actor模型應用。
2017年10月15日 19:00
西安郵電大學 東區
教學樓東北 FZ118
TAG:西郵Linux興趣小組 |