我已经读过Clojure vs. Scala的各种论述,而我意识到两者都有自己的位置。关于将Clojure和Scala进行比较时,有一些注意事项尚未得到完整的解释:
1.)两种语言中哪一种通常 更快 ?我意识到这从一种语言功能到另一种语言功能都会有所不同,但是对性能进行总体评估会有所帮助。例如:我知道Python字典的速度非常快。但作为一个整体,它是一个 多 比Java慢语。我不想和Clojure一起去解决这个问题。
2.)与Java的互操作性如何?到目前为止,我所读到的只是Scala具有本机集合类型,使其与大型Java代码库集成有点笨拙,而Clojure遵循一种简单的以Iterable / Iterator为中心的方式来与Java类进行互操作。还有其他想法/细节吗?
最终,如果Clojure和Scala之间的距离足够近,我可能会同时尝试它们。关于Clojure的一件事是该语言似乎 非常 简单。但是话又说回来,Scala具有非常灵活的类型系统。但是,我知道Scala速度很快(基于多个个人帐户)。因此,如果Clojure的速度明显慢一些:我想早点知道。
我认为这两种语言对您来说都足够快。在比较Python和Java时,将速度差异归咎于该语言似乎有点不合理。Java是经过编译的JIT(移动设备上除外),而Python是经过解释的。仅仅因为两者都使用字节码并不意味着实现将具有与远程相当的性能。但是Scala和Clojure都是JVM语言,因此它们应该具有相似的性能。
与Clojure相比,Scala具有一些实现上的优势,我希望它具有更高的性能。尽管Scala的静态类型通常会比Clojure的鸭子类型具有更快的速度,但是Clojure 确实 支持类型提示,这可以显着加快代码的速度。可能,普通的Scala比普通的Clojure快,但是您只需要优化瓶颈即可。程序的大部分运行时间是由少量实际代码生成的。
关于带有Java的互操作,Scala更接近Java,但是我确信两种语言都可以很好地互操作。在 编程Clojure的 斯图尔特哈洛韦写道:“[您可以访问] 任何你能够从Java代码实现。 ”。
自从Scala的作者Martin Odersky 编写了 Sun的Java编译器以来,我还认为Scala方面也没有任何问题。:-)
您将很难选择两种更好的语言,尽管我也喜欢Ruby。您为什么担心尝试哪个?为什么不同时尝试它们呢?Scala更有可能成为“下一个Java”,尽管很难想象Lisp会在50多年后终于起飞。但是很明显,Lisp处于其自己独特的抽象水平,并且Clojure非常简单,因此Scala + Clojure不会比仅仅是(相当复杂的)Scala难得多,而且我敢肯定,您会感到高兴它。
为此,他们可以互操作…