我知道Clojure与Lisp相似。所以我的问题是,学习Lisp是否有助于我更容易地学习Clojure?这两种语言中是否有类似的概念?
[]
、哈希表{}
和集合#{}
扩展了经典的Lisp语法,以及传统的列表()
。请以谨慎的态度看待这篇文章。我是一位熟练使用 Common Lisp 和 Scheme 的程序员,最近才开始学习 Clojure,所以并不是专家。您可能需要在 Google 中搜索其他人的经验。
从表面上看,Clojure 和 CL/Scheme 之间的区别主要在于微小的细节。总体原则基本相同,假设您已经了解了其中一个 Lisp,那么学习 Clojure 不会显著改变您对编程的思考方式。与 Scheme 相比,Clojure 更加强调不可变性和函数式编程,有一些函数的名称不同,并且需要平衡圆括号/方括号/花括号而不仅仅是圆括号,但这几乎是语言层面的全部差异。
我发现,在学习 Clojure 方面,如果您已经掌握 CL/Scheme,会更加容易入门。
最后,即使您计划永远不再接触 Scheme,通过学习 SICP 和 配套讲座,也值得花费时间。它教授了许多通用的计算机科学原理,以及一种特定的思维方式,这将有助于您作为开发人员使用任何语言。
每种语言都有自己独特的细微差别。如果你正在学习Lisp的小窍门(假设是Common Lisp / CL),但是选择另一种语言,更不用说第二个Lisp方言了,你也会学习到这些怪癖/差异/细微差别。
除非你有大量时间去学习,否则我建议如果你对编程感兴趣,就学习Clojure,如果你对Lisp编程感兴趣,就学习Lisp。
学习Lisp并不是坏事,因为你会习惯于学习Lisp方言与Algol-C基础语言之间的区别。同样的论点也可以用来学习Scheme。
在Clojure出现之前,我使用类似的语言进行编程,但即使是Bliss-32和PL/I IMHO也更类似于C和Java而不是Lisp方言。学习Clojure需要我进行更大的思维调整,甚至比从C转向C++(在90年代)还要困难。
我喜欢这种思维调整,但它是逐渐的,需要一个学习曲线。
我曾走过同样的路,因为我的一位朋友是一位老Lisper, 他让我出于兴趣学习了Lisp。他早在70年代就开始编程,并曾为一些Lisp公司工作。每当我们谈论编程语言时,他都会提到Lisp中的概念,而我感觉我从未真正理解他的意思。
对我来说,学习Lisp是进入Clojure的好开始,最终我选择Clojure是因为我在寻找一种能够运行在ARM CPU上的Lisp。在我看来,Lisp不太复杂,因为它没有与Java虚拟机集成,如果不熟悉Java,理解Clojure比Lisp要困难得多。我只能说,在学习Clojure时,良好的Lisp基础知识确实对我有所帮助。