Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Clojure进行新开发的最佳用例是什么?_Clojure - Fatal编程技术网

使用Clojure进行新开发的最佳用例是什么?

使用Clojure进行新开发的最佳用例是什么?,clojure,Clojure,为什么我要选择Clojure而不是另一种语言来进行新项目?它在哪些方面表现出色?冒着提供Devin所指的那种还原性非答案的风险:我选择Clojure是因为我喜欢函数式编程风格,Clojure允许我在JVM上这样做,并与JVM上运行的大量现有代码进行互操作 于是问题就变成了:为什么要进行函数式编程 不变状态-没有副作用,更容易测试,更好地支持并发性(以及将来的并行性) 小型、功能性组件,易于重用和组合,以构建大型、灵活的系统。很难找到clojure开发人员,因此如果你在一家大公司工作,坚持使用ja

为什么我要选择Clojure而不是另一种语言来进行新项目?它在哪些方面表现出色?

冒着提供Devin所指的那种还原性非答案的风险:我选择Clojure是因为我喜欢函数式编程风格,Clojure允许我在JVM上这样做,并与JVM上运行的大量现有代码进行互操作

于是问题就变成了:为什么要进行函数式编程

不变状态-没有副作用,更容易测试,更好地支持并发性(以及将来的并行性)


小型、功能性组件,易于重用和组合,以构建大型、灵活的系统。

很难找到clojure开发人员,因此如果你在一家大公司工作,坚持使用java或.net,我会远离它。对于大公司来说,这更像是一个政治决策,而不是技术决策。但是,如果您正在构建自己的产品,那么clojure的开发速度非常快,可以让您更快地进入市场。

我将使用clojure的一些场景:

  • 您正在构建一个新的、高度并发的、需要可靠扩展的应用程序。在我看来,Clojure的并发特性(STM、默认不可变、无锁MVCC)是目前所有主流语言中最好的。关于身份和国家是一个很好的方式来获得这种感觉

  • 您是一家基于Java的商店,需要一种高效的动态语言,该语言可用于快速开发或脚本编写,同时保持您对大型Java代码库的投资。我发现Clojure在“粘合”Java代码方面非常有效,因为互操作功能非常好(而且非常简单!)

  • 如果你想使用一种函数式编程语言Clojure非常好(它不像Haskell那样“纯粹”,但具有所有关键特性——一流函数、高阶函数组合、不变性、惰性)

  • 如果您工作的领域主要需要代码操作(编译器、DSL、自然语言处理、遗传编程),那么LISP“代码就是数据”理念可以让您的工作效率极高。这通常是基于LISP语言的最佳选择


这有点像鸡和蛋的场景,如果没有人采用Clojure,很难找到开发人员。如果更多的公司采用它,市场上将有更多的开发商。鉴于Lisp/Clojure基本上没有语法需要学习,核心函数文档非常优秀(有几本关于Clojure的好书),而且这些概念一旦掌握,几乎可以统一应用于语言的各个部分,我认为这是一种非常容易掌握和/或交叉培训开发人员的语言。是的,的确,这种语言的语法很小,而且很容易学习。我认为,一旦Clojure获得了一个杀手级的框架,比如Ruby的Rails,或者像IBM这样的大公司使用Clojure进行项目,那么它就会发展得更快,并被更多的大公司使用。你可以随时将Clojure作为“增强并发编程的Java库”引入……:-)