📌 项目地址:practical-tutorials/project-based-learning | ⭐ 278,305 颗星 | 🔧 Python | 📜 未标注

先说清楚它是什么

practical-tutorials/project-based-learning,278,305 颗 star,整个仓库的核心就是一个 README。README 第一句话把收录标准讲死了:教程必须教你 “build an application from scratch”——从空目录开始,最后得到一个能跑的程序。语法书不收,API 文档不收,技巧合集不收。

列表按主语言分区:C/C++、Python、JavaScript、Go、Rust、Haskell、OCaml、Erlang、Lua 等 23 个。单个教程可以横跨多种技术,但必须有明确的主语言归档。

维护靠社区:fork 仓库,按 CONTRIBUTING.md 的规则提交链接。仓库有一个 link-rot 的 GitHub Action 工作流,定期检查所有链接是否失效。纯人工维护的清单撑不了几年,这条自动扫描是它能活到今天的原因。

C/C++ 分区值得单独讲

从这个分区的难度分布,能看出收录标准。我按梯度列几条:

入门层

中间层

ssloy 的 Tiny 系列也在这一层,四个项目,行数直接标在标题里:软件渲染器 500 行(Tiny Renderer)、光线追踪 256 行(tinyraytracer)、KABOOM 爆炸模拟 180 行(tinykaboom)、老式 FPS 486 行(tinyraycaster)。工作量一目了然,周末做完一个是有可能的。

天花板

分区里还有 JIT 编译器(Part 1 和 Part 2,系列文章按顺序读)、FUSE 文件系统、NES 游戏开发、内存分配器。语言分区不同,但条目结构就是这个模式。

我的用法

先定位语言分区,点开候选教程的开头几段判断难度。我的标准:概念能看懂一半、剩下需要查资料的,正合适。全看得懂说明太浅,全看不懂就换一条往下找。

还有一点,“读得懂”和“写得出”是两回事。跟着教程敲代码时卡住是正常状态,卡住的位置就是教程在起作用的位置。

两个提醒

仓库没有统一的环境和工具链。每个教程怎么编译、怎么运行,以教程原文为准,C/C++ 和 Python 的环境完全不同,README 里没有万能入口。

另外,278k star 里我猜大多数来自“先收藏”。这个清单的价值不在收藏,在于你挑一个项目,花几天到几周做完。做完一个,你就知道自己缺什么了。

这篇文章对你有帮助吗?

发表回复