Re: [問題] 大家覺得函數式語言有前途嗎?

作者: drm343 (一卡)   2013-10-04 00:28:58
※ 引述《carelai (風云人物)》之銘言:
: 就是以Haskell,OCaml,Clojure,Scala為代表的語言,
: 在將來會有前途嗎?正面和反面的理由各是什么?謝謝諸位。
我幫 irc 上的前輩簡單轉達他個人的看法。
要正確分析這問題得從經濟跟語言的角度同時討論,並不是
簡單就可以回答的問題,如果是問最容易轉移,那答案可能
是 Scale。
下面是我自己的經驗。
經濟的部份我也回答不了,但如果是討論語言的話,我還算
有一些心得可以給你,因為 clojure 跟 Scala 不在我的守
備範圍內,也就不講這兩個了,就說 haskell、ocaml、sml
、scheme 這四個。
sml 跟 ocaml 是 ML 的兩個方言,有人在 coursera PL 課
的討論區問 Dan Grossman(該課的教授)你自己平常用哪個
sml (PL 課的第一個語言是 SML)實作品,他回答:「我教
學都用 sml,實際開發則用 ocaml 但完全不使用OO 的部份」
sml 有非常嚴謹的規格定義,只要有寫在定義內的,所有實作
都會相容,甚至有直接把其它實作品 lib 拿來用的(mlton)。
但是沒寫在規格內的東西,大家就會以自己的意思去做,例如
IO ...
ocaml 相較於 sml 就沒有這麼嚴謹了,好處是謹此一家,如
果我們不算上微軟的 F#.....相較於 sml,ocaml 實用的 lib
很多,處理utf8 的部份也比 sml 方便,如果你跟我一樣不
想用 OO 又想逃離 monad,那 ocaml會是不錯的選擇。
haskell 是目前 ML 系語言中,社群整合最好的,cabal 很方便
就能下載別人寫好的 lib 來用,但相較於前兩者,要跨過的門
檻就高很多,一般的 FPL 都會提供一個用來宣告 side-effect
變數的方法,即使是很雜的 Common Lisp 也有區分這兩者,
haskell 用來提供 side-effect 的做法叫作 monad,這還只是
第一個門檻,光這個就可以讓人花上半年一年去搞懂它了,更
不必提載下來的兩個 lib 都有 monad 的時候該怎麼辦了。
但是當我們想了解 Types 是什麼,PL 又是什麼,又例如該怎
麼設計一個 PL 的時候,最容易幫助我們理解並且解決這些問題
的通常會是 FPL,你可以 google 書單,就不多講這個了。
scheme 也是很不錯的語言,除了很多人靠悲的 () 這個,雖然
有規範,但實作品之間的相容度不高,很多時候光是宣告一個
function 的 keyword 就不相容了,這語言好在一致性,開頭
一定是函數,如果你看不到函數,那代表被 sugar 隱藏起來了,
至於這語言有多棒多好用,我建議你搜尋「王垠」。

Links booklink

Contact Us: admin [ a t ] ucptt.com