It would be to your benefit to learn all three, if only so you can pick which one is best for your needs. All three have their own strengths and weaknesses.
Clojure is vaguely like Scheme in that it's a mostly-functional language and is a Lisp1. Clojure also borrows things from Common Lisp, like multimethods and macros, and people are always porting cool Common Lisp things to Clojure as libraries. The creator of Clojure was himself a Common Lisp hacker before writing Clojure. Clojure borrows a lot of terminology and conventions from Scheme and CL both (but also has its own flavors in many areas).
There is not a lot of literature for Clojure right now, it being such a new language (there is only one Clojure book so far). But there are loads of good Scheme-oriented books, like SICP and The Little Schemer / The Seasoned Schemer. There are also good CL books, like PCL, and many others.
Lisps also have a lot of history and it is to your benefit to understand the history, to see where and why Clojure deviates from it if nothing else.
I'd recommend starting with Scheme because it's the simplest language of the three and therefore easiest to learn. Then dabble in CL and Clojure until you have a handle on things, then go full-steam in whichever of the two you gravitate toward.
For your purposes I think you are safe to just start learning Clojure. The differences between Lisp and Scheme (and Clojure itself for that matter) shouldn't be a concern especially if you are just starting to learn.
My first Lisp learning experience was with Scheme, I've never touched Common Lisp (felt it was too complex), and am now starting on Clojure.
I used Dorai Sitaram's "Teach Yourself Scheme in Fixnum Days" to learn Scheme and got fairly far though I never really found myself wanting to use Scheme in real projects.
Clojure, because it purportedly gives nice, clean access to the huge universe of J2SE/J2EE libraries, on the other hand, encourages me to relearn this Lisp dialect because it may finally be of practical use.
As for which one to start with, I would say Scheme is simpler and so might be more appropriate to start with. On the other hand, if you have good Java and Python knowledge, you might not mind diving straight into Clojure because, unlike Scheme, it contains elements of these other two languages (e.g. data structures reminiscent of Python and JVM/Java API centric tutorials) and the familiar terrain might help.
Since I did come from all three (Java, Python, Scheme), I find myself in a good position to appreciate just what Clojure brings to the table that is different from Scheme. I'm no experienced Schemer, but I'd say that if you immediately start with Clojure, you will still get the general Lisp experience, so you definitely won't be missing that by forgoing Scheme.
It depends on whether you want to focus on learning or playing. If you really want to study Lisp, Scheme is a good place to start. If you'd rather play as you're learning Clojure is a better fit.
Eventually I think Clojure might be a better learning language. It's support for concurrency is really eye-opening. Few languages make it so simple for a beginner to write concurrent programs.
发布评论
评论(4)
学习这三者对你来说是有好处的,这样你就可以选择最适合你需要的一个。这三个人都有自己的优点和缺点。
Clojure 有点像Scheme,因为它是一种主要功能性语言,并且是 Lisp1< /a>. Clojure 还借用了 Common Lisp 的东西,比如多方法和宏,人们总是将很酷的 Common Lisp 东西作为库移植到 Clojure 中。 Clojure 的创建者在编写 Clojure 之前本身就是一名 Common Lisp 黑客。 Clojure 借用了Scheme 和CL 的大量术语和约定(但在许多领域也有自己的风格)。
目前关于 Clojure 的文献并不多,它是一种新语言(只有 到目前为止一本 Clojure 书)。但是有很多好的面向计划的书籍,例如 SICP 和 小阴谋家/经验丰富的阴谋家。还有一些不错的 CL 书籍,例如 PCL 等。
Lisps 也有很多历史,了解历史、了解 Clojure 在哪里以及为什么偏离它(如果没有别的事情的话)对你是有好处的。
我建议从Scheme 开始,因为它是这三种语言中最简单的,因此最容易学习。然后涉足 CL 和 Clojure,直到您掌握了一切,然后全力以赴地学习您喜欢的两者中的任何一个。
It would be to your benefit to learn all three, if only so you can pick which one is best for your needs. All three have their own strengths and weaknesses.
Clojure is vaguely like Scheme in that it's a mostly-functional language and is a Lisp1. Clojure also borrows things from Common Lisp, like multimethods and macros, and people are always porting cool Common Lisp things to Clojure as libraries. The creator of Clojure was himself a Common Lisp hacker before writing Clojure. Clojure borrows a lot of terminology and conventions from Scheme and CL both (but also has its own flavors in many areas).
There is not a lot of literature for Clojure right now, it being such a new language (there is only one Clojure book so far). But there are loads of good Scheme-oriented books, like SICP and The Little Schemer / The Seasoned Schemer. There are also good CL books, like PCL, and many others.
Lisps also have a lot of history and it is to your benefit to understand the history, to see where and why Clojure deviates from it if nothing else.
I'd recommend starting with Scheme because it's the simplest language of the three and therefore easiest to learn. Then dabble in CL and Clojure until you have a handle on things, then go full-steam in whichever of the two you gravitate toward.
出于您的目的,我认为您开始学习 Clojure 是安全的。 Lisp 和Scheme(以及Clojure 本身)之间的差异不应该是一个问题,特别是如果您刚刚开始学习的话。
For your purposes I think you are safe to just start learning Clojure. The differences between Lisp and Scheme (and Clojure itself for that matter) shouldn't be a concern especially if you are just starting to learn.
我的第一次Lisp学习经历是Scheme,我从未接触过Common Lisp(感觉它太复杂),现在开始学习Clojure。
我使用 Dorai Sitaram 的“Teach Yourself Scheme in 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 而错过这一点。
My first Lisp learning experience was with Scheme, I've never touched Common Lisp (felt it was too complex), and am now starting on Clojure.
I used Dorai Sitaram's "Teach Yourself Scheme in Fixnum Days" to learn Scheme and got fairly far though I never really found myself wanting to use Scheme in real projects.
Clojure, because it purportedly gives nice, clean access to the huge universe of J2SE/J2EE libraries, on the other hand, encourages me to relearn this Lisp dialect because it may finally be of practical use.
As for which one to start with, I would say Scheme is simpler and so might be more appropriate to start with. On the other hand, if you have good Java and Python knowledge, you might not mind diving straight into Clojure because, unlike Scheme, it contains elements of these other two languages (e.g. data structures reminiscent of Python and JVM/Java API centric tutorials) and the familiar terrain might help.
Since I did come from all three (Java, Python, Scheme), I find myself in a good position to appreciate just what Clojure brings to the table that is different from Scheme. I'm no experienced Schemer, but I'd say that if you immediately start with Clojure, you will still get the general Lisp experience, so you definitely won't be missing that by forgoing Scheme.
这取决于你想专注于学习还是玩耍。如果你真的想学习 Lisp,Scheme 是一个很好的起点。如果您想一边学习一边玩,Clojure 更适合。
最终我认为 Clojure 可能是一种更好的学习语言。它对并发的支持确实令人大开眼界。很少有语言能让初学者如此简单地编写并发程序。
It depends on whether you want to focus on learning or playing. If you really want to study Lisp, Scheme is a good place to start. If you'd rather play as you're learning Clojure is a better fit.
Eventually I think Clojure might be a better learning language. It's support for concurrency is really eye-opening. Few languages make it so simple for a beginner to write concurrent programs.