从零搭一台计算机:Nand2Tetris 把硬件和软件连起来

计算机原理课最容易断在中间:硬件课讲完门电路,软件课另起一头,指令怎么从代码走到电路没人交代。Nand2Tetris 的做法是让同一条线走到底——从最简单的逻辑门出发,一路搭出运算器、内存和处理器,再往上写汇编器、虚拟机和编译器。
它解决什么问题
学过逻辑门也学过处理器,但两者之间怎么衔接始终是模糊的。
只会用高级语言写业务,程序跑不动或者变慢时,没有能力往底层追。
核心能力
| 能力 | 具体能做到什么 |
|---|---|
| 两部分结构 | 第一部分做硬件,第二部分做软件,项目的编号前后衔接 |
| 从单个门开始 | 起手项目只需要实现最基础的门,后面每层都复用它 |
| 配套工具链 | 提供硬件模拟器,以及面向这套机器的汇编、虚拟机等工具 |
| 项目驱动 | 每章都有可运行的项目,做完看得见自己搭的机器跑起来 |
| 资料在线可取 | 讲义与项目说明放在网站上,工具套件按导览页说明下载 |
| 面向自学者 | 不绑定学校与学期,节奏完全可以自己安排 |

一块一块按顺序做,别急着跳
关键是别抱着「先把硬件全搞懂再动手」的想法。第一个项目往往只有一页说明,照着做出基础门电路就够了,更复杂的运算器和处理器都是在这些小门上拼出来的。卡住时先照项目说明里给的真值表逐行推,比回头翻书本快;每做完一个项目先跑一遍随身附带的测试脚本,通过了再往下走,不要攒着一起调。
第二部分会明显变难,编译器和操作系统那几章是很多人停下的地方。建议把主要精力放在虚拟机和编译器上,看清高级语言如何一步步落到指令;操作系统部分先实现基础功能,剩下的当作选做。每做完一个项目随手记两行当时的思路,隔一段时间回头看,比重新做一遍省事。
同类工具怎么选
| 工具 | 授权 | 差别在哪 |
|---|---|---|
| CS50 | 官方免费资源 | 编程入门的广度课,不聚焦于从门电路搭到软件这条线 |
| Computation Structures | 官方免费资源 | 同样从门电路往上讲,更偏数字系统设计与体系结构 |
| Build Your Own X | 开源免费 | 按主题收集造轮子教程,覆盖面比一门课杂得多 |
谁适合用
- 计算机专业想补上软硬件断层的学生
- 自学编程、想弄懂程序怎么在机器上跑的开发者
- 需要给学生找动手项目的课程老师
怎么开始
- 打开 nand2tetris.org,先读导览页了解两个部分各自的项目安排。
- 按说明下载工具套件,在本机解压并确认模拟器能正常打开。
- 从第一个项目开始,实现最基础的门电路并用测试脚本验证。
- 第一部分做完后进入第二部分,依次实现汇编器、虚拟机与编译器。
- 每个项目通过测试再进下一个,做不出来的先记下问题回头补。
常见问题
完全零基础能跟吗?
第一部分基本不需要编程经验,第二部分要写汇编器和编译器,至少要会一门语言。
有在线判题系统吗?
没有。项目的正确性靠配套测试脚本在本地验证,具体方式以项目说明为准。
一定要买配套教材吗?
不必须。网站上的项目说明与工具是免费获取的,是否买书看个人习惯。
学完能去做什么?
能对「代码如何变成机器动作」有一条完整认识,但离独立做芯片设计或编译器开发还有距离。
授权与合规
课程网站上的讲义、项目说明与工具套件均可免费获取,配套教材另行出版,不影响跟着做项目。 官网:www.nand2tetris.org。
继续找同类资源
这条属于「学习资料」栏目,同栏目还有更多可直接使用的免费资源,可以在 学习资料全部资源 里按需翻阅。
相关资源
同栏目下这几条也常被一起翻到:
↓ 获取资源
点击按钮直接前往资源页面。