学习Clojure - 我需要了解Java和更多什么?

37

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

  • 在使用Clojure时,必须了解哪些Java标准类?

    显然,Clojure并不包含所有内容的封装,很多功能都是由Java库提供的。

    在javadocs上有无数的类 - 我应该探索哪些类呢?

  • 如何查找和安装第三方库(clojure和java)?

    在Ruby中,我会访问Rubyforge或Rubytoolbox、git等,然后只需gem install我感兴趣的包即可。

  • 您推荐哪个Clojure编辑器/IDE(学习曲线最低)?

    我试图使用带Enclojure的Netbeans,但这是迄今为止我遇到的最大障碍:

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

    我正在做一些labrepl练习,并想在新项目中单独试用一些捆绑的库,但这个“简单”的任务我无法完成 :/

  • 如何分发Clojure程序?

    这与上面的问题有很大关联。

  • 是否有任何Clojure社区驱动的博客,提供新闻、编码技巧等信息?


如果将其拆分为单独的问题可能会更好。不过这是一个好问题。 - Adrian Mouat
8个回答

13

如果你无法通过 Clojure核心APIClojure贡献库 解决问题时,需要使用javadocs

对于第三方库,可以使用Clojars。虽然不确定社区是否广泛采用,但它是一个很好的开始。许多Clojure项目都托管在github上,因此您可以尝试在那里搜索clojure。

如果您已经了解Emacs,可以在其中良好地支持编辑Clojure。如果您不了解Emacs,请不要同时学习Emacs和Clojure。请查看Clojure wiki的入门页面以获取有关使用多种不同IDE的信息。遗憾的是,Clojure主页上的维基链接是错误的。

最后,请查看Planet Clojure,以获取大量关于使用Clojure解决各种不同问题的博客文章,包括有关入门的有用文章。


2
Clojars看起来很丑,因为没有浏览或分类功能。 - edbond

8

在使用Clojure编程时,必须了解哪些Java标准类?

没有必须了解的。你可以通过谷歌搜索和在Clojure IRC频道上提问来解决问题。随着时间的推移,你会学到所需的知识。你可以研究java.lang和java.io类,但在需要它们之前不需要它们。

我应该在哪里查找并如何安装第三方库?

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

我会尽力帮助您翻译。以下为所需内容:

你推荐使用哪个Clojure编辑器/IDE(学习曲线最低)?

可能是Enclojure或Counterclockwise。大多数Clojure用户使用Emacs,或者较少的情况下使用Vim。Emacs是Lisp最好的编辑器,但需要一些时间来适应。如果您不想学习一门语言和一个编辑器,您可以选择Enclojure/Eclipse(counterclockwise)。

有没有关于Clojure的社区驱动博客提供新闻、代码技巧等信息?

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

如何分发Clojure程序?

最简单的方法是使用Leiningen和jar与uberjar命令。您可以编写代码,然后将该代码放入.jar文件中,并为其编写启动脚本。如果您不想这样做,甚至不必将其放入一个jar中。Jars只有在实际编译代码时才真正有用,而大多数Clojure代码并不需要编译。某些功能需要编译,但它们并没有被广泛使用。

总的来说,Clojure IRC频道非常有帮助且适合新手。没有先前的经验进入JVM世界可能会很困难。不要害怕进来提问。我们在这里帮助你。

8
当使用Clojure时,必须了解哪些Java标准类?
并不是说你必须要了解Java语言,尽管这有帮助。最重要的知识是如何编译,如何设置类路径等等。我已经在Java中编程过一段时间,但有时仍然会遇到问题。
以下是一些相关链接:
- 设置类路径 可能还有必要浏览一两个Java初学者教程,但不要花太多时间。
以下是一个颜色丑陋的教程链接(按照Oracle的设计标准):
- 这里 如何查找和安装第三方库(Clojure和Java)?
您可以使用Leiningen自动管理每个项目的依赖关系。(我已经编辑了我的答案的这部分。经过进一步评估,几乎所有情况下都应该选择Leiningen。)

您推荐哪个Clojure编辑器/IDE(学习曲线最低)?

我喜欢使用emacs。主要的Java IDE都有自己的Clojure版本可用(按成熟度递减顺序):

  • Netbeans - Enclojure
  • IntelliJ - La Clojure
  • Eclipse - Counterclockwise

