3

我正在认真考虑让 Clojure 成为我的新黑客语言,因为我喜欢 Lisp,但在 CL 和 Scheme 方面存在一些问题。我以前从未在 Java 环境中工作过,我的 lisp 经验仅限于通过“SICP”和“The Little Schemer”工作。

我需要知道什么?关于“Clojure 方式”有什么好的资源吗?关于 Clojure 风格的任何资源?我找到了 Mark Volkmann 的优秀页面,但我浏览过的书似乎有点多余。

另外,关于Java,我需要了解什么?我宁愿不学习 Java 只是为了学习 Clojure,但我想我至少必须知道一点。另外,工作流程是什么样的?我的经验仅限于动态语言,所以我不知道在 JVM 上分发没有源的应用程序需要做什么。

我显然已经用谷歌搜索了这个,但是有大量的信息,而不是很多“clojure 特定”的东西。

我想我正在寻找一些关于我应该以某种逻辑顺序阅读的文学类型的明智建议。

4

2 回答 2

15

在 Blip.tv 上观看尽可能多的Clojure视频是不会出错的,尤其是 Rich Hickey 本人的视频。这些确实有助于理解 Clojure 独有的概念点和方面。

如果您对 Lisp 概念足够熟悉,您可能希望最初专注于学习 Clojure 如何“映射”到您使用过的 Lisp。观看 Rich Hickey 的“Clojure for Lisp Programmers”视频。

您确实需要熟悉 Java,因为 Clojure 不会回避使用它。在智能的地方使用 Java 并不是不符合 Clojurey 的(据我所知)。我至少会浏览一下 和 包的API文档,因为在您的 Clojure 程序中自动可用并且经常使用。java.langjava.iojava.langjava.io

有了我的 Clojure-to-Lisp 字典和我的 Java 基础知识,我会选择一个小项目来处理. 将 Clojure 和 Clojure-contrib API 文档放在手边(在 Web 上或使用 REPL 中的 (doc) 命令),并仔细阅读那里的许多 Clo​​jure 博客。我最喜欢的两个是http://nakkaya.com/http://stuartsierra.com/。如果您使用 Diigo,大量博客已被收藏到clojure 组

注意:不要挂断您的开发环境。入门 wiki 页面上列出了许多选项。为了学习 Clojure 和你的第一个小项目,我会选择你选择的纯文本编辑器,学习和使用Leiningen的基础知识来获得一个很好的项目目录设置,并处理好你的所有路径和依赖项,然后使用命令“ lein repl" 启动一个 REPL 并加载所有依赖项并可用。假设您使用 Emacs(基于您之前的 Lisp 经验),您可以describe-variable成为inferior-lisp-programlein repl并且只需从示例项目的根目录启动 Emacs,一切都可以自动运行。

您可以阅读一些书籍,尤其是 The Joy of Clojure、Programming Clojure 和 Practical Clojure。后两者比第一个更“实用”,后者更“哲学”(请原谅粗略的概括)。实用 Clojure 与 Clojure 1.2 是最新的,而编程 Clojure 有点老。

最后,进入#clojure IRC 频道并使用 Clojure Google 群组,因为这里有一群聪明、友好的人,他们乐于帮助他人。

于 2011-01-21T22:20:34.937 回答
2

只是从另一个方向(Java -> Clojure)来到 Clojure 的人的快速视角

  • 实际上,一旦掌握了语法和常用习语,我发现 Clojure 的 Lispy 部分很容易学习。我希望这对你来说会更容易。
  • 大多数事情你并不需要太多的Java知识——如果你愿意,你可以用纯Clojure做几乎所有事情。
  • 可能只有当您开始想要使用 Java 库时,您才需要深入研究 Java 互操作。幸运的是,互操作非常简单——它更像 LISP 风格而不是 Java 风格,所以您唯一需要弄清楚的是如何理解 Java 接口并从 Clojure 端进行适当的调用。

对于我的环境,我使用Eclipse +逆时针。如果您喜欢 IDE 和/或认为您最终可能也想在 Java 中做一些工作,这会非常有效。它不需要进一步的依赖,为您提供出色的调试器,具有完整的 REPL(我相信是嵌入式nREPL),完成所有项目文件管理(Git、SVN 等)并自动为您处理 Java 类路径设置(其中可能是 Java 新手的主要障碍!)。如果您认为这可能适合您的风格,我建议您检查一下,我也听说过有关Enclojure的好消息。

如果您不喜欢 IDE,那么您可能最好使用您最喜欢的文本编辑器和命令行工具,正如 semperos 在他的出色回答中所建议的那样。

于 2011-01-22T12:28:45.827 回答