菜单

学习路径

相关源文件

本文档提供了一种结构化的方法,您可以根据您的技能水平、兴趣和编程语言偏好来浏览“自己动手构建 X”的教程。与其随意尝试所有教程,不如遵循一条指导性的学习路径,以最大限度地提高学习效果,并确保更平稳地过渡到越来越复杂的概念。

有关特定类别教程的信息,请参阅 Wiki 中的相应部分

学习路径方法概述

浏览“自己动手构建 X”存储库主要有三种策略:

  1. 基于技能的进阶:从初级到高级的教程
  2. 基于兴趣的探索:专注于特定的技术领域
  3. 基于语言的选择:选择您喜欢的编程语言的教程

每种方法都有其优点,具体取决于您的学习目标和现有专业知识。

来源: README.md5-9

项目难度分类

本存储库中的教程涵盖了广泛的难度级别,从适合初学者的项目到需要相当专业知识的高级实现。

图示:项目难度分类

来源: README.md116-126 README.md129-143 README.md290-334 README.md144-152 README.md258-278 README.md393-396 README.md144-152 README.md258-278 README.md393-396 README.md144-152 README.md72-96

初学者路径

对于刚接触系统编程或希望在着手更复杂的项目之前建立信心的人来说,以下学习路径为逐步介绍基本概念提供了指导。

图示:初学者学习路径

项目类型推荐教程编程语言大致时间
命令行工具构建 lolcat、cowsay、fortune 等命令行工具Go1-2 天
简单游戏文本类游戏、贪吃蛇、2D 弹球JavaScript, Python1 周
HTTP 服务器基本 Web 服务器实现Python, Node.js2-3 天
文本编辑器简单的文本编辑器C, Python3-5 天
机器人Reddit 或 Telegram 机器人Python2-4 天

为什么从这些项目开始

这些初学者项目是理想的起点,因为它们:

  1. 具有明确的范围和清晰的目标
  2. 能快速产生切实可行、可用的结果
  3. 在不涉及过于复杂概念的情况下介绍基本的编程概念
  4. 提供即时的视觉或交互式反馈

来源: README.md116-126 README.md186-222 README.md375-382 README.md98-114 README.md398-410

中级路径

在掌握了初学者项目之后,中级教程将深入探讨系统内部和更复杂的应用程序。

图示:中级学习路径进展

项目类型核心概念推荐语言先决条件
数据库存储引擎、索引、查询处理C, Go, PythonWeb 服务器、文件 I/O
Git 实现对象模型、Merkle 树、版本控制JavaScript, Ruby命令行工具
正则表达式引擎状态机、解析、优化C, JavaScript命令行体验
神经网络矩阵运算、反向传播Python、JavaScript基础数学、简单游戏
模板引擎解析、AST、代码生成JavaScript, PythonWeb 开发基础

来源: README.md129-143 README.md224-232 README.md335-345 README.md241-256 README.md366-372

高级路径

高级项目需要扎实的前期知识,但能提供对复杂系统工作原理最深入的见解。

关键高级项目

项目复杂性时间投入关键先决条件
操作系统非常高C/汇编、内存管理、硬件知识
编程语言几周到几个月解析、编译器理论、内存管理
Web 浏览器几周到几个月网络、渲染、JavaScript
Docker几周Linux 内核、命名空间、cgroups
区块链几周密码学、分布式系统

高级项目的方法

着手高级项目时

  1. 分解问题:识别您可以单独构建的独立组件
  2. 迭代构建:从最小可行性实现开始,然后扩展
  3. 参考资料:将教程与学术论文和书籍结合
  4. 加入社区:在专业论坛寻求支持

来源: README.md258-278 README.md290-334 README.md144-152 README.md72-96

特定语言路径

许多开发人员喜欢在特定的编程语言生态系统中工作。以下是如何根据您的语言偏好来浏览存储库。

图示:按项目类型划分的编程语言覆盖率

Python 路径

Python 为您提供了最友好的存储库入门路径之一

  1. 从简单的机器人或文本游戏开始
  2. 进阶到 Web 服务器或 HTTP 客户端
  3. 实现数据库或神经网络
  4. 尝试浏览器或编程语言组件

JavaScript 路径

JavaScript 提供了一个出色的以前端为中心的路径

  1. 从基于浏览器的游戏开始
  2. 构建前端框架组件
  3. 开发 Node.js Web 服务器
  4. 实现更复杂的系统,如数据库或区块链

C/C++ 路径

面向系统编程爱好者

  1. 从文本编辑器或简单的 CLI 工具开始
  2. 进阶到内存管理项目
  3. 构建操作系统等复杂基础设施
  4. 着手开发像游戏引擎这样的性能关键型应用程序

来源: README.md45-53 README.md99-113 README.md186-222 README.md129-142 README.md291-333

跨域学习路径

一些开发者可能倾向于专注于特定领域,并在该领域内逐步提升复杂度。

图示:领域特定进阶路径

Web 技术路径

这条路径探索 Web 技术,从基础协议到完整的浏览器。

  1. 入门:构建一个简单的 HTTP 服务器
  2. 进阶:创建模板引擎和静态站点生成器
  3. 高级:实现前端框架和浏览器组件
  4. 专家:构建一个完整的 Web 浏览器

系统编程路径

适合对底层系统感兴趣的人

  1. 入门:构建一个命令行 Shell
  2. 进阶:实现网络组件
  3. 高级:创建容器化工具
  4. 专家:开发操作系统组件

来源: README.md398-410 README.md366-372 README.md169-184 README.md393-396 README.md234-239 README.md144-152 README.md258-278

项目依赖与先修课程

了解项目之间的依赖关系有助于创建更有效的学习路径。有些教程是建立在其他教程所介绍的概念基础之上的。

图示:项目依赖与先修课程

上图展示了某些项目如何成为更高级项目的天然先修课程。例如,构建 Shell 有助于为操作系统开发做准备,而正则表达式引擎的实现则为编程语言的创建提供了宝贵的背景知识。

来源: README.md116-126 README.md356-363 README.md224-232 README.md258-278 README.md186-222 README.md279-286 README.md41-53 README.md129-143 README.md72-96 README.md335-345 README.md290-334 README.md398-410 README.md393-396 README.md234-239

有效的学习技巧

  1. 从小处着手:在尝试高级项目之前,先选择初级项目
  2. 记录学习过程:记录遇到的挑战和解决方案
  3. 修改与扩展:完成教程后,添加新功能以加深理解
  4. 组合项目:运用多个教程的知识(例如,为你的 Web 服务器添加数据库)
  5. 回馈社区:分享改进或替代的实现方式

结论

“Build Your Own X” 仓库通过实践实现的方式,提供了多种理解复杂技术的路径。通过遵循这些学习路径,你可以系统地将知识从基础应用构建到复杂的系统。

请记住,最有效的学习路径是根据你的特定兴趣、编程背景和学习风格量身定制的。将此处提供的框架作为指导,但不要犹豫,根据最让你兴奋的内容来开创自己的道路。

来源: README.md5-9