首页 › programming › 编译器与语言实现七大频道精选

编译器与语言实现七大频道精选:从源码到机器指令的硬核之旅

本期概述

本期为 Round 2「编程与开发」专题,我们刻意避开已被反复覆盖的"语言精通""系统架构""开发者工具链"等热门赛道,深入一个极度硬核却长期被中文技术圈忽视的子领域——编译器原理、解释器构建与编程语言实现(Compiler / Interpreter / Programming Language Implementation)。

为什么这个方向值得单独立题?因为它是整条软件技术栈的"最后一公里":无论你写 Python、Rust 还是 TypeScript,最终都要经过词法分析、语法解析、抽象语法树、代码生成这一条流水线。理解这条流水线的人,能读懂任何语言的源码、能调试任何诡异的语言行为、能设计 DSL 解决领域问题,更能从"语言的使用者"跃升为"语言的掌控者"。

本期精选的 7 个频道横跨四大学习范式:系统化课程(Dmitry Soshnikov)、渐进式实战(CodePulse)、极客式硬核(Bisqwit、Tsoding)、底层原理剖析(Low Level)、学术科普(Computerphile)、工业级实践(Jonathan Blow 与 Casey Muratori)。它们共同构成了一条从入门到精通的完整学习地图。

频道对比总览

频道 风格定位 核心技术栈 难度 适合人群
Dmitry Soshnikov 学术严谨的系统课程 解析器/解释器/VM引擎 ⭐⭐⭐⭐ 想深入理论并亲手实现者
CodePulse 循序渐进的实战教学 Python、从零构建 ⭐⭐ 编译零基础入门者
Bisqwit 极客式从零硬核 C++、手写全套 ⭐⭐⭐⭐⭐ 追求极限理解的资深开发者
Tsoding 娱乐编程直播流 C、Rust、多语言 ⭐⭐⭐ 喜欢边看边敲的实战派
Low Level 底层原理动画拆解 汇编、CPU、编译流程 ⭐⭐⭐ 想理解"代码如何变成机器指令"
Computerphile 大学教授概念科普 理论概念为主 ⭐⭐ 建立宏观认知的初学者
Blow & Muratori 工业级语言设计实战 C/Jai、性能优先 ⭐⭐⭐⭐⭐ 关注语言设计与极致性能者

一、Dmitry Soshnikov:把编译原理讲成艺术品的工程师教师

频道:@DmitrySoshnikov-education | 个人站:dmitrysoshnikov.com

Dmitry Soshnikov 是一位专注于编程语言内部原理(programming language internals)的资深工程师与教育者。他的频道堪称整个 YouTube 上对"语言如何被实现"讲解得最为系统、严谨的教学资源之一。

核心内容围绕三大旗舰课程展开:《Building a Parser from scratch》(从零构建递归下降解析器)、《Essentials of Interpretation》(解释器本质——16 讲覆盖 AST、求值器、闭包、作用域链、垃圾回收)、以及 《Building a Compiler / Engine》(编译器与执行引擎,含字节码虚拟机与 JIT 入门)。他的讲解有一条清晰的哲学主线:不依赖任何第三方库或解析器生成器,所有代码全部手工实现,让你看清每一行源码背后的数据结构与算法。

实用价值:如果你曾对"JavaScript 的作用域链到底是什么""Python 的闭包捕获为何有时不符合直觉""JIT 即时编译如何兼顾启动速度与峰值性能"等问题感到困惑,Dmitry 的课程能给出工程层面最透彻的答案。看完《Essentials of Interpretation》,你会发现自己看待任何动态语言的眼光都变了。

适合人群:有一定编程基础、不满足于"会用 API"、希望理解语言运行时机制的中高级开发者;尤其适合正在准备编译原理课程或面试底层岗位的工程师。


二、CodePulse:让编译器入门变得不再可怕

频道:@CodePulse

