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

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

有帮助吗?

解决方案

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

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

现在没有很多关于Clojure的文献,它是一种新语言(只有迄今为止的一本Clojure书)。但是有很多很好的面向方案的书籍,比如 SICP Little Schemer / The Seasoned Schemer 。还有很好的CL书籍,如 PCL 等等。

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

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

其他提示

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

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

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

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top