Clojure的优点

时间:2010-06-15 15:45:13

标签: clojure

有人可以指出Clojure的优势以及它适合哪种类型的应用程序?

我不打算将它与任何语言进行比较。作为一种语言本身适合什么?我的目的是为正确的工作知道正确的工具,以及在这种情况下clojure适合的地方。

2 个答案:

答案 0 :(得分:17)

优点:

  • 功能性编程的所有好处,没有纯粹的紧身衣
  • lispy:允许使用后期绑定,宏,多方法的动态紧凑代码
  • Java互操作性
  • 可以编写函数来排序抽象而不是特定的数据结构
  • 并发的好东西:功能数据结构,软件事务内存
  • 在JVM上运行:可移植性和快速垃圾收集

适合:

  • 自下而上的设计
  • 嵌入式语言
  • 高度并发的应用程序

可能不适合:

  • 您想要静态输入的情况
  • 如果您希望语言适合静态分析
  • 任何需要快速启动时间的内容
  • 成群无知的Java猴子

答案 1 :(得分:10)

一般来说,我发现clojure的强点(没有特别的顺序):

1)REPL以交互方式尝试。

2)默认情况下,一切都是不可变的,并且可变性有几个精心选择的标准模式,可以在多线程环境中以安全的方式修改状态

3)尾部递归是明确的。直到JVM上有对尾递归的适当支持,这可能是最好的折衷方案

4)非常富有表现力的语言,有利于功能性方法而不是命令式方法。

5)与Java平台的良好集成使得在Java库中混合使用变得轻而易举

6)Leiningen作为构建和依赖管理工具与clojars网站一起

好的,第6点与语言perse无关,但绝对是我喜欢使用它。

关于应用程序,它针对多线程应用程序,但现在的方式可能意味着任何事情,因为当用户等待时,所有人都试图保持所有这些核心忙碌。另一方面,显然很多人使用它来部署到基本上是单线程的Google App Engine。

功能方法在我(有限的)实现数据转换和计算的经验中运行良好。可以通过应用程序“流式传输”信息和事件的位置。 Web应用程序主要属于这一类别,我们将请求“转换”为“响应”。

但我仍然必须在真实的​​生产代码中使用它。目前我将它用于个人项目和原型设计/基准测试。