Clojure的优点

Ris*_*ogi 17 clojure

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

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

Nat*_*hes 18

好处:

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

适合:

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

可能不适合:

  • 你想要静态类型的情况
  • 如果您希望语言适合静态分析
  • 任何需要快速启动时间的东西
  • 大群无能的Java猴子

  • 这是旧帖,但只是说强打字不仅仅是为了表现.在所有最新的Javascript VM快速无需静态类型或类型提示之后.它们在执行时推断类型并相应地重新编译代码.强大的打字功能是更好的工具支持.编译器发现许多明显的错误,IDE提供辅助重构.在检查代码时,您可以轻松找到函数的所有调用者,所有接口的实现......主要问题是更详细和更少的通用性. (4认同)
  • 我喜欢"成群无知的Java猴子"这一部分. (3认同)
  • 关于强类型 - 到目前为止,我在Clojure 1.2中使用类型提示得到了不错的结果.我认为,如果你真的想要明智的使用,你可以获得强大打字的大部分好处.... (2认同)

Pet*_*ans 10

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

1)REPL以交互方式尝试.

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

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

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

5)与Java平台的良好集成使得混合使用Java库变得轻松无忧

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

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

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

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

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