
理查德·费曼说过一句话:"我不能创造的,我就不理解。"
这句话是 build-your-own-x 这个项目的核心理念。
它是 GitHub 上一个极其著名的仓库,汇集了30多个技术领域的从零实现教程。不是教你用框架,不是教你调API,而是教你从零开始造轮子——写自己的数据库、自己的操作系统、自己的区块链、自己的Web浏览器...
目前这个项目在 GitHub 上有超过 49万 Star,是程序员进阶必看的资源之一。
GitHub:
什么是"造轮子"
程序员常说"不要重复造轮子",意思是能用现成的库就别自己写。
但 build-your-own-x 反其道而行之:它鼓励你造轮子,而且是从零造。
为什么?因为"用轮子"和"造轮子"是完全不同的学习深度。
你用 Redis,知道它是内存数据库、支持多种数据结构、性能很高。但你知道它是怎么实现持久化的吗?知道它的哈希表是怎么设计的吗?知道它怎么处理并发吗?
如果你从头写一个 Redis,这些问题你都必须面对、必须解决。这个过程很痛苦,但完成之后,你对 Redis 的理解会深十倍。
这就是 build-your-own-x 的价值:通过创造来理解。
30+技术领域,想造什么都有
build-your-own-x 覆盖的技术领域非常广,基本上你想深入了解的技术,这里都有教程。
基础工具类:
- Command-Line Tool —— 命令行工具,比如自己写一个
ls、grep - Text Editor —— 文本编辑器,理解编辑器的工作原理
- Shell —— 命令行解释器,写自己的 Bash
- Git —— 版本控制系统,理解
commit、branch、merge是怎么实现的
系统底层类:
- Operating System —— 操作系统,从引导程序到进程调度
- Database —— 数据库,从 B+树到 SQL 解析器
- Memory Allocator —— 内存分配器,理解
malloc和free - Network Stack —— 网络协议栈,实现 TCP/IP
Web技术类:
- Web Server —— Web服务器,理解 HTTP 协议
- Web Browser —— 浏览器,从 HTML 解析到渲染引擎
- Front-end Framework —— 前端框架,写自己的 React/Vue
- Template Engine —— 模板引擎,理解服务端渲染
AI与算法类:
- Neural Network —— 神经网络,从零实现反向传播
- AI Model —— 大语言模型(LLM)、扩散模型、RAG
- Search Engine —— 搜索引擎,理解倒排索引和 PageRank
- Regex Engine —— 正则表达式引擎,理解 NFA 和 DFA
图形与游戏类:
- 3D Renderer —— 3D渲染器,光线追踪、光栅化
- Game —— 游戏开发,从游戏循环到物理引擎
- Physics Engine —— 物理引擎,碰撞检测、刚体动力学
- Voxel Engine —— 体素引擎,像 Minecraft 那样的方块世界
前沿技术类:
- Blockchain / Cryptocurrency —— 区块链和加密货币,理解工作量证明、智能合约
- BitTorrent Client —— BT客户端,理解 P2P 网络
- Bot —— 聊天机器人,Discord Bot、Slack Bot
- Augmented Reality —— 增强现实应用
还有 Docker、Emulator、Processor、Programming Language... 总共30多个类别,几百篇教程。
经典教程推荐
build-your-own-x 里的教程质量都很高,这里推荐几个经典的:
《Let's Build a Simple Database》(C语言)
从零开始写一个 SQLite 风格的数据库。你会学到:
- 怎么设计磁盘上的数据格式
- 怎么实现 B+树索引
- 怎么解析 SQL 语句
- 怎么保证事务的 ACID 特性
完成后,你对数据库的理解会超过90%的程序员。
《Ray Tracing in One Weekend》(C++)
一个周末学会光线追踪。你会从零开始:
- 发射光线、计算交点
- 实现反射、折射、阴影
- 最终渲染出逼真的3D图像
这是计算机图形学的入门经典。
《Build Your Own Redis》(Go/C++)
用几百行代码实现 Redis 的核心功能:
- 内存数据结构(字符串、哈希、列表)
- 持久化(AOF 和 RDB)
- 主从复制
写完之后,再看 Redis 的源码就容易多了。
《Writing an OS in Rust》
从零开始写操作系统。从引导扇区开始,逐步实现:
- 内存管理(分页、堆分配)
- 多任务(进程、线程、调度)
- 文件系统
- 用户态程序
这是最难的教程之一,但也是最 rewarding 的。
《Let's Build A Simple Interpreter》(Python)
写一个简单的编程语言解释器。你会学到:
- 词法分析(Lexer)
- 语法分析(Parser)
- 抽象语法树(AST)
- 求值器(Evaluator)
理解这些,你就理解了编程语言的本质。
多语言支持
build-your-own-x 的教程覆盖了多种编程语言:
- C/C++ —— 系统编程、性能敏感场景
- Python —— 快速原型、算法实现
- Go —— 网络编程、并发场景
- Rust —— 系统安全、现代系统编程
- JavaScript —— 前端、全栈
- Java —— 企业级应用
你可以根据自己的技术栈选择。同一个技术(比如数据库),往往有多个语言的实现版本。
适合谁学
想深入理解底层原理的开发者 —— 你已经会用各种框架了,但想知道它们是怎么工作的。
准备技术面试的人 —— 很多面试题("Redis为什么快"、"浏览器怎么渲染页面"),答案都在这些教程里。
计算机专业学生 —— 课堂上学的是理论,这里教你实践。两者结合,理解更深。
想转型底层开发的人 —— 从业务开发转向系统开发、数据库开发、编译器开发,这些教程是很好的入门。
纯粹的技术爱好者 —— 就是想造轮子,就是想理解一切。
怎么使用这个仓库
build-your-own-x 不是一本书,而是一个教程索引。
每个技术类别下面,都列出了多篇教程链接。这些教程来自不同的作者、不同的博客、不同的书籍。
使用方式很简单:
- 找到你感兴趣的领域 —— 比如你想了解数据库
- 选择一篇教程 —— 看描述和语言,选一篇适合你的
- 跟着做 —— 不要只看,要动手写代码
- 做完再回头看 —— 做完之后,再回头看相关的书籍和文档,会有全新的理解
建议每次只选一个教程,专注做完。这些教程都不简单,可能需要几天甚至几周。但做完一个,比走马观花看十个更有价值。
写在最后
build-your-own-x 代表了一种学习理念:通过创造来理解。
这不是最高效的学习方式。如果你想快速学会用某个框架,去看官方文档、看视频教程,效率更高。
但这是最深入的学习方式。当你从零开始造出一个东西,你会理解它的每一个设计决策、每一个取舍、每一个陷阱。这种理解是调API调不出来的。
费曼说:"我不能创造的,我就不理解。"
build-your-own-x 给了你一个机会:去创造,去理解。
选一个你感兴趣的领域,开始造轮子吧。
关注
如果这篇文章对你有帮助,欢迎点赞、收藏、转发。我会持续分享优质的技术学习资源和编程进阶指南,关注我,一起在技术的深度上不断突破。