一款古老的 Scheme 編譯器,一臺古老的「機器」

在每一版的 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]的,單獨一個字母 Tgithub

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, 有興趣的童子能夠自行嘗試。

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

相關文章
相關標籤/搜索