Hyperpolyglot 的 Lisp 页面,容易被误读成一份“Lisp 语法对照”。其实它更像一张旧账本。
页面发布于 2019 年,版本也停在当时:Common Lisp 用 SBCL 1.2,Racket 6.1,Clojure 1.6,Emacs Lisp 对应 Emacs 24.5。拿它查今天的具体 API,要谨慎;拿它看四种 Lisp 的分叉,非常合适。
最反常的地方也在这里:四列代码看上去都长着括号,落到工程里却不是一回事。怎么启动、怎么部署、怎么调用宿主平台、怎么组织命名空间,才是真正拉开差距的地方。
括号只是表面统一。真正分裂的是运行时、生态和工程入口。
这张表不是教程,是 Lisp 方言的差异账本
这页把 Common Lisp、Racket、Clojure、Emacs Lisp 放在同一张表里。比较范围很宽,但读法不该很慢。
| 维度 | 页面主要比较什么 |
|---|---|
| 基础使用 | 语法执行、REPL、脚本、变量、表达式 |
| 数据与计算 | 算术逻辑、字符串、正则、时间、列表、数组、字典 |
| 工程能力 | 函数、异常、流、文件、目录、进程、命名空间 |
| 语言机制 | 对象、宏、反射、Java 互操作 |
它的价值不是教你从零写 Lisp。真想入门,教材和官方文档更合适。
它适合两类人。
一类是已经懂一点函数式编程和语言史的开发者。你可以用它快速建立坐标:哪些概念相通,哪些地方只是名字像。
另一类是正在选 Lisp 方言的人。你不该只问“哪个 Lisp 更优雅”,而该问:我要接什么生态?团队能不能维护?部署路径顺不顺?遇到问题去哪里找答案?
这张表能帮你少走一段弯路。它不会替你选型,但会把选型成本摊开。
四种 Lisp,走的是四条路
同一套括号背后,四种语言的现实约束差很多。
| 方言 | 更像什么 | 主要收益 | 现实限制 |
|---|---|---|---|
| Common Lisp | 传统完整系统 | 数值、宏、对象系统、自成体系 | 今天主流工程生态不围着它转 |
| Racket | 语言实验与教学平台 | 适合教学、DSL、语言设计 | 大众工程入口不算宽 |
| Clojure | JVM 上的现代 Lisp | 借 Java 生态、工程工具和部署路径 | 也受 JVM 形状影响 |
| Emacs Lisp | Emacs 的扩展语言 | 深嵌编辑器生态,改造能力强 | 离开 Emacs 使用场景变窄 |
Common Lisp 的强,是“系统级”的强。数值塔、宏、对象系统、镜像保存,这些东西放到今天看仍然不寒酸。问题不在表达力,而在外部世界已经换了重心。
Racket 更像语言设计者的工作台。它把“做一门语言”这件事推得很远。教学、实验、DSL,它很顺手;但如果你要接企业系统、招人、部署、排障,它未必是最省力的那条路。
Clojure 最现实。它把 Lisp 放进 JVM,换来 Java 生态和现代工程可用性。表里那些 Java interop,不是边角料,而是路线选择:不和工业世界硬扛,直接借宿主平台的势。
Emacs Lisp 最特殊。它不是在争通用语言排行榜,而是在给 Emacs 这座老城供水供电。你可以嫌它旧,但只要还住在城里,就得承认它管用。
这有点像铁路早期的多轨制。铁路的方向没错,但轨距、公司、标准、商业路线各走各的。Lisp 也类似:思想很早,抽象很高,落地入口却没有统一成一条主干。
这个类比只像一部分。编程语言不是铁路,迁移成本和网络效应也不同。但重复的是同一个结构:技术思想可以领先,工程秩序未必跟上。
“其兴也勃焉,其亡也忽焉”不完全适合 Lisp。它没有亡。更准确地说,它分散地活着,活在不同宿主和不同耐心里。
真要用 Lisp,别只比较语法
我不太买账“Lisp 没流行是因为括号吓人”这种说法。括号会劝退一部分人,但它不是最硬的门槛。
真正的问题在后面:
- 项目要跑在哪个运行时上?
- 需要接 Java、编辑器、脚本系统,还是自成体系?
- 团队能不能招到人、查到资料、维护依赖?
- 部署、调试、排障有没有成熟路径?
- 这门语言的主战场,和你的业务场景是否一致?
如果你只是学习语言思想,Racket 和 Common Lisp 都值得看。前者帮你理解语言设计,后者帮你理解传统 Lisp 系统的完整面貌。
如果你要在现有工程里落地,Clojure 的现实优势更明显。它牺牲了一点纯粹性,但换来 JVM 生态、工具链和组织可接受度。
如果你的主场是 Emacs,Emacs Lisp 没什么可替代。它的价值不在“通用”,而在“贴身”。工具离人越近,语言越容易长期活着。
正在选型的开发者,可以把这张表当成第一轮筛选,而不是最终答案。先用它排除明显不匹配的路线,再去看对应语言的官方文档、库生态和部署方式。
懂一点语言史的人,则可以把它当成一张切片:Lisp 从来不是一种语言的故事,而是一套思想在不同工程约束下分叉后的现实账本。
接下来最该看的,也不是哪种写法更漂亮。更该看三件事:宿主平台是否还强、生态入口是否还宽、团队是否愿意为表达力付维护成本。
技术圈喜欢说好思想终会胜出。这话只说对了一半。好思想要活下来,还得找到宿主、入口、生态和耐心。Lisp 的表达力一直在,麻烦是很多团队等不到它把工程成本讲清楚。
