金星凌日 发表于 2014-3-20 12:28
请教一下,Clojure有哪些独特的优势?我只会Common Lisp。
1 比CL精炼一些,同样的程序,clojure比CL要短
2 生态环境优良,可用的、稳定的库远丰富于CL,由于建立在jvm之上,任何java下可用的库、框架、工具集都能直接在clojure中以clojure自己的方式进行调用(而常用的java库往往都有非常好的clojure wrapper)
3 作为一个lisp dialect,至今没有什么大的分裂,虽然有clojure、cljs(编译成javascript的)、clojureCLR(编译成.NET executable的),但大体上共享了同一套理念和方法,最重要的是,相同的核心函数库
4 核心库遵循简单原则,只包含必要而且稳定的函数、宏
5 宏比CL好写
6 内置STM无锁并发模型,对并发编程非常友好,另外由于支持netty等java上的传输框架,使得制作distributed program非常方便
缺点:
1 在jvm上运行,继承了jvm上的一些缺点(比如没有direct call的TCO,要用专门的special form包装起来)(不过可以转向cljs或clojureCLR弥补)
2 clojure程序运行效率虽高,但是启动非常慢
3 直接throw java错误栈,对调试不友好(不过有相当多针对java或者clojure的trace库/工具集)