Lisp Machine is an interesting project. — Di 06 August 2024

你好,世界!

现存的计算机编程语言中有两个非常有历史的语言——Fortran 和 Lisp。计算机专业的学生也许知道还知道他们,不过使用它们的已是很少;如果不是计算机专业,听说过它们的人甚至更少。我原本是物理专业,需要做大量科学计算,有幸接触的第一个高级计算机语言就是 Fortran。后来进入电子工程领域,不再使用 Fortran,首先采用的语言是 C,很长时间也不知道有 Lisp 这么一个古老的语言。

我记得知道 Lisp 是因为有个 C 的练习:编写一个精简 Lisp 编译器——感觉 Lisp 的语法特别简练,就开始学习了 Common Lisp。这才发现 Lisp 的社区是如此的活跃和精彩!Lisp Machine 就是其中非常有趣的一个项目。

说起 Lisp Machine,不得不稍微说一点历史。自从1956年 John McCarthy 在达特茅斯人工智能会议上开启 Lisp 语言定义以来,Lisp 曾经经历了多点开花,无论在学术界和在商业界都有过异常繁荣的时期。它不仅引领了早期人工智能的蓬勃发展,也对计算机语言、编译器乃至硬件设计颇有深远影响。其中,专门为 Lisp 语言设计的计算机及其硬件可以说是 Lisp 商业化的辉煌顶峰。专门为了运行 Lisp 而设计的硬件统称为 Lisp Machine。虽然 Lisp Machine 为运行 Lisp 而做了特别的设计,但是它本质上也是一种通用计算机,也可以运行 Fortran 或 C 程序。

在历史上有好几种著名的 Lisp Machine。

首先是 MIT Lisp Machine。它的第一代叫 CONS,后来叫 CADR,曾是 MIT 人工智能实验室的主力机。后来分成了两派:Lisp Machine 公司(LMI)和 Symbolics 公司。它使用的 Lisp 是一种接近当时主流 Maclisp 的 Zetalisp。它的许多实现对 Common Lisp 有直接影响。值得一提的是,MIT 的 Lisp Machine 是 Emacs 编辑器的原始开发平台。

其次还有施乐 Lisp Machine。它叫 Dorado,运行的是 Interlisp。其后还有更便宜的平台——Dolphin。

还有就是未能实现商业化的 Lisp Machine——由 BBN 设计的 Jericho。它也运行 Interlisp。

由于多种原因,专用的 Lisp Machine 最终没能战胜更加通用的计算机硬件。Lisp Machine 后来成了历史性计算机进了博物馆。

当然,Lisp 黑客从来是执着勇敢并且善于继承历史。他们没有放弃心中的硬件,继续在有限的 Lisp Machine 上演进开发。

我这里讨论的一个 Lisp Machine 项目就是基于 MIT CONS 或 CADR 硬件的有趣项目。它叫 LM-3。它的目的就是要使 MIT CADR 获得重生。虽然 CADR 的硬件很难获得,但是人们还是有办法知道其设计原理,所以 LM-3 使用通用计算机开发了 Lisp Machine 的模拟器 usim。

CADR 系统完全是使用 Zetalisp 开发,包括编辑器、编译器和各种管理工具,它甚至可以跑 C 程序——是由一个把 C 代码编译到 Zetalisp 的工具完成的。Zetalisp 有兼容 Common Lisp 的开关,能够快速适应 Common Lisp 的程序。

usim 使用 C 语言开发,它让没有 CADR 硬件的人也可以在普通电脑上体验 Lisp Machine,并做进一步的开发和实践。

当然,LM-3 项目是一个自由软件的项目,人们可以学习它、改进它和分享它。这个项目的意义在于:如果你怀念某种过去的硬件,那么自由软件和社区可以一起重建这种硬件,而且还能做得更好。如果这个硬件及其系统是专有的系统,那么我们就毫无办法。比如,微软已经不再支持自己的 Windows XP 产品,但是很多人还是很喜欢用 Windows XP。如果 Windows XP 是自由软件,那么人们就可以维护它、改进它和分享它,让它继续演进,就象 Lisp Machine 一样通过 LM-3 获得新生。

如果你想多了解一些 LM-3 项目的详情,立伯乐或许可以帮你。

让 Lisp Machine 带你进入自由软件的美好世界!