首页 › weekly › 8个仓库,亲手造一遍计算机

别再收藏教程了:8个让你亲手造一遍计算机的源码课堂

概述:这一轮,反着挖

前五轮我们都在追新:新仓库、新赛道、新风口。这一轮换一种挖法——去挖那些十年后依然不会过时的仓库。它们共同的特征是:不是给你用的工具,而是给你“亲手造一遍”的课堂。从软光栅渲染器到 Unix 内核,从解释器到数据库内核,直到花一顿饭钱流片一颗真芯片。造过一遍的人,和只看过一百篇教程的人,是两种工程师。按惯例交代一句:本仓库的 Star 均为约数、更新节奏为长期规律,精确数据请以各仓库页面实时显示为准。


1. codecrafters-io/build-your-own-x|六位数星级|长期居 awesome 类榜首

一句话定位:一张“亲手造一切”的藏宝图,帮你解决“想深入却不知道从哪下手”的选择困难。

这个仓库可能是 GitHub 上被收藏最多的学习资源之一:纯 README 结构,没有一行需要运行的代码,却收录了几百条“Build Your Own X”教程的索引——数据库、编译器、操作系统、Docker、Git、区块链、机器人、神经网络,按学科分门别类,每条都指向免费原文。它的用法很简单:先当目录浏览一遍,圈定一个“造什么”,再顺着链接进入具体教程。上手难度:⭐

值得拆的是它的商业设计:仓库维护方 CodeCrafters 本身是一家创业公司,做的事是“陪练式编程课”——你在真实代码库里逐步重建 Redis、Git、Docker,平台自动判题。仓库免费获客,平台收费陪练,堪称“开源目录导流、付费服务变现”的教科书案例。想做技术付费产品的读者,值得把它当商业模式样本研究。

适用人群:所有想系统性“造轮子”的工程师;二次开发方向:按垂直领域(嵌入式、游戏后端、数据基建)裁剪出子目录,就是一门现成课程的骨架。


2. ssloy/tinyrenderer|约2万星级|低频维护的完成体课程

一句话定位:图形程序员的“公认第一课”——不碰 OpenGL,纯 CPU 写出一个软光栅渲染器。

大多数图形学入门者的痛苦是:教材一上来就是矩阵推导,环境一上来就是 GPU、着色器、驱动版本,跑不起来的挫败感劝退率极高。tinyrenderer 反其道而行:它把图形学拆成一串循序渐进的编程作业——从画一条 Bresenham 直线开始,到三角形光栅化、z-buffer 消隐、法线贴图、阴影、环境光遮蔽——全程只用最朴素的 C++,不依赖任何图形 API。全部作业做完,你能在屏幕上渲染出一张带真实光影的人脸头像,而此刻你对 GPU 一无所知,却已经理解了 GPU 在替你做什么。上手难度:⭐⭐

它的课程载体全在仓库 Wiki 里,免费、无广告、无注册。社区里流传着大量“靠这一课转进图形岗位”的经历帖,堪称小而美课程的长期标杆。

适用人群:后端/客户端工程师想横跳图形方向、或游戏开发者想补渲染内功的人。变现角度:以它为骨架做中文实战营、或延伸到 WebGL 版本,都是被验证过的课程形态。


3. munificent/craftinginterpreters|约1万星级|持续可读的开源整书

一句话定位:一本完整开源的《手写解释器》,一本书吃透两种解释器架构。

仓库即全书:作者 Bob Nystrom(曾在 Google 参与 Dart 语言)把整本《Crafting Interpreters》的排版稿、示例代码、配图全部开源,官网可以免费通读,纸质书纯属自愿支持。内容的精妙在于对称结构:前半部分用 Java 写一个树遍历解释器 jlox,重点讲词法、语法、解析、静态解析这些“语言学”功底;后半部分推倒重来,用纯 C 写一个字节码虚拟机 clox,重点讲指令编码、栈帧、哈希表 Interning、增量 GC 这些“工程学”功底。读完你等于亲手做过两类主流解释器,看 Lua、Python、JS 的实现思路时会有“我见过这个套路”的既视感。上手难度:⭐⭐⭐

想直接啃成品源码的读者,可以把它当上集,把 rui314/chibicc 当下集——后者是一个能编译真实 C 项目的迷你编译器,偏读不偏写。

