00:00:00你知道比做项目更让人沮丧的是什么吗?是不知道该做什么。
00:00:04在你的开发者生涯中,总会遇到这样一个尴尬的阶段。
00:00:08用 JavaScript 框架再写一个 CRUD 应用感觉太无聊,
00:00:11但从零开始写个操作系统又觉得不可能。你被卡在了中间。
00:00:16你不想做太简单的,也不想挑战不可能。你只是想要一些有意义的东西。
00:00:21一些足够有挑战性能让你升级,但又不至于让你半途而废的东西。
00:00:26相信我,我也经历过。所以在这期视频中,我将为你提供一些非常棒的项目点子。
00:00:32我把这些分为三个等级。第一级:打好基础。第二级:存储、
00:00:38数据库和数据系统。第三级:高级系统与内部原理。
00:00:44如果你能完成这些项目,你不只是会变得更擅长写代码,你还会开始像
00:00:49工程师一样思考。让我们从第一级开始。第一个项目是:从零开始
00:00:55编写你自己的 HTTP 服务器。如果你在看这个视频,你可能已经知道什么是 HTTP 服务器了。
00:01:01每当你打开网站或调用 API 时,后台都会发生请求和响应。
00:01:06但到目前为止,你只是通过 Express 等框架与其交互。编写你自己的微型
00:01:12HTTP 服务器会迫使你理解底层到底发生了什么。你会了解到 TCP 套接字
00:01:19是如何发送和接收数据的,HTTP 请求是如何解析的,响应是如何格式化的,以及
00:01:25如何并发处理多个请求。如果你已经觉得要着手这些项目感到压力很大,
00:01:30在视频最后我有一个小方案给你。千万不要错过。现在来看第二个项目。
00:01:35编写你自己的 Shell。你已经使用过 cd、ls、pwd 等命令数百次了。
00:01:40但你有没有想过到底是什么在处理这些命令?当你编写自己的 Shell 时,
00:01:46你就亲手创建了这个系统。你会学到如何读取和解析用户输入、
00:01:52执行进程并处理系统调用,以及理解进程和命令等 OS 级概念。
00:01:58通过从零开始构建你自己的 Shell,你会从深度层面理解计算机。
00:02:04现在事情开始变得有趣了。我们来看看第二级的项目有哪些。
00:02:09这里的第一个项目是编写你自己的 Redis。Redis 是一个
00:02:15内存数据存储,用作缓存、数据库、消息代理等。它快得惊人。但
00:02:21除非你亲自写一个,否则你不会真正理解为什么。当你实现你自己的 Redis
00:02:26克隆版时,你会学到内存数据结构是如何工作的。你会实现基本的 Redis 命令,
00:02:32理解 Redis 协议,并使用事件循环高效地管理多个客户端连接。
00:02:38这些只是重点。一旦你开始着手,你还会学到很多东西。
00:02:43你会意识到软件工程不仅仅是构建 CRUD 应用。下一个项目是
00:02:48编写你自己的 Git。你每天都在用 Git,但你真的知道它是如何工作的吗?
00:02:54当你自己构建一个简化版的版本控制系统时,一切都会豁然开朗。你会理解
00:03:00提交(commit)在内部是如何存储的。你会实现哈希算法和内容寻址存储,
00:03:05将文件快照组织成提交树。此外还有更多值得学习和实现的地方。
00:03:11而且从零开始构建的一个好处是,你可以根据自己的意愿来修改它的运作方式。
00:03:16最后,我们的第三个项目是编写你自己的 SQLite 数据库。SQLite 是一个
00:03:22无服务器数据库引擎,将所有内容存储在单个文件中。与 MySQL 或 Postgres 不同,
00:03:29它没有单独的服务器进程。它很轻量,但功能极其强大。当你构建自己的版本时,
00:03:34你会理解数据是如何使用 B-trees 等结构组织的。你会解析并执行
00:03:39简单的查询,还会实现用于快速检索的索引。作为一名开发者,你无法避开
00:03:45数据库。一旦你理解了它的内部运作原理,你就将成为那少数顶尖的开发者之一。
00:03:52现在进入第三级,我们要钻得更深。这里的第一个项目是编写你自己的微型编程语言。
00:03:58没错,你自己的语言。你会创造一个能读取代码、理解代码并执行
00:04:04指令的东西。虽然这听起来很吓人,但它是你能构建的最有成就感的项目之一。
00:04:10你会学习并实现词法分析器(Lexer)、解析器(Parser)和抽象语法树(AST)。最重要的是,
00:04:17你会理解解释器和编译器到底是如何工作的。这是一个很棒的项目,因为你终将
00:04:22明白我们是如何与计算机交流的。而且你还可以炫耀说你创造了一门
00:04:27编程语言,并给它起任何你想要的名字。第二个项目是编写你自己的
00:04:32BitTorrent 客户端。这是分布式系统发挥作用的地方。BitTorrent 是一种
00:04:38点对点(P2P)文件共享系统,用户从多个节点下载文件块,而不是从单个服务器。
00:04:44构建这个项目时,你会实现对等发现、管理节点间的连接、将文件分割成
00:04:50数据块、确保文件完整性以及处理分布式通信。这不是一个容易的项目。
00:04:57我敢说你刚才甚至没听懂我一半的话。但它会教你大规模
00:05:02分布式系统实际上是如何运行的。最后,我们的最后一个项目是编写你自己的
00:05:08编程助手,类似于 Claude Code 的东西。现代 AI 工具感觉很神奇,但其底层
00:05:14是将大语言模型与传统软件架构相结合的系统。当你亲自动手
00:05:20做一个时,你会将 LLM API 集成到应用中。你会解析并索引项目文件
00:05:27以提供上下文,管理提示词并控制响应。你会设计一个
00:05:32将 AI 与真实工程原理相融合的系统。在开始着手这个项目后,你会明白
00:05:38这些流行的 AI 编程工具在底层到底是如何运作的。不仅如此,既然 AI 如今
00:05:44如此火爆,这是一个非常有挑战性且能让你脱颖而出的优秀项目。说实话,
00:05:50其中一些项目很难。编写你自己的 Redis、Git 或 BitTorrent 客户端
00:05:55不是你在周末就能随手完成的。你会遇到瓶颈,你会自我怀疑。有时
00:06:01你甚至不知道自己的实现是否正确。而这通常是大多数人
00:06:05选择放弃的地方。为了应对这一点,有一个叫 CodeCrafters 的平台。
00:06:11这是一个基于项目的学习平台,你可以一步步地重造 Redis、SQLite、DNS 服务器、
00:06:19HTTP 服务器等工具。他们不会直接给你答案,而是提供测试和结构化的里程碑,
00:06:23由你亲自实现所有功能。我在做这些项目时亲自用过它。坦白说,那种
00:06:29结构化的引导是决定我是放弃还是完成的关键。所以如果你喜欢这些项目点子,
00:06:34但在亲自动手的同时想要一些指导,我会在简介中留下链接。但无论你是
00:06:39使用平台还是完全独自钻研,重要的是你真正开始动手。如果你也在
00:06:45翻遍互联网寻找下一个要做的项目,我希望这能给你带来启发。
00:06:51起初可能会觉得害怕,但只有跳进水里,冷水才会变暖。如果你喜欢
00:06:57这类视频,请务必点赞、订阅,并告诉我你打算从哪个项目开始。
00:07:02我们下期视频再见。