本文全面概述了“Build Your Own X”代码库中关于编程系统的教程。这些教程指导开发者从零开始构建自己的编程语言、编译器、解释器、正则表达式引擎、命令行Shell和Git实现。有关应用程序开发的教程,请参阅应用程序和工具教程;有关操作系统等系统基础设施的教程,请参阅系统基础设施教程。
来源:README.md27-32 README.md290-333 README.md335-345 README.md356-364 README.md224-232
编程系统代表了开发者用于创建软件的基础工具和语言。从零开始构建这些系统,能够深入了解编程语言是如何被处理、解释和执行的。
“Build Your Own X”代码库包含了用多种语言实现各种编程系统的教程,以满足不同技能水平和兴趣的需求。
来源:README.md27-32 README.md290-333 README.md335-345 README.md356-364 README.md224-232
编程语言实现教程构成了该代码库的重要部分。这些指南涵盖了构建解释器、编译器和相关的语言处理工具。
该代码库提供了许多编程语言的语言实现教程,方法各异
| 重点领域 | 值得关注的教程 | 语言 |
|---|---|---|
| Lisp 解释器 | Make a Lisp, Little Lisp interpreter, Build Your Own Lisp | 多种语言, JavaScript, C |
| 编译器 | Let's Build a Compiler, Kaleidoscope with LLVM, Writing a C Compiler | Pascal, C++, OCaml |
| 字节码虚拟机 (Bytecode VMs) | Home-grown bytecode interpreters, Write your Own Virtual Machine | C, 多种 |
| 垃圾回收 | Baby's First Garbage Collector, Writing a Simple Garbage Collector | C |
C、JavaScript、Python 和 Haskell 等语言在该类别中尤为突出,提供的实现范围从简单的解释器到带有优化阶段的完整编译器。
正则表达式引擎是现代编程语言中文本处理的基础。该代码库包含了使用不同算法实现正则表达式引擎的教程。
这些教程涵盖了正则表达式实现的各种方法
回溯引擎(Backtracking Engines):简单但可能效率低下,在JavaScript教程中有所演示,例如“Build a Regex Engine in Less than 40 Lines of Code”
NFA(非确定有限自动机):对于复杂模式更高效,在“Regular Expression Matching Can Be Simple And Fast”等教程中有所介绍
DFA(确定有限自动机):效率最高但实现复杂,在“Build Your Own Regular Expression Engines”中有所探讨
该代码库包含了C、JavaScript、Perl、Python、Go和Scala语言的实现,每种实现都展示了解决正则表达式匹配问题的不同方法。
命令行Shell教程教导开发者如何构建类似于Bash、Zsh或Windows PowerShell的交互式命令解释器。
该代码库包含了几个侧重点不同的Shell实现教程
| 教程 | 语言 | 主要功能 |
|---|---|---|
| Tutorial - Write a Shell in C | C | 进程创建、管道、作业控制 |
| Let's build a shell! | C | 命令解析、执行 |
| Writing a UNIX Shell | C | Shell内部机制、信号处理 |
| Writing a simple shell in Go | Go | 现代语言实现 |
| Build Your Own Shell using Rust | Rust | 内存安全、现代方法 |
这些教程涵盖了Shell的基本组成部分,包括命令解析、进程创建和管理、信号处理、I/O重定向以及环境变量管理。
Git实现教程指导开发者构建自己的版本控制系统,深入了解Git如何管理代码历史。
该代码库提供了多种语言的Git实现教程
这些教程通常涵盖:
对于对编程系统感兴趣的开发者,建议以下学习路径:
对于有特定语言偏好的开发者:
通过学习这些教程,开发者能够深入理解他们日常使用的工具以及编程语言设计和实现背后的原理。
来源:README.md290-333 README.md335-345 README.md356-364 README.md224-232