函數式編程語言急先鋒:Haskell

火星人 @ 2014-03-03 , reply:0


函數式編程語言急先鋒:Haskell

  函數式編程正重新進入人們的視野:
 [*]CL,Scheme,Erlang,ML系列等原生函數式編程語言受到越來越廣泛的關注
 [*]主流編程語言(C++,Java,PHP,...)里也在逐步引入一些函數式編程中的元素
 [*]「工業級」的JVM與CLR上也出現了各種新興的函數式編程語言(Clojure,Scala,F#,...)
 
 
 在各種函數式編程語言中Haskell都可以算函數式「味道」非常濃烈的語言。
 例如僅「默認使用非嚴格求值」就可以在上述提到的編程語言中獨樹一幟。除此之外Haskell還採用了許多在其他編程語言里難以一見的編程概念:
 
 [*]curried form的函數
 [*]純函數與不可變數據
 [*]顯式化可組合的副作用
 [*]強大的類型系統
 等等。
 
 正因為相比主流編程語言(甚至許多函數式編程語言)Haskell有太多獨特之處,選取Haskell作為學習函數式編程的載體是一件有趣且又富有挑戰性的工作。
 這種時候有一本合適的入門級教程會讓人取得事半功倍的效果。滿足該定位的中文書籍非《Haskell趣學指南》(Learn You a Haskell for Great Good!)莫屬。
 

接觸函數式編程的契機以及學習並使用函數式編程的動機。
 在實際工作中使用函數式編程的經驗。
 函數式編程在實際應用中的前景。
 ——————
 三個問題我放在一起討論吧。
 
 在眾多函數式編程語言中,我比較喜歡的是Scala。
 
 Scala語言是基於JVM的,可以在程序中同時使用函數式編程思想和過程式編程思想,也支持面向對象編程,還可以調用龐大的Java庫,尤其是類型安全,代碼簡潔。
 
 幾年前最初接觸Scala語言是因為Play框架。Play框架是一個Web開發框架,也是一個全棧式的應用框架。Play框架包括MVC模型、類似於Hibernate的ORM、基於Groovy的模板引擎、基於Apache Mina的HTTP伺服器,跟Ruby社區的Rails框架相似。Play框架還有開發效率高、排除故障方便、支持非同步開發、支持熱部署等特性。
 
 由於Play框架同時支持Java和Scala,因此我開始嘗試了解Scala。並在學習Scala的過程中逐步體會到它的強大之處。
 
 還有Scala語言的Akka庫,用於簡化編寫容錯的、高可伸縮性的Java和Scala的Actor模型應用,極端的強悍。
 
 有些項目的個別模塊我們就是採用Scala開發的。
 
 對使用函數式編程的最大體會是它能拓展開發者的編程思路,讓開發者不再局限於OO編程思想,解決問題的方法也不至於很狹窄了。
 
 目前面向對象仍然是主流,函數式編程還是小眾,就像蘿蔔青菜,各有所愛那樣,沒有誰能取代誰。函數式編程至少給程序員的編程生活帶來了一些樂趣。





[火星人 via ] 函數式編程語言急先鋒:Haskell已經有864次圍觀

http://www.coctec.com/docs/service/show-post-1.html