CodePulse 是一个对新手极其友好的实战教学频道,其镇频之作是基于 Ruslan Spivak 经典博客 "Let's Build a Simple Interpreter"(LSBASI)改编的系列教程:用 Python 从零构建一个完整的解释器,从最简单的整数加减法逐步演进到支持变量、作用域、函数调用、控制流的微型 BASIC 风格语言。

教学节奏是这个频道最大的优势。每一集只增加一个概念单元:先讲词法分析器(Lexer)如何把字符流切成 Token,再讲递归下降 Parser 如何把 Token 流组织成 AST,最后讲树遍历解释器如何对 AST 求值。每一步都有可运行的 Python 代码、清晰的图示和单元测试。整套系列结束时,你手里会有一个真正能跑的、可扩展的解释器项目。

实用价值:对绝大多数程序员而言,"从零写一个能运行的语言"是极具成就感的里程碑,它能彻底消除对编译器这一黑盒的恐惧。这个系列也是通往更高级资源(如 Crafting Interpreters 一书)的最佳前置桥梁。

适合人群:完全没有任何编译器经验、想以最低门槛入门的程序员;高中生或低年级计算机专业学生;希望用一个完整项目来巩固数据结构(树、栈、哈希表)与面向对象设计能力的自学者。


三、Bisqwit:北欧极客的"用 C++ 手搓编译器"史诗

频道:@Bisqwit | 配套仓库:github.com/bisqwit/compiler_series

Bisqwit(本名 Joel Yliluoma)是芬兰资深程序员,活跃于 NES 模拟器、复古硬件与底层编程领域二十余年。他的频道副标题是 "Live programming as a form of art"(把实时编程当作一种艺术),而他的 《Creating a Compiler》 系列正是这一理念的最强体现。

这个系列的硬核程度在整个 YouTube 都属罕见:他用纯 C++,从手写词法分析器开始,一路实现完整的语法分析、语义分析、中间代码生成、寄存器分配与目标代码生成,最终产出一个能将自定义语言编译为真实可执行机器码的编译器。整个过程几乎不依赖现成工具链,连汇编输出都是手工拼接的。配套的 GitHub 仓库 compiler_series 提供了分阶段的完整代码与构建脚本。

实用价值:这是少数能让你真正理解"编译器后端到底在干什么"的资源。寄存器分配、指令选择、栈帧布局这些在教科书里抽象晦涩的概念,在 Bisqwit 的逐行 C++ 实现中变得触手可及。对于想从事编译器工程、嵌入式工具链或高性能运行时开发的人,这是一座金矿。

适合人群:C/C++ 功底扎实、追求"知其然且知其所以然"的资深开发者;复古计算与底层系统爱好者;有耐心啃下长视频的学习者。


四、Tsoding:把语言实现直播成一场娱乐秀

频道:@tsoding 与 @TsodingDaily | GitHub:github.com/tsoding

Tsoding(其人格化 ID 为 Tsoding)的标签是 "Recreational Programming"(娱乐编程),但千万别被这个词误导——他做的是整个平台最酣畅淋漓的实时编程直播之一。频道内容横跨函数式编程(Haskell)、系统编程(C)、现代系统语言(Rust、Zig)以及大量的"从零造轮子"项目。

在语言实现方向上,Tsoding 有多个完整系列:从零手写 Lisp 解释器、构建自己的构建工具、实现基于立即模式(immediate-mode)的 GUI 库,以及近期复活一门古老编程语言的工程。直播的真实性是其魅力核心——你会看到他当场遇到 bug、读汇编、查规范、推翻重来,这种"思考过程外化"的展示比任何精修教程都更有教学价值。

实用价值:Tsoding 教会你的不是某个具体算法,而是一种工程调试的肌肉记忆和面对未知问题时的拆解方法。他的 C 语言代码风格极其干净(大量使用 typedef、宏与单文件架构),对想提升 C 编程品味的人是极佳范本。

适合人群:偏好"沉浸式观摩"学习法、喜欢边看边敲代码的实战派;对函数式编程、系统编程同时感兴趣的多面手开发者。


五、Low Level(Ed):动画拆解"代码如何变成 CPU 指令"

