17

好的,所以我对另一个列表感到兴奋。我给自己买了一本测试版 Clojure 编程书……

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

除了,一般来说,我并不真正关心 Java。我只是希望有足够的知识让 Clojure 成为我的选择。

关于如何学习我所需要的一切的任何建议?

4

6 回答 6

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。”

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

于 2009-04-12T06:20:07.330 回答
19

我对您的主要建议是,您已经通过购买 Programming Clojure 完成了。多年来,我一直在回避和厌恶 Java,并且(编程)Clojure 对其进行了充分的修复,以至于该语言现在让我兴奋不已。谁会想到一个以繁重着称的系统会让您进行交互(map #(.getName %) (.getMethods (class "")))?浏览“使用 Java,3.5 将 Ant 项目和任务添加到 Lancet”,以我熟悉的Ruby风格进行探索。

如果你在Freenode #clojure ,也加入 ##java。获取 Java 的API 文档并随身携带。在 Web 上搜索您想做的事情的Java 答案,并将其或多或少地直接翻译成 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=>
于 2009-01-31T15:50:19.260 回答
9

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

于 2009-01-31T11:51:03.237 回答
1

您应该能够通过 Google 和 StackOverflow 找到您需要的东西,但希望在您对 Java 的标准库有一个很好的感觉之前访问这两个网站。

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

于 2009-01-31T01:06:19.323 回答
0

正如上面的 Greg 所指出的,Clojure 和 Groovy 这样的语言以 JVM 为目标的主要原因之一是,Java 开发人员可以两全其美。所以,如果你想学习 Lisp,Scheme 或 Common Lisp 将是一个很好的开始!

于 2009-02-11T04:11:34.097 回答
-1

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

于 2009-01-31T01:01:14.607 回答