学习另一种口齿不清的方言是否更容易学习clojure?

时间:2012-08-20 12:59:39

标签: clojure lisp

我一直在阅读Structure and Interpretation of Computer Programs。 Lisp正在教我思考它的方式。作为一名java开发人员,我想学习clojure。

我知道clojure类似于lisp。所以我的问题是,学习Lisp能帮助我轻松学习clojure吗?两种语言都有类似的概念吗?

5 个答案:

答案 0 :(得分:6)

Clojure与其他Lisps有许多相似之处。 SICP是一本很好的书,虽然它专注于Scheme,但它教授的很多东西都与Clojure直接相关。

如果你倾向于使用一个Lisp,那么接收另一个会更容易。

然而,有一些关于Clojure的事情让它变得“与众不同”值得关注:

  • 它使用向量[],哈希映射{}和集#{}以及传统列表()扩展了经典的Lisp语法。
  • 它比其他大多数Lisp更像是一种函数式编程语言 - 几乎所有东西都是不可变的,默认情况下序列是懒惰的等等。在某些方面,Clojure受到Haskell的强烈影响
  • Clojure以一种很大的方式接受Java平台 - 它在JVM上运行,您可以直接轻松地使用Java库。因此,尽管您并不完全需要了解Java在Clojure中的有效性,但它有助于了解Java生态系统和工具。
  • Clojure STM系统/并发支持非常具有创新性和不同性。值得观看此视频:http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey

答案 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编程语言。