六年的专业Clojure开发

2021-05-06 15:55:53

10.05.2021永久链接在过去几年里,我和我的同事在文密文主忙着为我们的客户创造和维护十几个人。

我们有特权几乎完全使用Clojure和Clojurescript,因为这仍然是在2015年加入它们之前的教学中的有效战略技术决策。在这篇文章中,我喜欢列出一些优势和缺点日常真实生活使用语言及其生态系统。

语言和图书馆的稳定性:任何创建付费客户的实用价值软件的人都知道核心语言构造和图书馆的可靠性很重要。它支持可预测性,并最终在您想要从性能改进或错误修复中受益时从疯狂中省略。升级到图书馆或甚至Clojure本身的新版本是无风险的。作者和维护者真的会关心稳定性。如果您听取了富豪的HICKEY或STUART HALLOWAY的谈话,您就知道这并不巧合。 "唐' t打破东西!"是文化的一部分。

代码大小:如果您将Clojure中的一些惯用语句片段与更流行语言的等同语言进行比较,您可能会暗示整个Clojure代码基础通常比其他语言所达到的方式更小。现在,经过20多年的官方语言和Clojure超过5年,我可以坚定地说明你' LL达到相同的功能,一小部分代码。这影响成本:我的感受是我们现在建立一个只有一半的工作人员的系统,即我曾经在具有可比范围的项目上进行的项目。

寻找员工:Clojure'很远,远远落后于java或python等一般目的语言,因此鼓励较少的人们鼓励投资时间来学习概念并获得练习。似乎这使得招聘更加努力。通过组织和赞助年度:Clochured会议,通过组织和赞助德国语言的支持者来解决这一挑战。这有助于人员配置。但即使一家公司的知名度较低,它使用Clojure的事实也将吸引高级编程语言的AFICIONADO。如果这些开发人员享受他们的工作场所,他们通常会与雇主一起待命。所以我&#39

向学徒教语言:教义不断雇用学徒,所以我能够陪伴他们并帮助他们学习Clojure。它似乎,具有很少的编程经验的年轻思想非常迅速迅速拾起语言并变得富有成效。我假设这有两个主要原因:实际上是他们不需要大量的事情,而不是oo土地需要掌握。他们不需要找不到任何东西,换句话说,他们不需要克服做事的旧习惯。

需要一些学科:Clojure是一种语言,为我们提供了各种各样的选择解决方案。它施加了很少的仪式。例如,没有静态类型系统在编译时检查代码,但您可以使用Clojure规范在运行时获得数据的一些优势。这也用作文档,并且可能是用于测试数据的发电机。这取决于团队决定何时何地以及何时何地添加更多检查,限制和测试。如果团队错过了这个代码群可能更难理解和维护。实质上:伟大的自由是责任。

导航代码:维护或扩展现有代码库时,您通常需要查找引用函数或数据的特定位置。为了支持这种搜索特定标识符,命名是自我解释和一致的,更重要的是,因为没有通过类型系统建立的链接。为了减轻Clojure的这种弱点,您应该在可能的情况下使用合格的关键字。

文档变得更加重要:当你'重新了解一个调用其他非核心函数的函数,你' ll需要一个明确的想法,这些功能预期和返回了什么样的数据。没有任何数据类型声明,代码本身通常不会透露流过您函数的数据的样子。您' ll需要Clojure规范或更全面的文档来缓解此问题。您需要测试在REPT中孤立的感兴趣功能并不罕见,以清楚地了解数据的样子。

纯洁的承诺:任何实用的软件应用程序必须导致某些副作用。因此,即使Clojure强烈鼓励开发人员创建纯功能,您的系统将包含大量的部分,依赖于某些环境或导致副作用。诀窍是将这些作品急剧分开并保持拆卸部件小。没有任何纪律,你可以很容易地在任何地方传播副作用,并最终与典型的势不一性混乱。 Clojure可以轻松创建一个大多数纯粹的实现,但它没有强制执行此操作。为了确保这款和其他质量在Doctronic行为代码中的团队审查几乎每一个提交都晋升为主分行。

可重用性:这里的Clojure真的闪耀的地方&#39。由于大多数函数都是纯粹的并且在很少的常见数据结构上运行(大多数映射,向量和集合),因此可以非常容易地编写可重用的代码。我们只需通过将候选函数分离为常规项目源树中的自己的命名空间即可创建许多内部库。最终建立图书馆,我们将项目中的代码从项目repo中移动到一个新的git repo中,并将项目库jar包含在project.clj中作为依赖项。因此,我们有一个非常精简的过程,导致生产质量的可扣除资产。

启动时间:使用Clojure Uber-jar启动一个新鲜的JVM来培养应用程序才能获取显着的时间。我假设JVM类加载导致此延迟。因此,如果您考虑创建一个具有短网执行时间的命令行工具,那么您希望此运行时开销。

运行时稳定性:Clojure应用程序一般非常稳定。我记得在我过去的更大的Java项目中,我们总是必须进行一些负载测试,以便检测像内存泄漏或竞争条件等编程缺陷。通过Clojure,我们只能在找到真正的性能问题。

好的,在这篇文章变得太久之前结束了。该清单可能不完整,但我想我包括最近突出的最重要的方面。当我决定在2015年完全跳上这列火车时,我预计更令人不快的惊喜。现在,六年后,我已经证明了克洛杰和克罗哈州盾是真实世界的软件开发的实用而合理的选择,我仍然喜欢使用它们。