我提出这个问题的目的不是发动一场火焰之战,而是确定每种语言在什么情况下是“从事这项工作的最佳工具”。
我已经阅读了几本有关Clojure的书(编程Clojure,实用Clojure,Clojure 的喜悦以及Clojure in Action的Manning早期访问版),我认为它是一种很棒的语言。我目前正在阅读Let Over Lambda,它主要处理Common Lisp宏,它也是一种非常有趣的语言。
我不是 Lisp专家(更多的是新手),但是这种语言家族和函数式编程一样,让我着迷。
Clojure的优点(和“其他”的缺点):
在JVM上运行。
JVM是一种非常稳定的高性能语言环境,完全符合Sun的梦想:“编写一次,几乎可以在任何地方运行”。我可以在Macbook Pro上编写代码,将其编译为可执行的JAR文件,然后在不进行额外测试的情况下在Linux和Microsoft Windows上运行它。
(热点和其他)JVM支持高质量的垃圾收集以及非常高效的即时编译和优化。几年前,我编写了必须在C中快速运行的所有内容,而现在我毫不犹豫地在Java中这样做。
标准,简单的多线程模型。Common Lisp是否具有标准的多线程程序包?
用
[]
,{}
和打破所有括号的单调性#{}
,尽管Common Lisp专家可能会告诉我,使用阅读器宏,您可以将其添加到CL中。
Clojure的缺点:
- 在JVM上运行。
- 无尾递归或连续。Common Lisp是否支持延续?我认为,计划需要两者的支持。
他人的优点(尤其是Lisp的常见缺点)(以及Clojure的缺点):
用户可定义的阅读器宏。
其他优势?
有什么想法吗?其他差异?