Clojure
Clojure 是一種強健、實用且快速的程式語言,具有一組有用的功能,共同形成一個簡單、一致且強大的工具

Clojure 程式語言

Clojure 是一種動態且通用的程式語言,結合了腳本語言的易用性和互動式開發,以及多執行緒程式設計的有效且強健基礎架構。Clojure 是一種編譯語言,但仍然完全動態 - Clojure 支援的每個功能都在執行階段支援。Clojure 提供了對 Java 框架的簡易存取,並具有選用的類型提示和類型推論,以確保呼叫 Java 可以避免反射。

Clojure 是 Lisp 的方言,並與 Lisp 共享代碼即資料的哲學和強大的巨集系統。Clojure 主要是一種函式程式語言,並具有一組豐富的不變、持續資料結構。當需要可變狀態時,Clojure 提供了一個軟體交易記憶體系統和反應式代理系統,以確保乾淨、正確的多執行緒設計。

我希望您會發現 Clojure 的設施組合優雅、強大、實用且使用起來很有趣。

Rich Hickey
Clojure 作者

使用 Clojure 成功的公司

「我們的 Clojure 系統剛處理完第一個沃爾瑪黑色星期五,毫髮無傷。」
Anthony Marcar,資深架構師
Walmart Labs
「Clojure 是一種從頭到尾的功能性程式語言。這表示使用 Clojure 編寫的程式碼非常模組化、可組合、可重複使用且容易理解。」
Chris Price,軟體工程師
Puppet Labs
「我們討論了現有的 Clojure 社群、語言本身的成熟度以及我們在產業中看到的動能。公司看到 Clojure 帶動的產品上市速度。」
Dave Elliman,技術負責人
ThoughtWorks

進一步了解 Clojure 成功案例社群如何使用 Clojure,並找到使用 Clojure 的公司

功能

Clojure 有一組實用的功能,共同形成一個簡單、一致且強大的工具。

動態開發

Clojure 是您可以互動的動態環境。幾乎所有語言結構都已具象化,因此可以檢查和變更。您可以擴充程式,載入資料、新增功能、修正錯誤、測試,形成一個不間斷的串流。

功能性程式設計

Clojure 提供避免可變狀態的工具,提供函式作為一級物件,並強調遞迴迭代,而非基於副作用的迴圈。Clojure 雖然不純,但背後支持的哲學是功能性越強的程式越強健。

LISP

Clojure 是 Lisp 語言家族的成員。許多 Lisp 的功能已納入其他語言,但 Lisp 的程式碼即資料方法及其巨集系統仍使其與眾不同。此外,Clojure 的映射、集合和向量在 Clojure 中與 Lisp 中的清單同為一級。

執行時期多型性

使用執行時期多型性的系統更容易變更和擴充。Clojure 提供簡單、強大且彈性的執行時期多型性機制。Clojure 的協定和資料類型功能新增抽象和資料結構定義的機制,與主機平台的設施相比毫不遜色。

並行程式設計

Clojure 以多種方式簡化多執行緒程式設計。由於核心資料結構不可變,因此可以輕鬆地在執行緒之間共用。Clojure 是一種實用的語言,允許狀態變更,但提供機制確保在變更時保持一致性,同時減輕開發人員使用鎖定等方式手動避免衝突的負擔。

建置在 JVM 上

Clojure 被設計為一種託管語言,共享 JVM 型別系統、GC、執行緒等。所有函式都編譯為 JVM 位元組碼。Clojure 是出色的 Java 函式庫消費者,提供點目標成員表示法來呼叫 Java。Clojure 支援動態實作 Java 介面和類別。

Nubank

Nubank 是全球最大的數位銀行平台之一,服務超過 6500 萬名巴西、墨西哥和哥倫比亞的客戶。從一開始,Nu 就與 Clojure 合作,取得了驚人的成功,大規模執行任務關鍵軟體。2020 年,該公司收購了 Cognitect,這家公司是 Clojure 和 Datomic 資料庫背後的顧問公司。

透過收購,Nubank 聘請了一支世界級團隊,協助開發人員將 Clojure 的想法轉化為業務靈活性,並利用公司的使命來對抗複雜性並賦予人們權力。目前,Nu 是 Clojure 和 ClojureScript 的主要企業贊助商。

如需瞭解有關 Nubank 如何建置產品和團隊的更多資訊,請瀏覽 building.nubank.com.br