学习Clojure - 我应该了解Java等等

时间:2010-04-09 17:34:23

标签: clojure

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

  •   

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

    显然,Clojure没有包含所有内容和许多功能的包装器 由Java的库提供。

    在javadocs上有很多它们 - 我应该探索哪些?

  •   

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

    在Ruby中,我会访问Rubyforge或Rubytoolbox,git等,然后只需宝石安装我觉得有趣的软件包。

  •   

    你会推荐Clojure的编辑/思想(学习曲线最低)?

    我试图将Netbeans与Enclojure一起使用,而且矛盾的是它是迄今为止我最大的障碍:

    每个生成的项目都有一些xml文件,文件夹,库依赖等。我的目的不明白。

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

  •   

    如何发布clojure程序?

    这与上述问题非常相关。

  •   

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

9 个答案:

答案 0 :(得分:13)

仅在您无法使用javadocsClojure's core API了解如何执行操作时,根据需要探索Clojure contrib libraries

对于第三方库,有Clojars。我不确定它被社区采用的范围有多广,但它是一个很好的起点。许多Clojure项目都在github上托管,所以你可以尝试在那里搜索clojure。

如果您已经了解Emacs,那么可以很好地支持在Emacs中编辑Clojure。如果您不了解Emacs,请不要尝试同时学习Emacs和Clojure。查看getting started page on the Clojure wiki以获取有关使用多种不同IDE的信息。不幸的是,Clojure主页上的wiki链接是错误的。

最后,查看Planet Clojure,了解有关使用Clojure处理各种不同内容的很多好博文,包括有关入门的有用帖子。

答案 1 :(得分:8)

  

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

无。你可以通过谷歌搜索和在Clojure IRC频道上提问。随着时间的推移,您将了解自己的需求。您可以调查java.lang和java.io类,但在需要它们之前不需要它们。

  

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

Leiningen是一种非常简单的maven-wrapper-kinda-thingy。您可以将它用于依赖关系管理,并将其用作代码的构建工具http://github.com/technomancy/leiningen,并且http://clojars.org/可以将许多Clojure库放置在可以由Leiningen和Maven访问的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文件中并为其编写启动脚本。如果你不想,你甚至不必把它放在罐子里。只有在实际编译代码时,Jars才真正有用,并且大多数Clojure代码都没有编译。某些功能需要补充,但不会使用

总而言之,Clojure IRC频道非常有帮助且新手友好。没有先前的经验,很难进入JVM世界。不要害怕停下来问问题。我们来帮忙。

答案 2 :(得分:8)

  

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

对于Clojure而言,您不必了解Java语言,尽管它有所帮助。最重要的知识是如何编译,如何设置类路径等等。我已经在java中编程了一段时间,我仍然发现这有时会让我感到沮丧。

在java上学习一两个初学者教程可能也很有用,但是根本不需要花太多时间。

  

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

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

  

你会推荐Clojure的哪个编辑/思想(学习曲线最低)?

我学会了爱上emacs。主要的Java IDE都有自己的clojure风格(按成熟度降序排列):

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

如果你有学习emacs的倾向,那么这可能就是时候了。 This tutorial is ridiculously comprehensive.

  

如何发布clojure程序?

In jars.

  

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

google groupplanet clojure

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

答案 3 :(得分:4)

  

必须使用哪些Java标准类   知道什么时候与Clojure合作?

Clojure是Java的彻底改变。我建议你只关注其中一个(clojure),而不是两个。无论如何还有很多值得学习的东西。使用基本编辑器,尽可能多地使用REPL。 适用于clojure的好介绍在herehere

  

我在哪里寻找,我该怎么做   安装第三方库?

Clojure contrib是一个开始的好地方http://github.com/richhickey/clojure-contrib 另一个是列宁根 - http://zef.me/2470/building-clojure-projects-with-leiningen

  

Clojure的编辑/思想是什么?   推荐(学习成绩最低   曲线)?

只需使用notepad ++或vim。对你来说应该绰绰有余。我个人在ubuntu下使用kate,因为它为你提供了lisp代码格式。硬核用户可能使用emacs(我真的很讨厌)

  

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

Clojure google group友好且知识渊博

答案 4 :(得分:4)

答案 5 :(得分:3)

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

答案 6 :(得分:1)

最佳第一次Clojure IDE:Nightcode

专注于Clojure,直到你在IDE和工具上超越学习曲线:获得Nightcode 它最初是为了让初学者课程没有在emacs上花费一半的时间,但它只是越来越有用。 基本上它将这些功能放在一个简单的包中。

它在窗口的一角有一个通用的Clojure REPL,在编辑区域有一个旋转的第二个REPL,它可以访问你到目前为止所写的功能。快速按键会运行您刚刚在REPL中写下的行。对于clojure优化编辑,您有一个用于打开/关闭paredit的按钮(主动管理括号,带有按键以包装/解包/等)。 它可以部署一组现成的模板,以便在准备好代码的状态下启动项目。这是一个用于创建jar的单击按钮(单个文件Java可执行文件)。它具有GIT集成功能,无需在机器上安装GIT即可从中抽取并推送到github 我确信JDK(java开发工具包)对于正确制作jar是必要的;但是我已经能够将Nightcode下载到任何具有最新Java运行时的计算机上并且无需工作(它是一个Java jar,无需安装)。

您将使用Leinengen并学习更多编辑;但要开始实际编程而没有吸引灵魂的启动混乱,Nightcode是一个很棒的工具。

答案 7 :(得分:0)

我同意几乎所有关于我所知道事情的其他建议。以下是尚未有人提出的另外两点:

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

  2. 您最初可能根本不需要第三方库。取决于你想做什么。 standard Clojure libraries涵盖了很多方面。

答案 8 :(得分:0)

如果你想学习基础知识并做一些练习,

Clojurecademy是一个好的开始。