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、语言设计大众工程入口不算宽
ClojureJVM 上的现代 Lisp借 Java 生态、工程工具和部署路径也受 JVM 形状影响
Emacs LispEmacs 的扩展语言深嵌编辑器生态,改造能力强离开 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 的表达力一直在,麻烦是很多团队等不到它把工程成本讲清楚。