「一层托一层」:Tumble Forth 从汇编写到操作系统

| | 2 次浏览

当编码智能体已经能一口气生成整个 CRUD 应用时,Hacker News 上一个不起眼的链接却把一批开发者拉回了计算的起点。Tumble Forth 是一部以连载形式写成的免费教程,作者 Virgil Dupras 计划带读者完成一次罕见的纵向旅行:从 x86 裸机汇编出发,先滚出一个可交互的 Forth 系统,再用这个 Forth 写出 C 编译器,最后用自家工具去够操作系统。全程不依赖任何现成工具链,每一层,都踩在自己刚造好的那一层上。

从汇编到操作系统,中间隔一个编译器

项目的副标题就是路线图:"from assembly to OS with C compiler"。按已发布章节的脉络,大致是三段式:

  1. 汇编起步:在 QEMU 之类的模拟器里跑裸机代码,从往屏幕上打印字符开始,逐章搭出 Forth 的骨架,数据栈、返回栈、字典,以及一个个“单词”(word)。Forth 把所有子程序都称作单词,程序即单词的排列组合,语言与 REPL 天然一体。
  2. 滚向 C:有了能交互的 Forth,下一站是用它实现一个 C 编译器。这一步最见功力,词法分析、类型系统、代码生成,全都要用一门几乎没有语法的语言一点点垒出来。
  3. 够到 OS:编译器长成之后,操作系统层面的代码才有了趁手的表达工具,自举链条至此闭合。

教程并非干巴巴的代码搬运,作者时常停下来写议论章节,交代设计取舍,为什么这样做、为什么不那样做。对一个把“循序渐进”刻进标题的项目(tumble,翻滚着向前),节奏本身就是教学内容的一部分。

为什么偏偏是 Forth

自举是软件世界的创世神话:第一个汇编器是机器码手写的,第一个高级语言编译器是汇编写成的,UNIX 用自举出来的 C 重写了自身,每一代工具都由上一代生出。Forth 在这条谱系里位置特殊:实现小到几百行汇编就能起步,又天生增量、可扩展,历来被视为从裸机长出高级语言的最短路径。从上世纪的 fig-Forth 到广为流传的 JonesForth,同类尝试不少,Tumble Forth 的差异在于它不止步于“又造了一个 Forth”,而是把编译器和操作系统也纳入了行程。

作者本人的背景给这个项目加了注脚。Virgil Dupras 是开源圈老兵,重复文件清理工具 dupeGuru 的作者,更以 Collapse OS 和 Dusk OS 闻名,后者是一个用 Forth 写成、追求“一个人能完全理解”的操作系统。Tumble Forth 某种意义上是 Dusk 路线的教科书版:先说服你极简可行,再带你亲手验证一遍。

这门课在今天值多少钱

平心而论,跟着敲完不会让简历立刻增值,也帮不了下一个冲刺周期。它的价值在别处:现代工具链层层叠叠,一个前端项目动辄引入上千个依赖,AI 又在栈顶再盖一层魔法,“会用”与“理解”之间的距离从未如此之大。Tumble Forth 提供的是一次全栈纵切,词法分析、代码生成、内存布局这些教科书上的名词,跟着敲过一遍之后会变成动词。

我们不久前聊过 LLM 时代 Unix 管道为何愈发重要,逻辑其实是同一个:越往上层堆自动化,越需要有人知道地基是怎么打的。当生成代码的成本趋近于零,稀缺的不再是“写”,而是判断,判断结构好坏、判断该对工具信到几分,这种判断力来自对底下各层的体感。对想补底层课的开发者来说,与其再背一遍名词解释,不如抽几个周末,从第一行汇开始把雪球滚起来。教程免费开放,唯一收费的是耐心。

(来源:tumbleforth.hardcoded.netHacker News 讨论

评论(0)

暂无评论,来写第一条吧。