2017年4月24日
你使用Clojure或ClojureScript多久了?
Empear于2015年推出,我们从一开始就使用Clojure。在此之前,我使用Clojure做了一些副项目。Clojure是一个自然的选择。我一直是Lisp的忠实粉丝十年了,能够将Lisp与JVM的生态系统结合使用非常吸引人。
你团队中使用Clojure或ClojureScript的人数有多少?
我们目前有三位开发者,并且正在扩大规模。我们所有人都每天都在用Clojure编程。我们还有一些用Haskell和Python编写的小组件。
你用Clojure或ClojureScript构建什么产品或服务?
我们的主要产品是CodeScene。CodeScene是一个帮助软件项目通过识别和优先排序技术债务来提高效率的工具。我们采用了一种不同的软件分析方法,因为我们的结果是基于行为和社会数据。
我们主要的数据来源是版本控制库,CodeScene将这些库视为开发者与代码库交互的行为日志。这意味着我们可以根据系统的增长方式来进行优先排序,并且还可以将代码的社会维度纳入其中,让我们的客户发现团队生产力瓶颈,并节省招聘和离职成本。
我们维护着两个版本的CodeScene。一个是我们的云版本,https://codescene.io/,它是作为服务的分析。另一个是我们的CodeScene本地版本,我们的客户将其安装在他们自己的数据中心。
你最喜欢使用哪些Clojure或ClojureScript库?
Clojure的性质以及它与Java的紧密集成使得使用Clojure库更多地成为一种可选的便利性。我们喜欢的一些高质量库有Carmine、Timbre和Cheshire。我们还发现Ragtime对数据库迁移很有帮助。此外,我们还使用了一些用于统计和机器学习的库,尽管我们通常会自己实现核心算法。
使用Clojure或ClojureScript为你带来了哪些最大的价值?
Clojure最令人满意的方面是,这种语言让你可以专注于问题域。“数据是什么样的?我们应该如何在传递之前过滤和转换它?让我们在REPL中运行它,看看会发生什么。好的,现在把它放到一个函数中。写一个规范,用测试稳定它。”这种工作流程与人类解决问题的过程非常吻合。在实践中,它让我们能够快速地实现新功能。
你最喜欢的Clojure或ClojureScript特性是什么?
最重要的特性是Clojure的持久不可变数据结构。它们消除了一整类问题。不再需要担心其他东西会改变你的数据。
我们也喜欢Clojure spec。在使用spec之前,我们已经到了某些函数很难在隔离的情况下进行推理的程度。这意味着我们必须查看调用上下文才能找出代码操作的哪些数据结构以及它实际上做了什么。当然,这是所有动态类型语言都会遇到的问题,但由于Clojure鼓励高度抽象级别,这个问题似乎更加突出。spec通过使代码更容易推理来帮助了很多,在我看来,这是在软件开发中优化的最重要的方面。
你的技术栈是什么?
我们的Web系统使用基于Ring和Compojure的传统技术栈。渲染主要是在服务器端使用Selmer进行的,在顶层有一层薄薄的JavaScript。我们使用D3进行可视化。我们的云解决方案运行在亚马逊网络服务上。
使用Clojure或ClojureScript对你的业务有什么价值?
主要有两个原因。首先,在我们创业的时候,我是唯一的程序员,我知道我们必须快速迭代才能构建出有用的东西。这意味着我必须尽可能有效地利用我的时间。Clojure是一种使能者,它允许我快速地为一个新想法制作原型,评估它,然后迭代,直到我们有一个稳定的解决方案。这是Clojure的一个方面,我们现在仍然从中受益,因为我们正在探索一个新的领域,并进行分析。
第二个原因与技术无关。我选择Clojure来做Empear的主要原因之一是,这种语言看起来很有趣。而乐趣在软件行业中是一个被低估的激励因素;乐趣几乎可以保证事情能完成。
如果你想分享你的Clojure故事,请填写此表格.