函數語言程式設計functional programming的特點

banq發表於2009-12-09
以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修改過]

相關文章