clojure 开发_clojure入门_clojure scala

电脑杂谈  发布时间:2017-04-16 07:12:22  来源:网络整理

开发团队之所以选择将某些功能块作为微服务来实现是有很多原因的。我认为最重要的原因有:

代码重用:多个团队可以利用你所构建的内容。例如,检索(search)、文件存储(file storage)或pub/sub。clojure 开发

使用微服务可以独立于应用程序对功能进行扩展

可以自由地进行技术选择

本文重点讨论以上三点。

这是属于微服务架构的一个非常重要的属性。微服务意味着每个服务都很小。clojure 开发至于有多小通常取决于公司或团队,但我听说有些微服务的代码不超过100行,还有些微服务有几千行代码(如果是Java代码,我仍然认为它很小)

既然微服务意味着每个服务都很小,所以鼓励开发人员可以使用他们认为的最好技术。如果事实证明那是很糟糕的选择,也没关系-我们就当学习了,并且会考虑将这些新知识用于未来的项目。既然微服务的代码多半只有几百行,所以有时开发团队甚至有可能决定用另一种更合适的语言重写微服务。

这都很好。但是既然可以完全自由地进行技术选择,那么为什么不选择Clojure呢?

"Lisp是用秘密的外星人技术开发的语言。" — lisperati.com

Clojure是运行在Java虚拟机上的现代Lisp语言。基于JVM有很多优点:

经过数十年的人力投入,JVM的运行速度很快。

在一个广泛的问题域中有非常多的功能强大的库。你只需集中精力去解决问题而无需一切从头开始。

JVM被广泛应用于一些小型和大型企业;应用JVM意味着开发的产品会被更多用户采用。

所以说,JVM很好,并且我们也在使用着Java。那为什么还要转换语言呢?

是这样, Java具有它自己的一些折衷方式。但它缺少其它平台认为理所当然应该具有的功能-比如lambdas,尽管Java 8已经对此进行了修正。Java的类型系统限制过多,并且其类型推断也不够理想。Java也没有,使其代码过度繁琐。

另外Java一般的开发反馈周期太长。为了运行、测试程序,在一天内可能需要多次重启JVM - 哪怕你只是修改一行代码 (HotSwap热部署补丁对此有所缓解)。由于所需的结构数量也仅仅是开始,因此实验变得很难。最后,交互式开发环境的缺乏也让人受不了。

“学习Lisp几周后,我发现用其它任何一种语言编程都有难以忍受的约束。” — Paul Graham, Road to Lisp

如果我们还必须经历这种传统的开发周期的话,那么我们所有的能力将被耗尽: 改变源码->重新编译/重新开始运行时(runtime)-> 运行代码以查看结果/进行测试-> 清除, 重复。

但是对于每天都要进行开发,这意味着什么呢?

这使得使用Clojure进行开发更多地属于实验驱动。探索的成本最低,因此最终通过REPL提高了程序质量。这也适用于测试,对于运行它们同样也是成本低效果佳。

"选择不可变性(immutability),看看它的效果。" — Rich Hickey, Clojure creator

Clojure和其它的Lisp“方言”不同之处在于它的独特的函数式编程方法。正如很多其它的语言一样,Clojure 也支持高阶函数。这意思是说函数是第一等公民,函数可以用作参数也可以作为其它函数的返回值。

但是在默认情况下Clojure中的数据是不可修改的。如果你创建了一个map、一个list、一个vector等等,根据定义都是不可修改的,一旦创建就无法改变。

这有许多好处:

不可修改的数据结构在默认情况下是线程安全的,这使得开发并发软件变得更简单;

你可以很容易地查看历史记录;

没必要担心其它的代码路径会修改你的数据。这根本不可能发生;


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shumachanpin/article-41617-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 李瑶
      李瑶

      也应该鼓励三两大龄剩女合嫁一夫

    • 黄海颖
      黄海颖

      吹吧~~~~~~也不怕牛皮吹破了~~~~~正视敌人~~~~正视敌我之间的差距~~~~~~才是强国强军之道~~~~可怕的不是敌人的强大~~~~~~而是自己的愚蠢~

    • 席翎瑞
      席翎瑞

      公司正在筹划进军蛋白饮品领域

    热点图片
    拼命载入中...