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 獲得了極大的槓桿作用。除了資料驗證和測試之外,我們使用自訂產生器以範例資料種子資料庫,並以實際資訊填入使用者介面,讓我們的設計團隊能夠在不建立後端的情況下處理使用者體驗。

使用 Clojure 或 ClojureScript 對您來說最有價值的是什麼?

Clojure 具有強大的表現力。它的 Lisp 傳統意味著從一開始,想法和表達之間的差距就非常小。序列抽象及其廣泛的標準函式庫、不可變資料結構、一流的主機平台互操作性,以及動態、REPL 驅動的工作流程,都讓 Clojure 具有令人難以置信的生產力。但如果沒有 Clojure 對穩定性的堅定承諾,所有這些生產力提升都可能輕易地因語言變動和中斷 API 變更而喪失。

Clojure 或 ClojureScript 中您最喜歡的功能是什麼?

Clojure/Script 中有很多值得喜歡的地方,所有這些都歸結為良好的設計。它是根據在產業中工作的經驗以及承諾有效且可靠地交付而設計的。目前正在進行許多有趣的程式語言研究,但很少能找到如此了解軟體工程師日常工作的研究。這表現在不變性和並行性是一流的公民、序列操作模式直觀地處理所有資料結構、REPL 提供快速回饋迴路,以及維護向後相容性所付出的心力。

你的堆疊是什麼?

我們嘗試過一些組態。在前端,我們同時使用 om.next 和 re-frame,最後標準化在後者。我們在後端使用 CompojureLiberatorhttp-kit,儘管這些天我們偏好 Pedestal。我們大量使用 clojure.spec,而我們的資料庫大多是 Postgres。Kafka 的角色也在組織中成長。

為什麼使用 Clojure 或 ClojureScript 對你的業務有價值?

Clojure 是表達性的。作為 Lisp,語言本身很小;表達想法為程式碼時,只需要極少的語法或樣板。我們相信這個差異很重要。我們欣賞高訊噪比,並認為這會產生較小的程式和較少的缺陷。

Clojure 是實用的。語言和託管平台之間的一流互操作,讓我們可以存取數千個為 JavaScript 或 JVM 編寫的高品質函式庫。本質上相同的語言在瀏覽器和伺服器上執行,這表示我們可以獲得兩倍的優點。

Clojure 是函數式的。我們不僅想說它鼓勵使用不可變值的特定程式設計風格,這在推理上本質上較容易,而且它也很適合建構我們需要編寫的軟體類型。我們尚未找到更適合處理資訊的工具。

總之,Clojure 是給工作程式設計師的語言,而我們有工作要做。

如果你想分享你的 Clojure 故事,請 填寫此表單