频道:@LowLevelLearning | 学院:lowlevel.academy

频道主 Ed 自我定位为低层程序员、安全工程师与软件安全研究员。Low Level 频道擅长用精炼的动画与图示,把"编译器如何工作""CPU 如何执行指令""内存如何被分配与回收"这类底层黑盒讲得直观透彻。其代表作之一《How Compilers Work》单条视频即获得近百万播放量。

内容覆盖三个层次:编译流程(源码 → 预处理 → 编译 → 汇编 → 链接,每一阶段产出的中间产物到底是什么)、CPU 执行模型(指令周期、流水线、缓存层级如何影响代码性能)、逆向工程视角(当你能反汇编时,"开源"与"闭源"的边界在哪里——这也是频道标志性话题)。配套的 Low Level Academy 提供更系统化的付费课程。

实用价值:这个频道是"理解编译器存在意义"的最佳起点。很多程序员写了一辈子代码却不清楚 .o 文件、链接器、重定位表为何物;Low Level 用十几分钟的视频就能补上这块认知。对性能优化、安全研究、嵌入式开发都有直接帮助。

适合人群:从应用层想向底层下钻的全栈/后端开发者;安全研究初学者;嵌入式与物联网工程师;任何对"计算机底层到底如何运转"抱有好奇心的人。


六、Computerphile:大学教授把编译理论讲给你听

频道:@Computerphile(英国诺丁汉大学出品)

Computerphile 是计算机科学领域最具公信力的科普频道之一,由英国诺丁汉大学计算机学院的教授与研究人员主讲,订阅量级在数百万。它不教你写代码,而是用十几分钟的访谈式讲解,把编译原理、自动机理论、算法本质等学科核心概念讲得通俗而准确。

与编译器直接相关的代表性内容涵盖:词法分析与有限状态自动机、语法与上下文无关文法、解析技术(LL、LR、递归下降)的权衡、图灵机与可计算性边界、为什么有些语言特性会导致解析歧义(如 dangling else)。每期都由该领域的实际研究者出镜,配有手写板书或简单动画,保留了"大学课堂"的严谨氛围。

实用价值:当你被某个编译器报错("shift/reduce conflict""ambiguous grammar")折磨时,Computerphile 的视频能帮你回到第一性原理理解根因。它也是建立"理论地图"的最佳捷径——在动手实现之前,先知道这片领域有哪些山头。

适合人群:在校学生备考编译原理/形式语言课程;自学 CS 体系的知识布道者;需要向团队或学生解释底层概念的技术负责人与教师。


七、Jonathan Blow 与 Casey Muratori:工业级语言设计与性能极致

频道:@jblow888(Jonathan Blow)与 @cmuratori(Casey Muratori)

把这两位放在一起,是因为他们代表了"真正在工业前沿设计并实现一门编程语言"的稀缺视角。

Jonathan Blow 是著名独立游戏《The Witness》与《Braid》的创作者,他正在设计一门面向高性能软件(尤其是游戏)的新语言 Jai。他的频道里有大量直播录像,展示了从语言哲学(为什么 C++ 不够用、为什么需要更好的元编程与数据导向设计)到具体编译器实现细节的完整思考链路。这是极为罕见的"语言设计者亲自讲述设计决策"的一手资料。

Casey Muratori 的代表作是传奇系列 《Handmade Hero》——从零行代码开始,在直播中逐行手写一个完整的跨平台游戏,全程不用任何现成引擎与库。在这个过程中,他示范了如何亲自实现内存分配器、文件加载器乃至自己的构建管线,本质上是一场关于"不依赖编译器黑盒之外的一切"的极限教学。他的"Semantic Compression"等演讲也是关于代码结构与编译思维的经典。

实用价值:这两位频道提供的不是教程,而是心智模型——一种"为极致性能与程序员体验而设计"的工程哲学。对于想理解为什么现代语言(Zig、Odin、Rust)会如此演进、想设计自己的 DSL 或工具链的资深工程师,这是不可替代的参考。

