学习Clojure – 我应该对Java和更多知识有所了解

我最近开始学习Clojure,我的主要编程语言是Ruby,而且我没有任何Java经验。

  • 在使用Clojure时,哪些Java标准类是必须知道的?

    很显然,Clojure并没有包装所有的东西,Java的库提供了很多function。

    就像javadocs上有一大堆 – 我应该探索哪些?

  • 我在哪里寻找,如何安装第三方库(clojure和java的)?

    在Ruby中,我会访问Rubyforge或Rubytoolbox,git等,然后只是gem安装我觉得有趣的包。

  • 你会推荐哪种Clojure编辑器(学习曲线最低)?

    我试图用Enclojure来使用Netbeans,而这是我迄今为止最大的障碍:

    每个生成的项目都有一些xml文件,文件夹,库依赖关系等等,我的目的不知道。

    我正在做一些labrepl练习,想在一个新项目中单独尝试一些捆绑的库,但是这个简单的任务我不能完成:

  • 如何分发clojure程序?

    这与上面的问题非常相关。

  • 是否有任何clojure社区驱动的博客与新闻,代码提示等?

只有当你无法弄清楚如何使用Clojure的核心API或Clojure contrib库来完成某些工作时,才可以根据需要浏览javadoc 。

对于第三方图书馆,有Clojars 。 我不确定社区有多广泛,但这是一个很好的起点。 许多Clojure项目在github上托pipe,所以你可以尝试在那里searchclojure。

如果您已经知道Emacs,那么在Emacs中编辑Clojure会有很好的支持。 如果你不知道Emacs,不要同时学习Emacs和Clojure。 查看Clojure wiki上的入门页面,获取有关使用多个不同IDE的信息。 不幸的是,Clojure主页上的维基链接是错误的。

最后,请查看Planet Clojure了解关于使用Clojure进行各种不同事情的很多好博客文章,其中包括有用的入门文章。

使用Clojure时必须知道哪些Java标准类?

没有。 您可以通过googleing并在Clojure IRC频道提问。 随着时间的推移,你会学到你所需要的。 你可以研究java.lang和java.io类,但是在你需要它们之前你不需要它们。

我在哪里寻找,如何安装第三方库?

Leiningen是一个非常简单的maven-wrapper-kinda-thingy。 你可以使用它来进行依赖pipe理和作为代码的构build工具, http://github.com/technomancy/leiningen ,还有http://clojars.org/ ,其中许多Clojure库被放置在maven repo可以通过Leiningen和Maven访问。 http://www.assembla.com/wiki/show/clojure/Getting_Started

你会推荐哪种Clojure编辑器(学习曲线最低)?

这可能是Enclojure,或逆时针。 大多数Clojure用户使用Emacs,或者在较小程度上使用Vim。 Emacs是Lisp最好的编辑器,但是有一些学习曲线可以让人友好。 如果你不愿意学习一门语言和一个编辑器,那么你可能想要朝着Enclojure / Eclipse(逆时针)的方向前进。

是否有任何clojure社区驱动的博客与新闻,代码提示等?

http://planet.clojure.in/和Google组。;

如何分发clojure程序?

Leiningen和jar和uberjar命令最简单的方法。 你可以写你的代码,然后你可以把这个代码放在一个.jar文件中,并为它写一个启动脚本。 如果你不想,你甚至不需要把它放在一个jar子里。 Jar实际上只有在你实际编译你的代码时才有用,而且大部分的Clojure代码都没有被编译。 某些function需要补充,但是用处不大。

总而言之,Clojure IRC频道是非常有帮助和新手友好的。 没有先前的经验,进入JVM世界可能会很困难。 不要害怕停下来问问题。 我们在这里帮助。

在使用Clojure时,哪些Java标准类是必须知道的?

与Clojure相比,你不需要了解Java语言,尽pipe它有帮助。 最重要的知识是如何编译,如何设置类path,等等。 我已经用java编写了一些程序,但是我仍然觉得这有时候会让我绊倒。

  • 设置类path

通过一两个关于java的初学者教程也可能是有用的,但是不要花太多的时间在这个上。

  • 根据Oracle的devise标准,这里有一个可怕的配色scheme

我在哪里寻找,如何安装第三方库(clojure和java的)?

您可以使用leiningen自动pipe理每个项目的依赖关系。 (我已经编辑了我的答案的这一部分。经过进一步的评估,Leiningen几乎可以应用于所有情况。)

