选错项目会半途而废
有人觉得"已有现成的库,自己写一遍是浪费时间"。错。造轮子是最高效的底层学习——你写一个能跑的,比看十本讲原理的书更懂它怎么工作。
从零写一个正则引擎,你会真懂 NFA/DFA;从零写一个 Git,你会真懂对象模型和 packfile;从零写一个 Web 服务器,你会真懂 socket 和 HTTP 解析。这些"真懂"是用现成库给不了的——用库你只知道"调哪个函数",造过你才知道"为什么这么设计"。所以造轮子的产出不是那个轮子(大概率不如现成的),产出是你脑子里多出的那层理解。这层理解让你以后用现成库时能调优、能排查、能判断该不该用。
选你的兴趣方向和当前水平,看推荐你从哪个项目开始。原则:跳一跳够得着,别选太难的把自己劝退。
30 个项目按难度分三档,建议从低档开始,跑通一个再升档:
写个玩具语言、模板引擎、简单键值存储。几百行能跑通,建立信心。适合第一次造轮子。
本季讲过的正则引擎、Git、Web 服务器、数据库。一两千行,要懂状态机/对象模型/socket/B+树。
写个 mini OS、编译器、完整数据库引擎。上万行,要懂硬件/汇编/查询优化。慎入。
最大的坑是跳档:新手直接挑硬核档(写操作系统),结果两周没跑通就放弃,还得出"我不适合造轮子"的结论。其实不是不适合,是档选错了。正确路径:入门档跑通 1-2 个(建立"我能造出来"的信心)→ 进阶档跑通 1 个(理解真实工程的权衡)→ 再考虑硬核档。造轮子的敌人不是难,是放弃;防放弃靠选对档。
造轮子不是闭门造车,正确姿势是先抄再造:
这三步的区别:第一步学"别人怎么取舍",第二步练"自己能不能复现",第三步验"自己能不能扩展"。三步都做完,你才算真"造过"这个轮子,而不只是"读过源码"。很多人停在第一步(读源码)就以为懂了,其实没动手写永远差一层——读得懂和写得出来是两回事。造轮子的价值就在第二步和第三步那层动手的痛。