4

我一直在阅读计算机程序的结构和解释。Lisp 正在教我以它的方式思考。作为一个java开发者,我想学习clojure。

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

4

4 回答 4

6

Clojure 与其他 Lisp 有许多相似之处。SICP 是一本很棒的书,虽然它侧重于 Scheme,但它所教的很多内容都与 Clojure 直接相关。

如果你精简了一个 Lisp,那么拿起另一个 Lisp 会容易得多。

然而,关于 Clojure 的一些事情使其“与众不同”值得注意:

  • []它用向量、散列图{}和集合#{}以及传统的列表扩展了经典的 Lisp 语法()
  • 与大多数其他 Lisps 相比,它在风格上更像是一种函数式编程语言——几乎所有东西都是不可变的,序列默认是惰性的等等。在某些方面,Clojure 感觉受到 Haskell 的强烈影响
  • Clojure 在很大程度上拥抱了 Java 平台——它在 JVM 上运行,您可以轻松地直接使用 Java 库。因此,尽管您不必严格了解 Java 才能在 Clojure 中发挥作用,但了解 Java 生态系统和工具会有所帮助。
  • Clojure STM 系统/对并发的支持非常创新和与众不同。值得观看此视频: http: //www.infoq.com/presentations/Value-Identity-State-Rich-Hickey
于 2012-08-20T14:27:51.403 回答
5

把这个和一粒盐一起吃;我是一名Common Lisper,有一些Scheme 经验,刚刚开始使用Clojure,所以我还不是专家。你可能想用谷歌搜索别人的经历。

看起来 Clojure 和 CL/Scheme 之间的区别主要在于细节。总体原则或多或少是相同的,假设您已经了解其他 Lisps 之一,学习 Clojure 似乎不会显着改变您对编程的看法。与在 Scheme 中相比,对不变性和函数式编程的重视程度要高得多,并且一些函数的命名方式不同,您需要平衡括号/括号/花括号,而不仅仅是括号,但这几乎是语言级别的。

在学习了 CL/Scheme 之后,到目前为止,我似乎在 Clojure 上的时间比以前要轻松得多。

最后的想法是,即使您打算再也不看 Scheme,学习 SICP 和随附的讲座也值得您花时间。它教授了许多普遍有用的 CompSci 原则,以及一种特殊的思维方式,可以帮助您作为开发人员使用您最终使用的任何语言。

于 2012-08-20T13:39:41.447 回答
3

每种语言都有自己的细微差别。你目前正在学习 Lisp 的一些小怪癖(假设是 Common Lisp/CL),但是学习另一种语言,更不用说第二种 Lisp 方言了,你也会学习这些怪癖/差异/细微差别。

除非你有大量的时间来学习,否则如果你对编程感兴趣,我会学习 Clojure,如果你对编程感兴趣,我会学习 Lisp。

学习 Lisp 并不是一件坏事,因为你会习惯于学习 Lisp 方言与基于 Algol-C 的语言的不同之处。就此而言,可以对学习方案提出相同的论点。

在 Clojure 之前,我使用类似的语言进行编程,但即使是 Bliss-32 和 PL/I 恕我直言,它们也更类似于 C 和 Java,而不是 Lisp 方言。学习 Clojure 对我来说是必需的——而且仍然需要——比从 C 到 C++(在 90 年代)进行更大的心理调整。

我喜欢重新调整,但它是渐进的,有一个学习曲线。

于 2012-08-20T13:41:37.950 回答
2

我走了同样的路,因为我的一个朋友是一个老 Lisper,出于兴趣让我学习 Lisp。他在 70 年代初开始黑客攻击,并为一些 Lisp 公司工作。每当我们谈论编程语言时,他都会提到在 Lisp 中发现的概念,我觉得我从来没有完全理解他所说的。

学习 Lisp 对我来说是进入 Clojure 的一个很好的开始,我最终选择了 Clojure,因为我一直在寻找能够在 ARM CPU 上运行的 Lisp。在我看来,Lisp 没有那么复杂,因为它没有与 Java VM 集成,而且如果不熟悉 Java,理解 Clojure 会比理解 Lisp 困难得多。我只能说,对 Lisp 有很好的基本了解肯定对我学习 Clojure 有帮助。

于 2012-08-20T19:25:27.637 回答