Clojure

Reify Health

2020年11月30日

Reify Health

你使用 Clojure 或 ClojureScript 多久了?

我们在Reify Health使用 Clojure 和 ClojureScript 进行生产已有四年了。它是现有功能和所有新功能开发的主要语言。

使用 Clojure 或 ClojureScript 的团队规模有多大?

我们有超过20名开发人员使用 Clojure 和 ClojureScript 开发我们的前端和后端服务。

你使用 Clojure 或 ClojureScript 构建了什么产品或服务?

我们提供基于云的产品,以帮助加速新型救命疗法的开发。我们服务于全球药物开发行业:数百个临床研究机构和许多排名前20位的制药公司。

我们的旗舰解决方案 StudyTeam™ 在开发时充分理解,无论是研究机构还是赞助商,都需要互相依赖才能有效地进行临床试验。对于研究机构来说,StudyTeam 使入组工作流程更简单、更直观。对于赞助商来说,StudyTeam 提供了关于招募和入组表现的丰富且可操作的洞察。对于两者而言,StudyTeam 加速了入组,改善了研究机构和赞助商之间的关系,并帮助团队快速、可预测且自信地实现其入组目标。

你最喜欢使用哪个 Clojure 或 ClojureScript 库?

我们从 Clojure 的spec获得了巨大的收益。除了数据验证和测试之外,我们还使用自定义生成器来用样本数据填充数据库,并用真实信息填充 UI,使我们的设计团队能够在不搭建后端的情况下处理用户体验。

使用 Clojure 或 ClojureScript 的什么方面为你提供了最大的价值?

Clojure 具有很强的表达能力。它继承了 Lisp 的传统,这意味着从想法到表达的差距非常小。序列抽象及其扩展的标准库、不可变数据结构、一流的主机平台互操作性和动态、REPL驱动的工作流程,使 Clojure 具有极高的生产力。但如果语言发生剧烈变化,API 出现重大变更,这些生产力提升很容易付诸东流,而 Clojure 始终坚持稳定性,才得以避免这种情况。

你最喜欢的 Clojure 或 ClojureScript 功能是什么?

Clojure/Script 有很多值得喜爱的地方,归根结底都是优秀的设计。它的设计源于在行业中的经验,并承担着高效、可靠地交付产品的责任。目前有很多关于编程语言的研究,但很少有研究像 Clojure 这样如此了解软件工程师的日常工作。这一点体现在将不可变性和并发性作为一等公民、序列操作模式在所有数据结构上都能直观地工作、REPL 用于提供快速的反馈循环以及对维护向后兼容性的重视。

你的技术栈是什么?

我们尝试过一些配置。在前端,我们使用过 om.next 和re-frame,最终标准化为后者。我们在后端使用过CompojureLiberatorhttp-kit,但现在我们更喜欢Pedestal。我们大量使用 clojure.spec,我们的数据库主要是 Postgres。Kafka 在组织中的作用也在不断增长。

使用 Clojure 或 ClojureScript 对你的业务有什么价值?

Clojure 表达能力强。作为一种 Lisp 语言,Clojure 本身很小;表达想法为代码只需要很少的语法或样板。我们相信这种区别很重要。我们赞赏 Clojure 高的信号噪音比,并认为它使程序更小,缺陷更少。

Clojure 实用性强。语言和主机平台之间的一流互操作性使我们能够访问为 JavaScript 或 JVM 编写的数千个高质量库。实际上,同一语言可以在浏览器和服务器上运行,这意味着我们可以获得双倍的收益。

Clojure 是函数式的。我们不仅想说它鼓励使用不可变值的特定编程风格,这种风格天生更容易推理,而且还意味着它非常适合构建我们需要编写的软件。我们还没有找到比它更适合处理信息的工具。

总之,Clojure 是一种面向工作程序员的语言,我们还有很多工作要做。

如果你想分享你的 Clojure 故事,请填写此表格