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

在没有Java知识的情况下学习Clojure,java,lisp,clojure,Java,Lisp,Clojure,好吧,我对另一张名单感到很兴奋。我给自己买了一本beta Clojure编程书 我最注意到的一件事是假设我知道。。。就像所有主要的java类一样 不过,一般来说,我并不真正关心Java。我只是想让Clojure成为我的选择 关于如何学习我所需要的东西,有什么建议吗?如果您对Clojure的Java方面不感兴趣,也许您最好学习另一种Lisp方言,例如Common Lisp或Scheme。Clojure设计用于在Java环境中进行良好的互操作。您应该能够通过Google和StackOverflow很

好吧,我对另一张名单感到很兴奋。我给自己买了一本beta Clojure编程书

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

不过,一般来说,我并不真正关心Java。我只是想让Clojure成为我的选择


关于如何学习我所需要的东西,有什么建议吗?

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

您应该能够通过Google和StackOverflow很好地了解您需要的内容,但在您对Java的标准库有了良好的了解之前,您可以访问这两个库


正如Greg所说,Clojure是为使用Java而构建的,除非您真的想进入Clojure的软件事务性内存系统,否则我想使用不同的Lisp。Java当然不是必需的,但不必在Clojure的标准库之上学习标准库,这是一个巨大的进步。

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

我的主要建议是,您已经通过购买编程Clojure完成了。多年来,我一直回避和厌恶Java,而(编程)Clojure对它进行了足够的改造,现在这种语言让我兴奋不已。谁会想到一个以繁重著称的系统会让你以交互方式
(map#(.getName%)(.getMethods(class“”))
?浏览“使用Java,3.5将Ant项目和任务添加到Lancet”,了解我在Ruby中熟悉的风格

如果你在clojure,也加入java。获取Java,并将其放在手边。在网上搜索你想做的事情的答案,并或多或少地直接翻译出来

编辑:在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=>

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

嗯,实际上,尽管Clojure是与Java开发人员一起开发的,但它不是为Java程序员编写的

Clojure设计用于在Java环境中良好地互操作

尽管它确实如此,但这并不是它设计的目的(至少在“Java环境”的语言部分是如此)。“Java环境”意味着语言和JVM以某种方式相互关联,使它们成为一体。事实并非如此。Concure是一种原生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!看到如此轻易地给出这种有害的建议,真是令人沮丧

最后我将引用里克·希基(Clojure的作者)的一句话:

“你可能讨厌Java,喜欢JVM。”


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

这两个我都知道,在这方面我有好的和坏的看法。你是说我学习Clojure的唯一方法是在游戏中对Java有深刻的理解还是先学习Java?好吧,我不知道你是否熟悉其他Lisp选项。我的建议是,如果您对Java互操作性特性不感兴趣,那么Clojure在现有的Lisp背景下不会给您带来太多的新功能。也许你可以解释一下你在寻找什么。我在寻找一个健壮的、标准化的、独立于平台的Lisp。对于Windows编译器来说,Common Lisp真是糟糕透了,除非你把钱花在最重要的东西上。方案缺乏足够强大的标准化,极简主义是它的弱点。明白了。事实上,我现在正在做这样一个实现。它是用Python实现的,并与Python生态系统集成。更多信息请参见此处:如果您感兴趣,请随时与我联系。我一定会查看。我在IronPython方面做了很多工作,我可以说Python是一种有趣的小语言。正如我在上面回答的,我已经知道了CommonLisp和Scheme。我对免费编译器的整合水平和质量表示不满。Clojure编译到JVM,在某些情况下,JVM在代码发布方面远远优于JVM。。。我最近开始尝试学习Java。