适用人群:想做 DSL、想给自家产品嵌脚本引擎、或想搞懂“语言到底怎么跑起来”的工程师。二次开发方向:把书里的 Lox 换成任意方言(加类型、加并发)做毕设或个人作品集,门槛低、辨识度高。


4. mit-pdos/xv6-riscv|近万星级|随 MIT 课程滚动更新

一句话定位:麻省理工操作系统课的官方教学内核,几千行代码装下一个 Unix。

读 Linux 内核的人大多死在半路:两千万行代码、几十年的历史包袱,任何一页都有十个坑。xv6 是这个问题的经典解法——MIT 把 1975 年第六版 Unix 的设计思想,用现代 RISC-V 指令集重写成几千行可通读的教学内核:进程调度、虚拟内存、文件系统、中断陷阱,每个子系统都小到能在一周内读完,又真实到能在 QEMU 里跑起来、加系统调用、写驱动。仓库与 MIT 6.1810(前身 6.828/6.S081)课程同步维护,每个新学年都会随课程作业滚动更新,配套的 xv6 book 免费 PDF 逐章对应源码,这是它“基础质量”项近乎满分的原因:几十年课程迭代背书,不是个人爱好项目。上手难度:⭐⭐⭐⭐

适用人群:后端/嵌入式工程师冲击系统岗、或准备面试“讲讲虚拟内存”的人——通读过 xv6 的人面试时是有气场的。商业方向:国内多个系统岗面试 Checklist 都暗含 xv6 知识点,围绕它的训练营与 Rust 移植项目(社区已有多个)长期有需求。


5. cmu-db/bustub|数千星级|每学期随 CMU 开课更新

一句话定位:卡内基梅隆数据库课 15-445 的官方作业框架,亲手填出一个关系型数据库的骨架。

会用数据库的人千千万,懂数据库内核的人凤毛麟角,这就是薪资差距所在。BusTub 是 Andy Pavlo 那门著名课程的配套工程:框架给你搭好,学生逐年轮换着亲手实现缓冲池管理器、B+ 树索引、查询执行器、并发控制这四大件——做完四份作业,你对“一条 SQL 是怎么跑起来的”的理解会从黑盒变成透视图。配套的课程视频全部公开,讲义质量在业内有口皆碑。仓库 README 明确声明它仅用于教学、不建议生产使用,这份坦诚反而保证了它永远简单可读。上手难度:⭐⭐⭐⭐

适用人群:冲数据库内核岗(国产数据库大厂常年招不满这类人)、或想给 ORM 调优时“知其所以然”的后端。变现思路:BusTub + 课程视频组合是现成的“数据库内核训练营”素材库,这类训练营客单价在培训市场里长期位居前列。


6. rxi/fe|约1千星级|小而美:一门不到四千行的 C 语言实现

一句话定位:把一门完整脚本语言塞进不到四千行 C99,通读一遍胜读十篇“手写解释器”博客。

fe 是 lite 编辑器作者 rxi 的“配角项目”:语法刻意贴近 Lua,提供解释器加字节码虚拟机的完整实现,全部源码控制在四千行以内——这意味着一个周末就能从头读到尾,亲眼看到“词法分析如何变成指令、指令如何在栈上流转、表和闭包如何分配回收”。市面上的语言实现教材大多在五万行起步,fe 是罕见的“体量小到能全部装进脑子”的样本。它不是给你生产用的语言,而是一张被精确裁剪过的语言实现剖面图。上手难度:⭐⭐⭐

适用人群:读过《Crafting Interpreters》想看真实工程化收尾的人;需要给嵌入式设备或桌面软件嵌一个可控小脚本的团队——fork 它改个语法,一两天就能得到私有 DSL,这是它最实际的二次开发方向。


7. tsoding/nob.h|约1千多星级|小而美:一个头文件颠覆构建系统

一句话定位:“no-build”哲学的官方实现——别学构建系统了,用 C 自己写构建脚本。