你会推荐哪种Clojure编辑器(学习曲线最低)?

我学会了爱emacs。 主要的java IDE都有自己的clojure风味(按成熟度递减的顺序):

  • Netbeans – enclojure
  • IntelliJ – la clojure
  • Eclipse – 逆时针

如果你有任何学习emacs的倾向,但是,这可能只是时间。 本教程是可笑的全面。

如何分发clojure程序?

在jar子里。

是否有任何clojure社区驱动的博客与新闻,代码提示等?

谷歌组和地球clojure 。

编辑 :增加了Leiningen的一揽子推荐。)

RubyLearning将会有一个为期一个月的免费Clojure课程,

http://rubylearning.com/blog/2010/03/09/clojure-101-a-new-course/

使用Clojure时必须知道哪些Java标准类?

Clojure是Java的一个彻底改变。 我build议你只专注于其中一个(clojure),而不是两个。 反正有很多东西要学。 使用一个基本的编辑器,尽可能地使用REPL。 clojure的一个很好的介绍是在这里和这里

我在哪里寻找,如何安装第三方库?

Clojure contrib是一个很好的开始http://github.com/richhickey/clojure-contrib另一个是leninmgenhttp://zef.me/2470/building-clojure-projects-with-leiningen

你会推荐哪种Clojure编辑器(学习曲线最低)?

只要使用记事本++或VIM。 这对你来说应该是足够的了。 我个人在Ubuntu下使用凯特,因为它给你的lisp代码格式。 硬核用户可能使用emacs(我真的很讨厌)

是否有任何clojure社区驱动的博客与新闻,代码提示等?

Clojure谷歌集团是友好的,非常有知识

  • 对于博客你需要看看星球Clojure
  • 对于Java – 你至less需要知道java.lang&java.io
  • 对于IDE描述,最好看一下入门页面
  • 对于使用第三方库,您可以使用Leiningen或Maven构build工具 – 它们都提供依赖关系的自动parsing。 入门页面包含所有必要的信息
  • Clojure程序的分配通常实现为提供源代码(或编译)的jar。 你可以只将你的代码捆绑到“lein jar”中,或者用“lein uberjar”命令提供所有依赖的完整解决scheme

Best First Clojure IDE: Nightcode

要专注于Clojure,直到你击败IDE和工具的学习曲线:get Nightcode它最初是为了让初学者在没有浪费一半时间的情况下在emacs上进行,但是它变得更加有用。 基本上它把function,让你启动和运行在一个简单的包。

它在窗口的一个angular落有一个普通的Clojure REPL,在编辑区域下可以旋转第二个REPL,它可以访问到目前为止编写的函数。 快速键击运行你刚刚在REPL中写下的行。 对于clojure优化的编辑,你有一个button来打开/closuresparedit(主动pipe理圆括号与击键包装/解包/等)。 它可以部署一套随时可用的模板,以准备就绪的状态启动项目。 有一个单击button来创build一个jar(单个文件的Java可执行文件)。 它具有GIT集成function,可以在不需要安装GIT的情况下从github上拔下来。
我确定JDK(java开发工具包)是正确制作jar所必需的。 但是我已经能够使用最近的Java运行时间将Nightcode下载到任何一台计算机上并且工作(这是一个Java jar,不需要安装)。

您将使用Leinengen并学习更多编辑; 但是要真正开始编程而没有吸食灵魂的启动困惑,Nightcode是一个很棒的工具。

我同意几乎所有关于我所知道的事情的其他build议。 还有两点还没有人提出:

  1. 初学者应该学习关于如何使用具有适当的文件名和目录名称的命名空间的标准Clojure约定,并虔诚地遵循这些约定。 (也许Nightcode可以避免这种情况 – 我不知道 – 但是一旦你开始使用Leiningen,你就无法避免它)。如果你不这样做,命名空间的问题会很快让你疯狂,只要你超越琐碎的实验。 Colin Jones关于命名空间的教程是我刚开始时发现的最好的起点。 一些约定实际上来自Java,但是你不需要为了学习而学习任何Java。

  2. 起初,您可能根本不需要第三方库。 取决于你想做什么。 标准的Clojure库覆盖了很多地方。

如果你想学习基础知识并做一些练习, Clojurecademy是一个好的开始。