项目概览
| 维度 | 数据 |
|---|---|
| 项目名 | codecrafters-io/build-your-own-x |
| 描述 | Master programming by recreating our favorite technologies from scratch |
| Star数 | 523,072 |
| Fork数 | 49,477 |
| 语言 | Markdown(教程合集) |
| 开源协议 | 无明确协议 |
| 创建时间 | 2018-05-09 |
| 最后提交 | 2026-06-25 |
| 官方主页 | https://codecrafters.io |
| 主题标签 | awesome-list, free, programming, tutorial-code, tutorial-exercises, tutorials |
核心理念
*"What I cannot create, I do not understand" — Richard Feynman*
这个项目的哲学非常简单:通过从零开始复刻你喜欢的技术来精通编程。它不是教你"如何使用"工具,而是教你"如何实现"工具。

覆盖领域(31个分类)
项目涵盖从基础到高级的31个技术领域:
- 3D Renderer(3D渲染器)
- AI Model(AI模型)
- Augmented Reality(增强现实)
- BitTorrent Client(BitTorrent客户端)
- Blockchain / Cryptocurrency(区块链/加密货币)
- Bot(机器人)
- Command-Line Tool(命令行工具)
- Database(数据库)
- Docker(容器化)
- Emulator / Virtual Machine(模拟器/虚拟机)
- Front-end Framework / Library(前端框架)
- Game(游戏开发)
- Git(版本控制系统)
- Memory Allocator(内存分配器)
- Network Stack(网络协议栈)
- Neural Network(神经网络)
- Operating System(操作系统)
- Physics Engine(物理引擎)
- Processor(处理器)
- Programming Language(编程语言)
- Regex Engine(正则引擎)
- Search Engine(搜索引擎)
- Shell(命令行Shell)
- Template Engine(模板引擎)
- Text Editor(文本编辑器)
- Visual Recognition System(视觉识别)
- Voxel Engine(体素引擎)
- Web Browser(Web浏览器)
- Web Server(Web服务器)
精选教程详解
🥇 入门级:Web Server
| 语言 | 教程名称 |
|---|---|
| C | _Writing a simple web server from scratch_ |
| Go | _Build a web framework in Go_ |
| Node.js | _ بسيطة – Raw Node.js web server_ |
| Python | _Web server from scratch_ |
推荐理由:理解HTTP协议、TCP连接、请求/响应模型的最好方式。
🥇 入门级:BitTorrent Client
| 语言 | 教程名称 |
|---|---|
| Python | _A BitTorrent client in Python 3.5_ |
| Go | _Building a BitTorrent client from the ground up_ |
| Node.js | _Write your own bittorrent client_ |
推荐理由:理解P2P网络、Tracker协议、Piece下载机制。
🥈 中级:Database(数据库)
| 语言 | 教程名称 |
|---|---|
| C | _Let's Build a Simple Database_(Pikuma课程) |
| Go | _Build Your Own Database from Scratch: From B+Tree To SQL in 3000 Lines_ |
| Go | _Build Your Own Redis from Scratch_ |
| Python | _Write your own miniature Redis_ |
推荐理由:数据库是现代软件工程的明珠,理解B+Tree、ACID、索引是高级工程师必备。
🥈 中级:Git(版本控制)
| 语言 | 教程名称 |
|---|---|
| Ruby | _Build Git from scratch_ |
| C | _Building Git from scratch_ |
| Go | _A minimal Git implementation_ |
推荐理由:每天都在用Git,但内部原理是什么?对象模型、diff算法、branch实现都能在这里找到答案。
🥈 中级:Docker(容器化)
| 语言 | 教程名称 |
|---|---|
| C | _Linux containers in 500 lines of code_ |
| Go | _Build Your Own Container Using Less than 100 Lines of Go_ |
| Python | _Rebuild Docker from Scratch_ |
| Shell | _Docker implemented in around 100 lines of bash_ |
推荐理由:理解容器 namespace/cgroups 技术,Kubernetes时代的必备知识。
🥈 中级:Operating System(操作系统)
| 教程 | 说明 |
|---|---|
| _Writing a OS from scratch_ | 从零构建操作系统 |
| _Roll your own OS_ | 定制化操作系统 |
| _Writing a Simple Memory Allocator_ | 内存分配器实现 |
推荐理由:理解计算机系统的终极挑战。
🥈 中级:Network Stack(网络协议栈)
| 语言 | 教程名称 |
|---|---|
| C | _Writing a network stack from scratch_ |
| Go | _Build your own ARP scanner_ |
推荐理由:深入理解TCP/IP、socket编程、协议分层。
🥈 中级:Programming Language(编程语言)
| 语言 | 教程名称 |
|---|---|
| Python | _A Python interpreter written in Python_ |
| Go | _Building a toy language in Go_ |
| Rust | _So You Want to Build a Language_ |
推荐理由:编译器原理、AST解析、虚拟机是编程语言方向的核心知识。
🥉 高级:Large Language Model(LLM)
| 语言 | 教程名称 |
|---|---|
| Python | _LLMs from Scratch_ |
| Python | _RAG for Document Search_ |
推荐理由:理解Transformer架构、大模型原理的最佳实践路径。
🥉 高级:Web Browser(Web浏览器)
| 语言 | 教程名称 |
|---|---|
| C | _Browser engineering_ |
| Python | _Python engine for Chrome_ |
推荐理由:CSS渲染、JS引擎、DOM树——浏览器是最大的复杂软件之一。
🥉 高级:Search Engine(搜索引擎)
| 语言 | 教程名称 |
|---|---|
| Python | _Let's build a full-text search engine_ |
| Python | _Building a search engine from scratch_ |
推荐理由:倒排索引、PageRank、爬虫原理——信息检索的核心技术。
为什么这个项目值得关注?
1. 学习效率极高
传统的学习方式是从理论到实践,往往中途放弃。这个项目反过来:从你熟悉的产品出发,倒推技术原理。你知道Redis很快,但为什么快?自己写一个就全懂了。
2. 覆盖31个领域
从Web Server到LLM,从Git到Docker,几乎涵盖了所有计算机科学的核心知识领域。一个项目搞定多领域基础认知。
3. 社区活跃
- 49,477次Fork,说明教程质量高、被引用多
- 521个Open Issues,大部分是新增教程的PR
- 最后提交2026-06-25,至今仍在活跃维护
4. 零门槛入门
每个教程都有多个语言版本,总有一个适合你的主力语言。C语言大佬可以从更底层的教程开始,Python选手可以从高级抽象开始。
5. 面试神器
很多人简历上写"熟悉数据结构与算法",但真正理解的方式是自己实现一个B-Tree。这个项目里的Database、Git、OS分类,是系统设计面试的高频考点来源。
如何高效使用这个项目?
学习路径推荐
第一阶段(1-2个月):
Web Server → BitTorrent Client → Regex Engine → Memory Allocator
第二阶段(3-4个月):
Database → Git → Docker → Network Stack
第三阶段(6个月+):
Operating System → Programming Language → Web Browser → AI Model
学习方法论
- 先读再写:先通读教程,理解原理
- 手敲代码:不要复制粘贴,自己手敲
- 添加注释:在关键位置添加自己的理解
- 对比官方实现:理解差距和设计取舍
- 写成博客:教是更好的学
| 项目 | Stars | 特点 |
|---|---|---|
| build-your-own-x | 523K | 最全面,覆盖31个领域 |
| practical-tutorials/project-based-learning | 272K | 按编程语言组织 |
| kamranahmedse/developer-roadmap | 359K | 学习路线图,非实战 |
| danistefanovic/build-your-own-x | 94K | 类似但较旧 |
结论
⭐ 综合评分:9.5/10
build-your-own-x 是我见过最好的"通过动手学技术"的资源站。它不是教你语法,而是教你思维。无论你是初学者想入门,还是资深工程师想补足知识盲区,这个项目都值得收藏。
适合人群:
- 🎓 计算机专业学生:课堂知识实战化
- 🔄 转行程序员:快速建立技术认知
- 🏗️ 初级工程师:夯实基础
- 🎯 高级工程师:准备系统设计面试
- 🧠 终身学习者:保持技术敏感度
行动建议:今天就选一个你每天都在用的工具(Git/Docker/Redis),找一个对应教程,从零实现一遍。
项目主页:https://codecrafters.io