在没有Java知识的情况下学习Clojure

时间:2009-01-31 00:53:45

标签: java lisp clojure

好的,所以我对另一个名单感到很兴奋。我得到了一份beta Clojure编程书的副本......

我最注意的一件事就是假设我知道......就像所有主要的java类一样。

除了一般情况,我并不真正关心Java。我只是想要足够的知识,让Clojure成为我的选择。

有关如何正确学习我需要的所有建议吗?

7 个答案:

答案 0 :(得分:22)

实际上,虽然Clojure是在考虑Java开发人员的情况下开发的,但它并没有为 Java程序员编写

  

Clojure旨在在Java环境中很好地互操作。

尽管如此,但这并不是它为设计的(至少不是“Java环境”的语言部分)。而“Java环境”意味着语言和JVM以某种方式相互连接,使它们成为一体。他们不是。 Conjure是一种原生JVM语言(与Jython或JRuby不同),它使用一个构建良好的虚拟机来生活。

  

就像Greg说的那样,Clojure是用Java构建的,除非你想真正进入Clojure的软件事务存储系统,否则我会说要检查一个不同的Lisp。

不,抱歉。 Clojure不是“用Java构建”。它是为JVM构建的。如果您愿意,可以使用Java库,但这不是必需的(虽然它很有用)。如果你不想学习Java,那么建议使用不同的Lisp。这是荒谬的。 Clojure不是Java;它意味着成为一流的Lisp。顺便说一句,这意味着以某种方式增强Lisp,使其更具现代性和功能性。它与Java合作的能力应被视为奖励,而非责任。

  

正如Greg上面指出的那样,Clojure和Groovy等语言的目标主要是JVM,因此Java开发人员可以充分利用这两个领域。

也错了。出于上述原因。它们不是为Java开发人员编写的。很抱歉在这里如此直言不讳,但我没有在这些回复中看到有关Clojure的一篇有根据的帖子,我今天刚刚了解了Clojure!如此轻易地看到这种有害的建议是令人沮丧的。

我将以Rick Hickey(编写Clojure的人)的引言结束:

“你可以讨厌Java并喜欢JVM。”

他接着说,这就是他的立场。

答案 1 :(得分:19)

我对你的主要建议,你已经通过购买Programming Clojure完成了。我多年来一直避免和厌恶Java,并且(编程)Clojure对它进行了修复,以至于语言让我感到兴奋。谁曾想过一个着名的繁重系统会让你以交互方式(map #(.getName %) (.getMethods (class "")))?查看“使用Java,3.5将Ant项目和任务添加到Lancet”,以便从我熟悉的 Ruby 样式进行探索。

如果你在Freenode #clojure,也加入## java。获取Java API documentation并保持方便。在网络上搜索Java answer您要执行的操作,并或多或少直接翻译to Clojure

编辑:在clj:

user=> (use 'clojure.contrib.javadoc)
nil
user=> (keys (ns-publics 'clojure.contrib.javadoc))
(*remote-javadocs* javadoc find-javadoc-url add-remote-javadoc
*core-java-api* add-local-javadoc *local-javadocs*)
user=> (javadoc "this is a java.lang.String")
true  (browses to http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html)
user=> (javadoc java.net.ServerSocket)
true  (...)
user=>

答案 2 :(得分:8)

格雷格没有冒犯,但我不同意。学习Clojure也是掌握Java世界的绝佳机会。在我生命中的某一天,我从未用过Java编程,而且我正在学习Clojure并热爱它的每一分钟。当然我不知道所有课程,但我没看到这本书假设你知道所有课程。无论哪种方式,Java都不是学习Clojure的必要条件。

答案 3 :(得分:1)

你应该能够通过Google和StackOverflow获得你需要的东西,但是希望能够访问这两者,直到你对Java的标准库有一个良好的感觉。

就像Greg说的那样,Clojure是用Java构建的,除非你想真正进入Clojure的软件事务内存系统,否则我会说要检查一个不同的Lisp。 Java当然不是必需的,但是不必在Clojure的标准库之上学习标准库是一个巨大的障碍。

答案 4 :(得分:1)

你可以在不学习Java的情况下学习Clojure,但了解一点基础知识总是好的。您可以使用Clojurecademy来学习Clojure,它具有像Codecademy那样的交互式(动手实践)教学模式。

答案 5 :(得分:0)

正如Greg上面指出的那样,语言 Clojure和Groovy一样是针对JVM的一个主要原因,因此Java开发人员可以充分利用两个世界。所以,如果你想学习Lisp,Scheme或Common Lisp将是一个很好的开始!

答案 6 :(得分:-1)

如果你对Clojure的所有Java方面都不感兴趣,也许你最好学习另一种Lisp方言,比如Common Lisp或Scheme。 Clojure旨在在Java环境中很好地互操作。