本节摘要:造轮子最怕两种结局:一种是「太简单,造完觉得没学到什么」,另一种是「太难,三天后放弃,半途而废」。本节给你本书的「难度梯度」——从近到远排成四档(Shell/CLI → 正则/编辑器/Git → Web服务器/数据库 → 操作系统/编译器),每档给时间预算与前置技能。按这个梯度挑「踮脚能够到」的项目,你能避开两个陷阱,完整走完一次造轮子的全程。
内容来源:基于本书九章的难度编排与方法论整理。
阅读完本节,你应当能够:
造轮子的失败,90% 不是因为「不够聪明」,而是因为「项目选错了难度」。选得太简单(比如造一个只能 echo 的 Shell),两天造完觉得「就这?」,没学到系统知识;选得太难(比如一上来就想造操作系统),很快被细节淹没放弃,半途而废比不做更糟。
成功的造轮子,需要选一个「踮脚能够到」的项目——比你现在的能力高一点点,需要努力但能达成。本书的九章正是按这个原则编排的,形成一个从近到远的难度梯度。
| 项目 | 本书章节 | 时间预算 | 前置 |
|---|---|---|---|
| 造 Shell | 第 2 章 | 周末级,最小版 ~100 行 | 会用 Shell(姊妹篇第 9 章)、一门系统编程语言 |
| 造命令行工具(CLI) | 第 3 章 | 周末级 | 同上 |
为什么从这档开始:Shell 和 CLI 是你天天用的,造完能立刻「用上自己的造物」,正反馈极强。且难度可控(最小 Shell 约 100 行 C 代码即可跑),不会卡死。强烈建议把第 2 章造 Shell 作为你的第一个造轮子项目。
| 项目 | 本书章节 | 时间预算 | 前置 |
|---|---|---|---|
| 造正则引擎 | 第 4 章 | 月级 | 第 1 档经验、理解自动机概念 |
| 造文本编辑器 | 第 5 章 | 月级 | termios/终端基础 |
| 造 Git | 第 6 章 | 月级 | 会用 Git、理解哈希 |
为什么是这档:这三个项目比 Shell 复杂,涉及更多概念(状态机、缓冲区、内容寻址),但仍在「认真做一两个月能完成简化版」的范围内。它们揭示「日常工具背后的简单原理」——正则引擎背后的 NFA、编辑器背后的缓冲区、Git 背后的对象模型。
| 项目 | 本书章节 | 时间预算 | 前置 |
|---|---|---|---|
| 造 Web 服务器 | 第 7 章 | 月级 | socket 编程、HTTP 基础 |
| 造数据库 | 第 8 章 | 季级 | B+树、文件 IO |
为什么是这档:Web 服务器和数据库是后端工程师的核心。造它们能让你理解「服务如何响应并发请求」「数据如何高效存储与查询」。难度在于并发模型与持久化机制,但回报也最大——这是面试与生产的高频题。
| 项目 | 本书章节 | 时间预算 | 前置 |
|---|---|---|---|
| 造操作系统 | 第 9 章 | 年级 | 扎实的 C/汇编、计算机组成原理 |
| 造编译器 | 第 9 章 | 年级 | 自动机、数据结构、第 4 章基础 |
为什么放最后:操作系统与编译器是计算机科学的天花板,造一个完整的需要数月到数年。本书第 9 章给的是路线图而非完整教程——它告诉你这条路通向哪里、第一步怎么迈、有哪些经典书可读。不强求人人走完,但要让你知道这座山在哪、有多高。
给读者的具体建议:
ls | grep | wc),达到了就算成功,功能扩展是后续的事。下一节讲两种学习深度——「阅读源码」与「从零复现」,为什么后者更深。