Clojure有什么用?[关闭]


100

人们将Clojure用于哪些现实应用?

我将Groovy用于胶水,将Java用于大型系统,将Python / Perl脚本用于解析和胶水。我可以看到自己从Java调用Clojure,但看不到自己将在何处使用它。令我惊讶的是,几乎所有脚本语言都可以用于临时任务。

无论如何我都不是Groovy专家或狂热爱好者,但令我惊讶的是它具有更好的支持框架,工具和许多语言结构(闭包,函数式编程)。对于Scala也可以这样说。

它的未来是否会成为嵌入在其他系统中的语言?


23
除了给我做三明治外,其他一切。
小麦小食

12
@wheaties:您尝试过(sandwich me BLT)吗?
FrustratedWithFormsDesigner

3
为什么也不要将Clojure用于“大型系统”?ISTM,它的复杂性不如Java,因此在Clojure中不需要那么大。:-)
肯(Ken)2010年

2
查看答案-我猜人们正在将其用于一些很酷的东西。我想知道有多少企业会为长期发展而选择它?
Fortyrunner,2010年

1
我知道已经有很长的时间了,但是用一种功能语言编程需要敏锐的头脑。敏锐的头脑很昂贵,所以从商业角度来看,我不了解Clojure的LTD潜力–直到它比今天(五年后)普及得多。
肖恩·艾瑞德

Answers:


93

我将Clojure用于:

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

那是实用/有趣的东西。

但是Clojure也有很多理论深度。随着主流逐渐真正了解函数式编程的潜力,这些想法将变得越来越重要。

我个人认为,但Clojure提供了更好的语言构造,可以正确地组织软件,而不会影响我到目前为止在学术上和专业上使用过的所有语言(C,C ++,Objective-C,Java, JavaScript,Python,Ruby。

这并不是说Clojure是完美的。但是在我看来,它的建立是在比目前大多数情况下更好的基础上进行的。


你是大卫·诺伦吗?在“ Clojurescript:Lisp的复仇”上发表演讲的人。真是太棒了!
Amogh Talpallikar 2014年

1
//,您的意思是“为正确组织软件提供了更好的语言构造”?EG dev.clojure.org/display/community/Library+Coding+Standards
弥敦道(Nathan Basanese),2015年

2
现代硬件启动时间上的@maSnun大约为1秒或更短。这对于s​​hell脚本来说很好。
dnolen's

1
@dnolen感谢您抽出宝贵的时间回复。我是新的Clojure爱好者,尝试运行用lein uberjar创建的jar文件时大约需要20秒。我使用的是OS X,配备i5核心和1​​6GB RAM的Macbook。您是否使用任何特殊的优化?
masnun 2015年

5
@maSnun uberjars不是用于shell脚本,而是用于应用程序部署。优化应用程序是JVM的一个普遍问题,与Clojure无关。您可以像其他任何脚本语言一样轻松地使用Clojure编写哈希爆炸外壳脚本,这就是我的建议。
dnolen 2015年


18

Clojure被广泛用于处理大量数据。它非常适合数据挖掘/商业AI(即Runa)和大规模预测(也称为WeatherBill)。Clojure的并发案例确实对这些数据繁重的领域有所帮助,在这些领域中,并行处理只是唯一的答案。


13

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

Clojure特别适合于并发任务。它是从头开始构建的,是一种很棒的并发语言,它的STM系统很棒。如果您需要做一些与硬核并发相关的事情,Clojure可能特别适合该任务。

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

Clojure本身就是一种奇妙的语言,不一定是胶水语言。您可以在Clojure中从头开始构建系统,而无需直接接触Java代码。并不是说它不是一种很好的粘合语言,我知道很多人都这样使用它。

如果您有什么想法,最好的办法就是考虑选择哪种语言的解决方案是什么样的。如果在Groovy中看起来/感觉更好,请选择Groovy。它们都是完全不同的语言,并且都有其用途。


即使那样,我还是发现自己在编写CLI Clojure脚本,只是因为我发现该语言写起来很愉快,并且不介意启动时间。
芽市

7

您可以在使用Groovy或Java的任何地方使用Clojure。你为什么想这么做 ?有些人喜欢Lisp。那些将选择Grojuy而不是Clojuy。有些人不喜欢口齿不清。那些将选择Groovy。


2
这不仅是选择的要件,clojure具有许多其他语言都没有的功能)莫名其妙地没有人提起任何事情,我几乎不记得在会议上的演讲,所以在这里我无法写出正确的答案
Holms
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.