分类: Java
2013-06-01 23:51:39
第一次正式接触Clojure时是在《七周七语言》这本书中。当然,是作为兴趣和爱好学习的。对于普通人来说,听到Clojure后的第一反应是:Clojure有什么用,我为什么要学习Clojure。抛开出版社那些连自己都不相信的宣传标语。我想这个问题最根本的答案还是——兴趣。
关于Clojure,无论是一些这本书中,还是Clojure的社区、及一些资料中,都会介绍Clojure的主要特性。比如:
- Clojure 是运行在 JVM 上的一种语言;
- Clojure 是 Lisp的方言之一;
- Clojure 是一种函数式编程语言;
- Clojure 提供了进行并行、并发编程的创新式解决方案;
- Clojure 是一种动态编程语言;
- Clojure 是动态的,同时也是强类型的(和Python、Ruby类似)。
在我看来,Clojure最大的优势在于其是在JVM上运行的带有LISP血统的函数式编程语言,同时更加适合于并行和并发。
Clojure在JVM上运行,所有的Clojure代码都编译成JVM上的字节码。虽说如此,但所有Clojure支持的属性在运行时也被支持。在JVM上运行,意味着Clojure可利用现有的Java类库。许多新语言最大的缺陷就是缺乏完善的类库,这一点Clojure完全不用担心。
LISP是一种传奇般的语言,但人们对其更多的了解是那个传奇般的括号。
这本书涵盖了Clojure编程的方方面面。是一本百科全书类型的,而不是简介类型的。相比之下人民邮电另一本《Clojure程序设计》在量上稍有不足。
从我看来,学习Clojure目的在于能拓宽视野,毕竟,计算机语言并不只有命令式这一种。同时众多函数式语言中,Clojure算是目前实用性较强的一门。而且Clojure也像时光机一样,透过她,可以了解到上实际50年代末诞生的LISP的一点情况。
另外,许多朋友也知道JVM上还有另外一种函数式编程语言——Scala。曾经看过一篇文章,说Scala的处理能力比不上Clojure。这一点,笔者没测试过。但感觉Clojure的接受程度比Scala还稍弱一点。而从语言的成熟度上,Clojure毫不逊色。
在笔者看来,Clojure推广的一个优点和缺点就是她有LISP的血统。如前所述,拥有LISP血统是其有点。但LISP拥有众多方言,这些方言又不完全兼容。在接触到Clojure之后,初学者最喜欢做的事情之一就是比较各个LISP方言,然后,就没有然后了。许多人可能因为理不清之间的关系,就丢掉了Clojure。其实这不是Clojure的错。。。