Clojure是否从初学者的角度更接近Scheme或Common Lisp?

时间:2009-09-11 20:00:21

标签: lisp clojure scheme

如果我想学习Clojure,我应该从学习Scheme还是Common Lisp开始?

或者Clojure与这两者有什么不同,我应该自己开始学习Clojure?

4 个答案:

答案 0 :(得分:41)

如果只有这样,你可以选择哪一种最适合你的需要,这对你有好处。这三者都有各自的优点和缺点。

Clojure与Scheme类似,因为它是一种功能最强大的语言,而且是Lisp1。 Clojure还借用了Common Lisp中的东西,比如多方法和宏,人们总是把很酷的Common Lisp东西移植到Clojure作为库。在写Clojure之前,Clojure的创建者本身就是一名Common Lisp黑客。 Clojure从Scheme和CL中借用了许多术语和约定(但在许多领域也有自己的风格)。

目前没有很多关于Clojure的文献,它是一种新语言(只有one Clojure book so far)。但是有很多好的面向方案的书籍,如SICPThe Little Schemer / The Seasoned Schemer。还有很好的CL书籍,比如PCL,以及许多其他书籍。

Lisps也有很多历史,了解历史,了解Clojure在何处以及为什么会偏离它,对你有利。

我建议从Scheme开始,因为它是三者中最简单的语言,因此最容易学习。然后涉足CL和Clojure,直到你掌握了东西,然后在你倾向于的两个中的任何一个中全力以赴。

答案 1 :(得分:16)

出于您的目的,我认为您开始学习Clojure是安全的。 Lisp和Scheme(以及Clojure本身)之间的区别不应该是一个问题,特别是如果你刚刚开始学习。

答案 2 :(得分:6)

我的第一个Lisp学习经历是使用Scheme,我从未接触过Common Lisp(感觉它太复杂了),现在我开始使用Clojure。

我使用Dorai Sitaram的“在Fixnum Days中自学计划”来学习Scheme并且相当远,但我从未真正发现自己想要在实际项目中使用Scheme。

Clojure,因为它据称可以很好地,干净地访问巨大的J2SE / J2EE库,另一方面鼓励我重新学习这个Lisp方言,因为它最终可能具有实际用途。

至于哪一个开始,我会说Scheme更简单,因此可能更适合开始。另一方面,如果你有很好的Java和Python知识,你可能不介意直接进入Clojure,因为与Scheme不同,它包含这些其他两种语言的元素(例如数据结构让人联想到Python和JVM / Java API中心教程)熟悉的地形可能有所帮助。

由于我确实来自三者(Java,Python,Scheme),我发现自己处于一个很好的位置,可以欣赏Clojure带来的与Scheme不同的表格。我没有经验过Schemer,但我会说,如果你马上从Clojure开始,你仍然可以获得一般的Lisp经验,所以你绝对不会错过那个通过推出Scheme。

答案 3 :(得分:3)

这取决于您是否要专注于学习或游戏。如果你真的想学习Lisp,那么Scheme是一个很好的起点。如果您喜欢在学习Clojure时更适合玩。

最终我认为Clojure可能是一种更好的学习语言。它对并发的支持真的令人大开眼界。很少有语言能让初学者编写并发程序变得如此简单。