Clojure
Clojure 是一种 健壮、实用且快速 的编程语言,它包含一组有用的特性,共同构成了一个 简单、连贯且强大的工具

Clojure 编程语言

Clojure 是一种动态的通用编程语言,它结合了脚本语言的易用性和交互式开发,以及用于多线程编程的高效且健壮的基础设施。Clojure 是一种编译语言,但仍然完全动态 - Clojure 支持的每个功能都在运行时得到支持。Clojure 提供对 Java 框架的轻松访问,并提供可选的类型提示和类型推断,以确保对 Java 的调用可以避免反射。

Clojure 是 Lisp 的一种方言,它与 Lisp 共享代码即数据哲学和强大的宏系统。Clojure 主要是一种函数式编程语言,并具有丰富的不可变、持久数据结构。当需要可变状态时,Clojure 提供软件事务内存系统和响应式 Agent 系统,以确保干净、正确、多线程的设计。

希望您发现 Clojure 的功能组合既优雅、强大、实用又有趣。

Rich Hickey
Clojure 作者

使用 Clojure 取得成功的公司

“我们的 Clojure 系统刚刚处理了第一个沃尔玛黑色星期五,并且毫发无损。”
Anthony Marcar,高级架构师
沃尔玛实验室
“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,Cognitect 是 Clojure 和 Datomic 数据库背后的咨询公司。

通过收购,Nubank 纳入了一支世界一流的团队,帮助开发人员将 Clojure 的理念转化为业务敏捷性,并利用公司的使命来对抗复杂性,赋予人们权力。目前,Nu 是 Clojure 和 ClojureScript 的主要公司赞助商。

有关 Nubank 如何构建产品和团队的更多信息,请访问 building.nubank.com.br