编程与开发 · 第 20 期 · 第二季收官

build-your-own-x 附录,30 个汉化项目选哪个

选错项目会半途而废

build-your-own-x 列了 30 个"从零写 X"项目,选哪个?按兴趣和难度匹配。从零写一遍比看十本书更懂底层。但选错项目会半途而废:太难放弃、太简单没收获。选项目的标准是"跳一跳够得着"——比现有水平难一点,但不至于绝望。
⏱ 约 9 分钟 🎯 想造轮子但不知道从哪开始的人 📦 源:build-your-own-x 附录

01一个反共识:造轮子不是浪费时间,是最高效的学习

有人觉得"已有现成的库,自己写一遍是浪费时间"。错。造轮子是最高效的底层学习——你写一个能跑的,比看十本讲原理的书更懂它怎么工作。

用现成库 = 学 API(表层)
从零写 = 学原理 + 做权衡 + 踩真实坑(深层)

从零写一个正则引擎,你会真懂 NFA/DFA;从零写一个 Git,你会真懂对象模型和 packfile;从零写一个 Web 服务器,你会真懂 socket 和 HTTP 解析。这些"真懂"是用现成库给不了的——用库你只知道"调哪个函数",造过你才知道"为什么这么设计"。所以造轮子的产出不是那个轮子(大概率不如现成的),产出是你脑子里多出的那层理解。这层理解让你以后用现成库时能调优、能排查、能判断该不该用。

造轮子的产出不是轮子,
是脑子里的理解。
灏天文库 · 编程与开发 P.60

02项目选择器:按兴趣和难度推荐

选你的兴趣方向和当前水平,看推荐你从哪个项目开始。原则:跳一跳够得着,别选太难的把自己劝退。

🎯 build-your-own-x 项目选择器
选兴趣 + 难度,推荐起步项目 + 备选。

03三个难度档:别一上来就挑最难的

30 个项目按难度分三档,建议从低档开始,跑通一个再升档:

入门档

玩具/模板/键值存储

写个玩具语言、模板引擎、简单键值存储。几百行能跑通,建立信心。适合第一次造轮子。

进阶档

正则/Git/Web服务器/数据库

本季讲过的正则引擎、Git、Web 服务器、数据库。一两千行,要懂状态机/对象模型/socket/B+树。

硬核档

操作系统/编译器/数据库引擎

写个 mini OS、编译器、完整数据库引擎。上万行,要懂硬件/汇编/查询优化。慎入。

最大的坑是跳档:新手直接挑硬核档(写操作系统),结果两周没跑通就放弃,还得出"我不适合造轮子"的结论。其实不是不适合,是档选错了。正确路径:入门档跑通 1-2 个(建立"我能造出来"的信心)→ 进阶档跑通 1 个(理解真实工程的权衡)→ 再考虑硬核档。造轮子的敌人不是难,是放弃;防放弃靠选对档。

造轮子的敌人不是难,
是放弃。
灏天文库 · 编程与开发 P.61

04造轮子的正确姿势:先抄再造

造轮子不是闭门造车,正确姿势是先抄再造:

  1. 先读一个最小实现:找该项目最精简的开源实现(如 mini-git、tiny-httpd),读通它的核心代码,理解它做了哪些取舍。
  2. 再自己写一遍:合上参考,凭理解自己写。卡住了再回头看,但别边抄边写(那是抄不是造)。
  3. 最后加一个功能:在跑通的最小版本上加一个原版没有的小功能,逼自己理解扩展点。

这三步的区别:第一步学"别人怎么取舍",第二步练"自己能不能复现",第三步验"自己能不能扩展"。三步都做完,你才算真"造过"这个轮子,而不只是"读过源码"。很多人停在第一步(读源码)就以为懂了,其实没动手写永远差一层——读得懂和写得出来是两回事。造轮子的价值就在第二步和第三步那层动手的痛。

05带走这套清单

✅ 项目选择 6 条可执行规则

  1. 造轮子是最高效的底层学习:产出是脑子里的理解,不是那个轮子。
  2. 选项目标准"跳一跳够得着":比现有水平难一点,不至于绝望。
  3. 三档难度:入门档建立信心→进阶档理解权衡→硬核档慎入。
  4. 防放弃靠选对档:别新手直接挑写操作系统。
  5. 正确姿势先抄再造:读最小实现→自己写→加个功能。
  6. 读得懂≠写得出来:动手那层痛才是造轮子的价值。
造过轮子的人,
用现成库时心里有底。
灏天文库 · 编程与开发 P.62