Clojure 有什么用?

人们使用 Clojure 的实际应用程序是为了什么?

我使用 Groovy 进行粘合,Java 用于大型系统,Python/Perl 脚本用于解析和粘合。我可以看到自己从 Java 调用 Clojure,但是我不知道在哪里可以单独使用它。对我来说,用几乎所有的脚本语言来完成临时任务会更容易一些。

无论如何,我不是 Groovy 专家,也不是 Groovy 的狂热粉丝,但是它有一个更好的支持框架、工具和许多语言结构(闭包、函数式编程) ,这让我感到震惊。Scala 也是如此。

它的未来会不会是作为一种嵌入到其他系统中的语言?

63043 次浏览

也许可以从 Rich Hickey 的 合理性开始。

至于现实世界的应用程序,这个来自谷歌组的 生产用途点名怎么样?

这个问题很难回答。你想干什么?Clojure 真正适合的东西并不多。我的意思是,由于 JVM 的启动时间(除非您使用的是 cake或类似的东西) ,对于一个离开命令行的脚本来说,这并不是很好,但是对于任何 JVM 语言都可以这样说。

Clojure 特别适合并发任务。它是从头开始构建的,是一种非常棒的并发语言,而且它的 STM 系统非常棒。如果您需要执行一些与并发相关的核心任务,Clojure 可能特别适合这项任务。

但是,必须记住,Clojure 是一种通用语言。它不仅适用于某些特定的领域,而且对于其他 JVM 语言可能适合的许多或所有事情都很有用。

Clojure 本身被设计成一种非常棒的语言,而不一定是一种粘合剂语言。你可以在 Clojure 从头开始构建系统,而不用直接接触 Java 代码。并不是说它不是一种很好的胶水语言,我知道很多人都是这样使用它的。

如果您已经有了想法,那么最好的办法就是考虑解决方案在任何语言中都是可选的。如果在 Groovy 中看起来/感觉更好,那么使用 Groovy。它们都是截然不同的语言,都有自己的目的。

我使用 Clojure 的目的是:

  1. 刮网页
  2. 外壳脚本
  3. 建立网站
  4. Playing around with OpenGL
  5. 编写异步网络服务器
  6. HTML 模板
  7. 运行并行任务(获取多个 URL 并并行处理)
  8. 用实时音频播放
  9. 模拟

这才是实用/有趣的东西。

But Clojure has plenty of theoretical depth as well. Ideas that will become increasingly more relevant as the mainstream comes to really understand the potential of Functional Programming.

个人观点,但是 Clojure 提供了更好的语言结构来正确地组织软件(不会给正常工作的程序员带来不必要的痛苦) ,这些语言包括迄今为止我在学术上和专业上使用过的所有语言—— C,C + + ,Objective-C,Java,JavaScript,Python,Ruby。

Which isn't to say Clojure is perfect. But it seems to me that it's built on a better foundation than most of what's out there.

Clojure 被广泛用于处理 大量的数据。它非常适合于数据挖掘/商业人工智能(例如: Runa)和大规模预测(又名 WeatherBill)。Clojure 的并发故事确实有助于解决这些数据量大的领域,并行处理是唯一的解决方案。

您可以在任何使用 Groovy 或 java 的地方使用 Clojure。 你为什么要这么做? 有些人喜欢 lisp,他们会选择 clojure 而不是 Groovy。 有些人不喜欢口齿不清,他们会选择 Groovy。