适合人群:游戏与图形行业资深开发者;编程语言设计爱好者;对"软件性能的物理极限"有执念的极客;愿意投入大量时间吸收长直播与深度论述的硬核学习者。


知识结构图谱

graph TD
    A[编译器与语言实现学习地图] --> B[理论概念层]
    A --> C[渐进实战层]
    A --> D[硬核实现层]
    A --> E[工业实践层]

    B --> B1[Computerphile<br/>编译原理科普]
    B --> B2[Low Level<br/>编译流程与CPU原理]

    C --> C1[CodePulse<br/>Python从零构建解释器]
    C --> C2[Dmitry Soshnikov<br/>系统化课程]

    D --> D1[Bisqwit<br/>C++手写全栈编译器]
    D --> D2[Tsoding<br/>直播式语言实现]

    E --> E1[Jonathan Blow<br/>Jai语言设计]
    E --> E2[Casey Muratori<br/>Handmade Hero]

    B1 -.->|夯实理论后| C1
    C1 -.->|进阶到| C2
    C2 -.->|深入底层| D1
    D2 -.->|观摩工业级| E1

    style A fill:#2d6a4f,color:#fff,stroke:#1b4332
    style B fill:#52b788,color:#fff
    style C fill:#74c69d,color:#000
    style D fill:#95d5b2,color:#000
    style E fill:#b7e4c7,color:#000

编译器核心流程认知图

flowchart LR
    S[源代码<br/>Source Code] --> L[词法分析<br/>Lexer/Scanner]
    L --> T[Token 流]
    T --> P[语法分析<br/>Parser]
    P --> AST[抽象语法树<br/>AST]
    AST --> SEM[语义分析<br/>类型检查/作用域]
    SEM --> OPT[优化<br/>中间表示 IR]
    OPT --> GEN[代码生成<br/>Codegen]
    GEN --> OBJ[目标代码<br/>字节码/机器码]
    OBJ --> RUN[运行时<br/>VM 或 直接执行]

    L -.- N1[CodePulse / Low Level]
    P -.- N2[Dmitry Soshnikov / Tsoding]
    OPT -.- N3[Bisqwit]
    GEN -.- N4[Bisqwit / Low Level]
    RUN -.- N5[Dmitry / Computerphile]

    style S fill:#40916c,color:#fff
    style AST fill:#1b4332,color:#fff
    style RUN fill:#2d6a4f,color:#fff

学习路径建议

对于初次进入这一领域的读者,建议采用以下递进路径:

  1. 建立直觉(1-2 周):先看 Computerphile 与 Low Level 的概念科普视频,建立"代码如何变成机器指令"的整体认知地图。
  2. 动手入门(4-8 周):跟随 CodePulse 用 Python 写一个完整解释器,这是消除编译器恐惧的最快路径。
  3. 理论深化(2-3 个月):进入 Dmitry Soshnikov 的系统课程,补齐递归下降、AST、求值器、闭包与 GC 的工程化实现。
  4. 极限挑战(可选):挑战 Bisqwit 的 C++ 编译器系列,或观摩 Tsoding 的直播,理解编译器后端与真实工程调试。
  5. 工业视角(长期):以 Blow 与 Muratori 的内容作为思想养料,理解语言设计的取舍哲学。

延伸推荐

参考来源

  1. Dmitry Soshnikov — Education — 编程语言内部原理系统课程官方站,含 Parser/Interpreter/Engine 三大旗舰课程介绍。
  2. Bisqwit — Creating a Compiler 系列 — 用 C++ 从零构建编译器的配套代码与教学材料仓库。
  3. Low Level Academy — 低层编程、编译流程与 CPU 原理频道的官方学院。
  4. x-team — 18 Code Streaming Channels to Make You a Better Programmer — 社区对 Tsoding 等"娱乐编程"直播频道的教学价值评估。
  5. Reddit r/learnprogramming — 25 Programming YouTube channels — 编程社区推荐的优质学习频道汇编。

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入