加载中...
Rich Hickey于2007年设计的JVM Lisp方言,以不可变数据结构、软件事务内存(STM)和强调纯函数式编程著称。ClojureScript把同一语言编译到JavaScript,实现前后端代码共享。

| 类型 | 动态类型、函数式、Lisp方言、JVM |
| 发布年份 | 2007年 |
| 开发者 | Rich Hickey |
Rich Hickey在设计Clojure前花了约六年思考理想中的并发语言。他对Lisp情有独钟(代码和数据结构同质,使得宏系统极其强大),认为Common Lisp太保守,没有拥抱函数式和不可变性。Clojure的核心主张是:大多数并发bug源于可变共享状态,解决方案不是更复杂的锁,而是默认不可变。
Clojure的持久化数据结构(Persistent Data Structures)是技术亮点:看似「修改」一个向量实际上创建新版本,旧版本仍然有效,底层用结构共享(structural sharing)保证性能。哈希映射、向量、集合都是持久化的,线程间共享这些值不需要任何同步。[1]
Lisp系语言的宏是语言级别的代码生成,可以直接操作AST,实现在其他语言里需要框架甚至语言修改才能做到的抽象。Clojure的defmacro允许在编译期展开代码,core.async库的go宏(模仿CSP通道)就是这样实现的。
REPL驱动开发是Clojure社区强调的工作方式:保持REPL连接到运行中的程序,修改一个函数立刻生效,无需重启。配合CIDER(Emacs)或Calva(VS Code),这种工作流带来的即时反馈体验被很多人描述为「改变了编程感受」。ClojureScript把Clojure编译到JavaScript,可以和React(Reagent/re-frame)配合开发前端。

| 类型 | 动态类型、函数式、Lisp方言、JVM |
| 发布年份 | 2007年 |
| 开发者 | Rich Hickey |
登录 后参与讨论
暂无讨论,来发表第一条评论吧