我一直在阅读Structure and Interpretation of Computer Programs。 Lisp正在教我思考它的方式。作为一名java开发人员,我想学习clojure。
我知道clojure类似于lisp。所以我的问题是,学习Lisp能帮助我轻松学习clojure吗?两种语言都有类似的概念吗?
答案 0 :(得分:6)
Clojure与其他Lisps有许多相似之处。 SICP是一本很好的书,虽然它专注于Scheme,但它教授的很多东西都与Clojure直接相关。
如果你倾向于使用一个Lisp,那么接收另一个会更容易。
然而,有一些关于Clojure的事情让它变得“与众不同”值得关注:[]
,哈希映射{}
和集#{}
以及传统列表()
扩展了经典的Lisp语法。答案 1 :(得分:5)
带上一粒盐;我是一名Common Lisper,有一些Scheme经验刚刚开始使用Clojure,所以我还不是专家。您可能想要谷歌其他人的经历。
看起来Clojure和CL / Scheme之间的区别主要在于细节。总体原则或多或少相同,假设您已经了解其他Lisp之一,那么学习Clojure似乎不会显着改变您对编程的看法。甚至在Scheme中也更加强调不变性和函数式编程,并且一些函数的命名方式不同,你需要平衡parens / bracket / curlies而不仅仅是parens,但这几乎与语言级别有关。
在学习了CL / Scheme之后,我觉得到目前为止我的Clojure时间比其他方式要容易得多。
最后的想法是,即使你打算再也不去看Scheme,通过SICP和accompanying lectures工作是值得的。它教授了许多通常有用的CompSci原则,以及一种特殊的思维方式,它可以帮助您作为开发人员使用您最终使用的任何语言。
答案 2 :(得分:3)
每种语言都有自己的细微差别。你目前正在学习Lisp的小怪癖(假设是Common Lisp / CL),但是选择另一种语言,更不用说第二种Lisp方言了,你也会学习那些怪癖/差异/细微差别。
除非你有足够的时间学习,否则如果你对编程感兴趣,我会学习Clojure,如果你对编程感兴趣,我会学习Lisp。
学习Lisp并不是一件坏事,因为你会习惯于学习Lisp方言与基于Algol-C的语言有何不同。就此而言,可以对学习方案提出同样的论点。
在Clojure之前,我用相似的语言编程,但即使Bliss-32和PL / I IMHO更类似于C和Java,它们也是Lisp方言。我需要学习Clojure - 并且仍然需要 - 比从C到C ++(90年代)的心理调整更大。
我喜欢重新调整,但它是渐进的,有学习曲线。
答案 3 :(得分:2)
我走了同样的道路,因为我的一个朋友是一个老Lisper让我学习了Lisp的兴趣。他在70年代初就开始黑客攻击,并为一些Lisp公司工作。每当我们谈论编程语言时,他都会参考Lisp中的概念,我觉得我从来没有完全掌握它的内容。
学习Lisp对我来说是一个很好的Clojure开始,我最终得到了Clojure,因为我正在寻找能够在ARM CPU上运行的Lisp。在我看来,Lisp不那么复杂,因为它没有与Java VM集成,并且在不了解Java的情况下,理解Clojure比使用Lisp要困难得多。我只能说,对Lisp有一个很好的基本理解肯定在学习Clojure时帮助了我。
答案 4 :(得分:0)
可能它会有所帮助,但每种方言都有自己的动态,所以你需要学习那些动态/概念。如果你想从Clojure开始,我建议你Clojurecademy这是一个交互式平台,教我为新手创建的Clojure编程语言。