27

在发现Clojure之后,我花了几天时间沉浸其中。

哪些项目类型适合于 Java 而不是 Clojure,反之亦然,以及它们的组合?

在 Clojure 之前您从未尝试过的程序示例有哪些?

4

4 回答 4

14

Clojure 非常适合并发编程。它为处理线程提供了如此出色的工具,例如软件事务内存和可变引用。

作为 Western Mass Developer's Group 的演示,Rich Hickey 做了一个蚁群模拟,其中每只蚂蚁都是自己的线程,所有变量都是不可变的。即使有大量线程,事情也很好。这不仅是因为 Rich 是一位了不起的程序员,还因为他在编写代码时不必担心锁定问题。你可以在这里查看他关于蚁群的介绍

于 2008-10-08T13:39:05.443 回答
6

如果您打算尝试并发编程,那么我认为 clojure 比您从 Java 中获得的开箱即用的要好得多。查看此演示文稿以了解原因:

http://blip.tv/file/812787

我在博客上记录了我使用 Clojure 的前 20 天

http://loufranco.com/blog/files/category-20-days-of-clojure.html

我从 SICP 讲座开始,然后构建了一个平行的素数筛。我也玩过宏。

于 2008-10-08T13:40:47.340 回答
4

哪些项目类型适合使用 Java 而不是 Clojure,反之亦然,或结合使用?

需要 GUI 构建工具(例如 Netbeans 中的 Matisse)的项目可能仍需要 Java。在 Java 中完成的任何事情都可以在 Clojure 中轻松完成,如果需要,可以使用代理和 gen-class,或者只是根据需要访问 Java(.、doto、new 等)。这允许 Clojure 项目轻松使用 Java 库或遗留 Java 代码。

在 Clojure 之前,您从未尝试过哪些程序?

在我找到 Clojure 之前,我正在考虑一个需要 JDBC 的项目,该项目将在 servlet 容器中运行,并且我预计会进行大量迭代开发,因为不清楚哪些方法适用于我需要分析的数据。我把它放在次要位置,因为我没有时间或耐心进行 Java 所需的编译-调试-部署-验证循环。我现在已经在 Clojure 中编写了应用程序,我很高兴能够轻松地进行动态更改并能够立即检查结果。更不用说无锁编程的乐趣和从开发(和重构)类层次结构中解放出来的乐趣了。

-通过clojure@googlegroups.com邮件列表“MikeM”

于 2008-10-10T07:08:11.970 回答
2

哪些项目类型适合于 Java 而不是 Clojure,反之亦然,以及它们的组合?

如果你想开发一个供 Java 和 Clojure 使用的框架,我发现用 Java 编写主要抽象(接口和基类)比用 Clojure 编写它们更可取(我发现 Clojuregen-class有点乏味,而且而是使用proxy)。

如果您是 Hibernate 或任何其他大量使用 Java 注释而不提供编程替代方案的框架的用户,那么您将遇到一些麻烦,因为使用 Clojure 的数据结构模拟带注释的 POJO 并非易事。

除此之外,我还没有遇到过 Clojure 比 Java 更不适合的用例。当然,您必须应对静态类型的丢失,这起初感觉有些令人不安,但往往会消失。

于 2009-10-14T10:38:46.023 回答