如果您有任何学习emacs的倾向,那么现在可能正是时候了。本教程非常全面。

如何分发Clojure程序?

以jar的形式。

是否有任何由Clojure社区驱动的博客,提供新闻、代码技巧等内容?

Google GroupPlanet Clojure

编辑:增加了对Leiningen的全面推荐。)


4
必须了解哪些Java标准类才能在使用Clojure时工作?Clojure是与Java截然不同的语言。我建议您只关注Clojure,不要混乱两个语言。无论如何都有很多东西要学习。使用基本编辑器,并尽可能多地使用REPL。一个好的Clojure入门介绍可以在这里找到:此链接此链接
在哪里查找和如何安装第三方库?Clojure contrib是一个很好的起点此链接。另一个是Leninmgen - 此链接
你会推荐哪个Clojure编辑器/IDE(带最低的学习曲线)?只需使用Notepad ++或vim即可,这已经足够了。我个人在Ubuntu下使用Kate,因为它提供了LISP代码格式化。那些硬核用户可能使用Emacs(我真的很讨厌)。
是否有任何由Clojure社区驱动的博客,涉及新闻、代码技巧等?Clojure Google群组很友好且知识渊博。

4

很不幸,链接已经失效了 :( - microspino
@microspino 真遗憾。另一方面,我曾经教授这些课程,但现在已经不在Rubylearning了,所以信息也会过时。 - Michael Kohl

3
  • 对于博客,您需要查看Planet Clojure
  • 对于Java - 您至少需要了解java.lang和java.io
  • 有关IDE的描述,最好查看入门页面
  • 使用第三方库可以使用Leiningen或Maven构建工具-它们都提供自动解决依赖项。 入门页面包含所有必要的信息
  • Clojure程序的分发通常实现为提供具有源代码(或编译)的jar。 您可以使用'lein jar'将仅限于您的代码进行捆绑,或者使用'lein uberjar'命令提供带有所有依赖项的完整解决方案

1
在你神奇地使用lein uberjar解决问题之前,你实际上需要为你的项目创建一个project.clj。 - Rayne

1

最佳的Clojure IDE:Nightcode

如果想要集中精力学习Clojure,直到掌握IDE和工具链,那么就使用Nightcode。 它最初是为了让初学者可以不用花费太多时间在emacs上而制作的,但它变得越来越有用。 基本上,它将让您快速上手所需的功能放在一个简单的软件包中。

它在窗口的一个角落里有一个通用的Clojure REPL,并且在编辑区域下方旋转第二个REPL,该REPL将可以访问到您已编写的函数。快速按键运行您刚刚在REPL中编写的行。对于Clojure优化的编辑,您有一个按钮用于打开/关闭paredit(使用按键进行主动管理括号包装/取消包装等)。 它可以部署一组准备好的模板,以便在准备好编码的状态下启动您的项目。有一个单击按钮可创建jar(单文件Java可执行文件)。它具有GIT集成,可以从github拉取和推送,而无需在计算机上安装GIT。
我确定JDK(Java开发工具包)对于正确制作jar是必要的;但是我已经能够下载Nightcode到任何具有最新Java运行时的计算机上并开始工作(它是一个Java jar,无需安装)。
您将使用Leinengen并学习更多的编辑器;但是为了开始实际编程而不会感到灵魂被吸干的启动混乱,Nightcode是一个很棒的工具。

0

我同意几乎所有我所知道的其他建议。这里有两个其他人还没有提到的要点:

  1. 初学者应该学习标准的Clojure约定,了解如何使用命名空间以及适当的文件名和目录名,并且要虔诚地遵循这些约定。(也许Nightcode可以避免这一点-我不知道-但是一旦你开始使用Leiningen,你就无法避免它。)如果你不这样做,一旦你超越了琐碎的实验,命名空间问题将很快让你发疯。Colin Jones关于命名空间的教程是我在刚开始学习时找到的最好的起点。顺便说一下,其中一些约定实际上来自Java,但你不需要为了它们而学习任何Java。

  2. 你可能一开始根本不需要第三方库。这取决于你想做什么。标准的Clojure库涵盖了很多领域。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接