每个项目都有一段不堪回首的经历:Makefile 缩进报错、CMake 版本地狱、新构建工具学了三年就过时。长年直播写代码的 tsoding 给出的答案是激进的:构建脚本本身就是一段普通的 C 程序。用法是写一个 nob.c,先用 cc nob.c 编译成可执行文件再运行,它负责拼接编译命令、拷贝产物、跑测试——仓库提供的 nob.h 只是围绕这套思路的 conveniences 头文件(命令执行、目录遍历、重建自身等)。没有 DSL、没有缓存黑魔法、没有版本兼容问题,构建逻辑可以下断点、可以 printf、可以用 git 管理。这个思路正在直播社区里悄悄扩散,越来越多中小项目开始“造自己的 nob”。上手难度:⭐

适用人群:被构建系统折磨过的所有 C/C++ 开发者;中小项目维护者。它证明了一个反直觉的产品逻辑:打败复杂工具的,往往不是更复杂的工具,而是一段五十行的朴素代码。


8. TinyTapeout/tinytapeout|数百星级|小而美:拼团流一颗自己的芯片

一句话定位:把动辄数万美元的 ASIC 流片费做成“拼团”,让普通工程师也能拿到刻着自己设计的实体芯片。

个人做芯片曾经只有一条路:进晶圆厂。TinyTapeout 把这件事改造成了社区拼团:每期 shuttle 把几百个小 tile 拼成一片 multi-project 晶圆送去代工厂流片,每个参与者买一个 tile,放上几十到几百个逻辑门的设计——支持写 Verilog,也支持图形化工具生成的简单逻辑。当期工艺用 IHP 开源的 SG13G2 PDK 与 SkyWater sky130 等开源工艺库,仓库文档把从提交设计到拿回实体芯片的流程拆成了保姆级步骤,每隔约一个季度滚动开新一期,节奏稳定、社区活跃,基础质量在冷门项目里属第一梯队。等你手里捏着那颗印着自己名字的芯片时,简历上“了解数字后端”六个字就再也不虚了。上手难度:⭐⭐⭐(需一点 Verilog 基础)

适用人群:数字IC初学者、硬件教育者、想给项目加“真芯片”光环的独立开发者。变现思路非常直白:培训机构可以开“三个月流片一颗真芯片”的高价课;手作品牌把芯片做成徽章、名片、挂件,天然自带传播属性。官网 tinytapeout.com 有当期价格与日程。


本期横向对比

仓库 领域 Star(约) 上手难度 一句话场景
build-your-own-x 学习目录 六位数 ⭐ 圈定你要造什么
ssloy/tinyrenderer 图形学 2万+ ⭐⭐ 一个周末写软光栅
craftinginterpreters 语言实现 1万+ ⭐⭐⭐ 一本书两种解释器
mit-pdos/xv6-riscv 操作系统 近万 ⭐⭐⭐⭐ 几千行读完一个 Unix
cmu-db/bustub 数据库内核 数千 ⭐⭐⭐⭐ 四大作业填出数据库
rxi/fe 迷你语言 约1千 ⭐⭐⭐ 四千行通读一门语言
tsoding/nob.h 构建系统 约1千多 ⭐ 用 C 干掉 CMake
TinyTapeout/tinytapeout 开源芯片 数百 ⭐⭐⭐ 拼团流片真芯片

一张图看懂本期:从软件到硅片,亲手造一遍计算机

mindmap
  root((源码课堂))
    入口
      build-your-own-x 藏宝图
    图形学
      tinyrenderer 软光栅
    语言实现
      craftinginterpreters 双解释器
      fe 四千行迷你语言
    操作系统
      xv6-riscv 教学内核
    数据库
      BusTub 课程内核
    构建系统
      nob.h 一个头文件
    芯片
      TinyTapeout 拼团流片

本期之最

参考来源

  1. build-your-own-x 仓库 — 本文入口类仓库的目录结构与定位说明
  2. tinyrenderer 仓库及 Wiki — 课程结构与“纯软渲染”路线的原始出处
  3. Crafting Interpreters 官网 — jlox/clox 双篇结构与免费阅读方式
  4. xv6-riscv 仓库 与 MIT PDOS 课程页 — 教学内核定位与课程同步机制
  5. BusTub 仓库 与 CMU 15-445 课程站 — 四大作业构成与教学用途声明
  6. TinyTapeout 仓库 与 官网 — 拼团流片机制、开源 PDK 与当期流程

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入