楼主:
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 隐藏起来了,
至于这语言有多棒多好用,我建议你搜寻“王垠”。