在每一版的 Scheme RnRs 语言报告上大概都有这么一段话:html
We gladly acknowledge the influence of manuals for MIT Scheme [24], T [28], Scheme 84 [15], Common Lisp [34], and Algol 60 [25]git
阅读报告的人大概不会注意到这一段文字,就算注意到了这段文字,大概也不会注意到注脚为[28]的,单独一个字母 T 。github
T 是一款 Scheme 语言的早期实现,早期曾被称为 Yale Scheme, 由于它是在耶鲁大学开发的。 T 是第一款优化的 Scheme 编译器,而且在很长一段时间内也是最快的 Scheme 编译器。T 有不少开创性的设计,对 Scheme 的发展产生太重大的影响。 T 的编译器、汇编器、连接器这一整套工具链都是用 T 本身写的,实现了自举; T 将对象系统和模块系统加进语言里 。而 Scheme 却为这些东西要不要加进语言标准争吵了几十年。因此, T 实际上是 Scheme 的超集,就象如今 Racket 相对于 Scheme。web
T 的开发始于一个玩笑式的提议,因而,几个年青人聚在一块儿,准备搞出一个优秀的语言来与 C 和 Fortran 竞争。遗憾的是开发只持续了一段时间就中止了,开发人员各奔东西。源码散落在各个大学实验室的 FTP 上。解散后,团队成员中的 Richard Kelsey 和 Jonathan Rees 又聚在一块儿,花了两天时间又写了个 Scheme 实现,就是后来著名的 Scheme48。与 T 不一样的是 Scheme48 基于一个字节码解释器,而非原生编译器。工具
T Project 主页 由 Jonathan Rees 创建。优化
这里是 T 的另外一份历史, 由开发人员 Olin Shivers 写的回忆录。this
曾经有人试图复活这个项目,这里是项目主页存档。这个项目已经死掉了。.net
我通过漫长的尝试,终于用一款虚拟机软件把 T 给跑起来了。设计
我用的虚拟机叫作 SIMH , 专一于虚拟历史上著名的机型,PDP 系列,VAX 等等。好有沧桑感!htm
本文所用到的全部材料已经上传到 Github, 有兴趣的童子能够自行尝试。