一款古老的 Scheme 编译器,一台古老的“机器”

在每一版的 Scheme RnRs 语言报告上大概都有这么一段话:

We gladly acknowledge the influence of manuals for MIT Scheme [24], T [28], Scheme 84 [15], Common Lisp [34], and Algol 60 [25]

阅读报告的人大概不会注意到这一段文字,就算注意到了这段文字,大概也不会注意到注脚为[28]的,单独一个字母 T

T 是一款 Scheme 语言的早期实现,早期曾被称为 Yale Scheme, 因为它是在耶鲁大学开发的。 T 是第一款优化的 Scheme 编译器,并且在很长一段时间内也是最快的 Scheme 编译器。T 有很多开创性的设计,对 Scheme 的发展产生过重大的影响。 T 的编译器、汇编器、链接器这一整套工具链都是用 T 自己写的,实现了自举; T 将对象系统和模块系统加进语言里 。而 Scheme 却为这些东西要不要加进语言标准争吵了几十年。所以, T 其实是 Scheme 的超集,就象现在 Racket 相对于 Scheme。

T 的开发始于一个玩笑式的提议,于是,几个年青人聚在一起,准备搞出一个优秀的语言来与 C 和 Fortran 竞争。遗憾的是开发只持续了一段时间就停止了,开发人员各奔东西。源码散落在各个大学实验室的 FTP 上。解散后,团队成员中的 Richard Kelsey 和 Jonathan Rees 又聚在一起,花了两天时间又写了个 Scheme 实现,就是后来著名的 Scheme48。与 T 不同的是 Scheme48 基于一个字节码解释器,而非原生编译器。

T Project 主页 由 Jonathan Rees 建立。

这里是 T 的另一份历史, 由开发人员 Olin Shivers 写的回忆录。

曾经有人试图复活这个项目,这里是项目主页存档。这个项目已经死掉了。

我经过漫长的尝试,终于用一款虚拟机软件把 T 给跑起来了。

我用的虚拟机叫做 SIMH , 专注于虚拟历史上著名的机型,PDP 系列,VAX 等等。好有沧桑感!

本文所用到的所有材料已经上传到 Github, 有兴趣的童子可以自行尝试。

https://github.com/uternet/language-t

posted @   fmcdr  阅读(744)  评论(0编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
点击右上角即可分享
微信分享提示