函數語言程式設計functional programming的特點
以Erlang為代表的面向功能語言functional programming(FP)越來越熱門,雖然本身有比較難學等缺點,
Where functional programming fits in一文總結總結了FP適合哪些場合?
Java平臺的Scala,.NET的F都是FP語言,而Ruby因為包含一些FP特點受到歡迎。
FP特點:
1.FP程式碼沒有邊界影響“side effects.”(目的明確,是一就是一,不會因為搗蛋鬼呼叫導致其他功能實現)
2.沒有literal值, 簡單的功能只是返回相同值。
3.許多FP語言有“lazy evaluation,”(類似懶載入機制),功能並不真正執行,直到他們被呼叫,比如你定義x = y +5,只有當x被使用時,才真正計算y+5,這個帶來更好的效能boon和curse (有時不確定值),(注:這個和我們之前討論的非同步Domain Events好像類似,模型的值只有即時使用才訪問資料庫獲得,我們也是為了獲得更好地效能,見Domain Events非同步應用)
FP語言的這些特性代表了思想的根本轉變,但是使用FP語言,必須考慮是不是存在過度工程或overthinking的問題,因為這程式碼的其他維護者需要學習一個新的語言。
作者認為FP語言使用在演算法應用領域比較好,在Xbox Live排名系統中,用F替代C重寫,只用了10% 的程式碼量,節約了近90%的程式碼。
如果你使用現代主流的膠水庫library glue code之類應用,如果你的程式碼是由一個個類組成的結構,而演算法只是被融合在這些類之中,就沒有必要使用FP語言。
[該貼被admin於2009-12-09 14:24修改過]
相關文章
- 程式設計思想基本概念之函數語言程式設計(Functional Programming)程式設計函數Function
- Java中的函數語言程式設計(二)函式式介面Functional InterfaceJava函數程式設計函式Function
- 純函數語言程式設計的缺點函數程式設計
- 函式程式設計Functional Programming 會取代GOF設計模式嗎?函式程式設計FunctionGo設計模式
- 函數語言程式設計函數程式設計
- Scala 函數語言程式設計(一) 什麼是函數語言程式設計?函數程式設計
- RAC的函數語言程式設計函數程式設計
- 函數語言程式設計,真香函數程式設計
- JavaScript 函數語言程式設計JavaScript函數程式設計
- Java 函數語言程式設計Java函數程式設計
- javascript函數語言程式設計JavaScript函數程式設計
- 初探函數語言程式設計函數程式設計
- 函數語言程式設計初探函數程式設計
- JavaScript中的函數語言程式設計JavaScript函數程式設計
- C++的函數語言程式設計C++函數程式設計
- python的函數語言程式設計Python函數程式設計
- JavaScript 中的函數語言程式設計JavaScript函數程式設計
- 函數語言程式設計雜談函數程式設計
- 初見函數語言程式設計函數程式設計
- JavaScript 函數語言程式設計(二)JavaScript函數程式設計
- 函數語言程式設計前菜函數程式設計
- JavaScript 函數語言程式設計(一)JavaScript函數程式設計
- JavaScript 函數語言程式設計(三)JavaScript函數程式設計
- python函數語言程式設計Python函數程式設計
- JavaScript函數語言程式設計(二)JavaScript函數程式設計
- JavaScript函數語言程式設計(一)JavaScript函數程式設計
- JavaScript函數語言程式設計(三)JavaScript函數程式設計
- 函數語言程式設計初探一函數程式設計
- iOS 與 函數語言程式設計iOS函數程式設計
- 函數語言程式設計簡介函數程式設計
- 函數語言程式設計入門函數程式設計
- C#函數語言程式設計C#函數程式設計
- Swift の 函數語言程式設計Swift函數程式設計
- Scala函式與函數語言程式設計函式函數程式設計
- .NET併發程式設計-函數語言程式設計程式設計函數
- 函數語言程式設計-鏈式程式設計RAC函數程式設計
- 每個人都應該懂點函數語言程式設計函數程式設計
- Java 函數語言程式設計的前生今世Java函數程式設計