<分区>
我的问题的目的是不是开始一场口水战,而是要确定每种语言在什么情况下是“完成这项工作的最佳工具”。
我读过几本关于 Clojure 的书( Programming Clojure 、 Practical Clojure 、 The Joy of Clojure 和 Clojure in Action 的 Manning 抢先体验版),我认为这是一门很棒的语言。我目前正在阅读 Let Over Lambda它主要处理 Common Lisp 宏,而且它也是一种非常有趣的语言。
我不是 Lisp 专家(更多的是新手),但这个语言家族让我着迷,就像一般的函数式编程一样。
Clojure 的优点(以及“其他”的缺点):
在 JVM 上运行。
JVM 是一种非常稳定的高性能语言环境,非常符合 Sun 的“编写一次,[几乎]随处运行”的梦想。我可以在我的 Macbook Pro 上编写代码,将它编译成一个可执行的 JAR 文件,然后在 Linux 和 Microsoft Windows 上运行它,几乎不需要额外的测试。
(Hotspot 和其他)JVM 支持高质量的垃圾收集和非常高效的即时编译和优化。就在几年前,我用 C 编写了所有必须快速运行的东西,现在我毫不犹豫地用 Java 来实现。
标准、简单的多线程模型。 Common Lisp 有标准的多线程包吗?
用
[]
、{}
和#{}
打破了所有括号的单调,尽管 Common Lisp专家可能会告诉我,使用阅读器宏,您可以将它们添加到 CL。
Clojure 的缺点:
- 在 JVM 上运行。
- 没有尾递归或延续。 Common Lisp 是否支持延续?我相信,Scheme 需要对两者的支持。
其他人的优点(尤其是 Common Lisp)(以及 Clojure 的缺点):
用户可定义的阅读器宏。
其他优势?
想法?其他区别?