
CS 自学指南之 Stanford CS143 Compilers150 小时手写一个 COOL 编译器【免费下载链接】cs-self-learning计算机自学指南项目地址: https://gitcode.com/GitHub_Trending/cs/cs-self-learning在计算机自学指南cs-self-learning收录的所有课程里编译器课程几乎是最有造物感的一类——没有哪门课能像它一样让你亲眼看着自己写的程序把一门高级语言翻译成可以在机器上执行的汇编。本文介绍的Stanford CS143: Compilers正是这样一门课程它不要求你追求花哨的语言特性而是引导你用Java 或 C从零为斯坦福自行设计的面向对象教学语言COOLClassroom-Object-Oriented-Language写出一整套编译器把 COOL 源码最终翻译为MIPS 汇编并在SPIMMIPS 模拟器上真实运行。读完本文你将完整了解这门课的定位、理论主线与四阶段实践结构、作业构成与学习量预期以及在本仓库编译原理课程目录中该如何为它搭配前置与后续学习。课程概览一张表看懂关键信息本仓库文档 docs/编译原理/CS143.md 对该课程的定位信息如下项目内容所属大学Stanford斯坦福大学先修要求计算机体系结构编程语言Java 或 C课程难度★★★★★五颗星最高档预计学时150 小时课程目标为 COOL 语言实现编译器输出 MIPS 汇编并在 SPIM 上运行配套教材《编译原理》龙书Compilers: Principles, Techniques and Tools课程作业5 个书面作业理论 5 个编程作业实践把课时与难度放在一起看150 小时 五颗星说明这是一门投入产出比极高的硬课它的工程产出是一个可以独立交付的编译器因此耗时远超一般刷题型课程但正因为难度被刻意拆解成循序渐进的阶段文档也强调它难度循序渐进只要按部就班走完并不会像看起来那样无从下手。课程定位它在 CS 自学指南的编译原理主线中处于什么位置在这份自学指南的总体规划 docs/CS学习规划.md 中编译原理小节开宗明义地写道没有什么能比自己写个编译器更能加深对编译器的理解了。规划给出的理论学习路径是通读《龙书》动手实践则指向 docs/编译原理/PKU-Compilers.md 等课程同时明确指出编译原理课程目录下也有众多其他优质实验供你选择英文版 docs/CS学习规划.en.md 中则专门描述 CS143 是带你走完编写编译器全过程的课程。也就是说CS143 在本仓库中扮演的角色是龙书理论 → 编译器实践闭环中一条经典的国际名校实践路线。它与同目录下其他编译器课程形成互补docs/编译原理/PKU-Compilers.md把类 C 语言 SysY 编译到 RISC-V从空目录起步、自由度极高docs/编译原理/NJU-Compilers.md借助 ANTLR 4 生成器辅助实现偏词法/语法设计与可视化docs/编译原理/CS420.mdKAIST 的 Rust 版教学编译器 KECC聚焦 SSA IR 与优化以及 docs/编译原理/SJTU-Compilers.md、docs/编译原理/USTC-Compilers.md 等更多路线。CS143 的差异化优势在于目标语言是一门为教学专门设计、包含面向对象特性的完整语言 COOL因此它既教你编译器前后端的全链路又让你真正处理继承、方法分派这类在真实 OOP 语言编译中无法回避的问题——这正是许多纯 C 子集编译器课程刻意绕开的复杂度。理解课程主角COOL 语言与 MIPS/SPIM 目标机CS143 的课程设计者开发了一门专供课堂使用的语言Classroom-Object-Oriented-Language简称 COOL。选择一门教学专用语言而非真实工业语言如 C/Java是这门课精妙的设计决策其原因可以从课程目标反推出来规模可控COOL 的语言特性集被裁剪到一个学期内可完整实现的规模学生无需面对真实语言动辄上千页的语言规范面向对象特性完整作为一门 OO 语言它具备类、继承、方法等结构足以支撑课程中运行时环境方法分派对象布局等关键理论专题的教学而不是停留在表达式求值层面仍然足够真实COOL 同样需要完整的词法、语法、语义分析需要类型检查与运行时支持写编译器时踩过的坑与真实项目几乎同构。课程的任务终点非常明确把 COOL 高级语言编译为 MIPS 汇编并在 SPIM一个 MIPS 模拟器上成功执行。MIPS 是计算机体系结构课程中的经典教学指令集本仓库 docs/体系结构/DDCA.md、docs/体系结构/CA.md 也都围绕 MIPS 体系展开而 SPIM 让程序无需真实硬件即可运行验证——这也解释了为什么课程把计算机体系结构列为先修要求寄存器分配、调用约定、栈帧布局等编译器后端知识都需要以对处理器执行模型的理解为底色。理论主线沿龙书脉络的六大专题文档明确指出课程理论部分基本按照龙书的顺序组织。无论你选择哪一版龙书《Compilers: Principles, Techniques and Tools》以下专题都是 CS143 理论考核对应 5 个书面作业的核心骨架理论专题解决的问题词法分析Lexical Analysis把源码字符流切分成 token 流是编译器的分词器语法分析Syntax Analysis依据文法把 token 流组织成语法结构AST语义分析Semantic Analysis类型检查、作用域与名字解析保证程序有意义运行时环境Runtime Environments栈帧、调用约定、对象布局、存储管理如何支撑程序执行寄存器分配Register Allocation把无限的虚拟寄存器映射到有限的物理寄存器代码优化与代码生成Optimization Code Generation生成高效的目标代码此处即 MIPS 汇编这套脉络的价值在于它完整覆盖了从源码到机器码的全部阶段理论与实践严格一一对应学完理论立刻能在作业中动手验证不会出现理论讲 A、实践做 B的错位感。实践主线四阶段递进的编程作业与留白与理论对应的课程实践被拆成词法分析、语法分析、语义分析、代码生成四个阶段文档同时说明代码优化部分给学生留下了很大的设计空间。这份递增式设计正是它适合自学的原因词法分析阶段实现 COOL 的词法分析器把源码切分为合法 token处理注释、字符串、关键字识别等细节是热身量级语法分析阶段依据 COOL 文法构建语法分析器与语法树处理文法的歧义与优先级语义分析阶段实现类型检查器等语义动作处理面向对象语言中的继承与类型推导这是 COOL 语言特色最集中体现的阶段代码生成阶段把语义分析后的中间结果映射为 MIPS 汇编使程序能在 SPIM 上真实运行完成我写的编译器真的能跑程序的闭环。而优化阶段被刻意留白意味着你做完前四阶段拿到能跑的编译器之后仍有巨大的进阶空间无论是做基本块/循环优化、改进寄存器分配策略还是对照龙书的优化章节逐条落地都可以按自己的时间与兴趣深入。文档特意提到这一点既说明课程难度的天花板很高也提示自学者做到能用只是及格线做出高效才是加分项。学习量与完成标准150 小时如何分配文档给出的 150 小时是预计学时对于一门五颗星难度的课程可以把这 150 小时粗略划分为三块理论部分跟随龙书与课程讲义学习六大专题配套完成5 个书面作业考察对文法、自动机、类型系统、运行环境等理论的掌握实践部分完成5 个编程作业即上面四阶段编译器 优化/收尾任务这是耗时的大头联调与排错SPIM 上调试生成的汇编、排查语义分析的类型错误等往往是最终能否跑通的关键。自学时建议先快速通读对应阶段的龙书章节再动手写作业避免带着空理论硬写的低效循环如果某一阶段卡壳往往不是代码问题而是对前一阶段的理论如文法设计理解不到位需要回头补课。课程资源与社区资料原文档 docs/编译原理/CS143.md 中收录了完整的资源入口包括课程网站Stanford 官方课程主页该页面的原始 URL 已保留在仓库原文档中可按需查阅课程视频B 站搬运的中文字幕/双语录播合集视频编号BV17K4y147Bz支持国内学习者在无外网环境下观看课程教材龙书《编译原理》课程作业5 个书面作业 5 个编程作业规格见上文。说明按本仓库的链接规范涉及外部站点的原始资源地址未在本页重复粘贴完整可点击链接请直接查阅 docs/编译原理/CS143.md英文版见 docs/编译原理/CS143.en.md。此外文档特别汇总了一位社区学习者 skyzluo 的维护成果skyzluo/CS143-Compilers-Stanford其中整理了这门课学习过程中用到的所有资源以及各编程作业的参考实现。对于自学者来说它的价值在于两点资源先行省去自己四处翻找课件、讲义、手册的时间卡壳对照当某个阶段实在调试不通时可以对照参考实现定位思路偏差建议先独立思考再对照验证。选课建议什么人适合选择 CS143综合本仓库 docs/CS学习规划.md 的编译原理路线与 CS143 自身特点以下画像的读者最适合选它已修过计算机体系结构先修要求理解 MIPS 指令集、栈帧与调用约定否则后端与运行时环境部分会比较吃力熟练掌握 Java 或 C两种语言任选其一即可完成全部作业语言不是门槛面向对象编程能力反而是优势——毕竟你要为 OO 语言写编译器目标是一条经典名校全链路路线想要龙书理论 完整编译器工程的最正统组合且能接受约 150 小时、五颗星难度的投入。如果时间有限或希望更快获得正反馈可考虑同目录下学时更短的替代路线如 docs/编译原理/PKU-Compilers.md、docs/编译原理/NJU-Compilers.md但如果你的目标是系统掌握写编译器的全部方法论——词法、语法、语义、运行时、寄存器分配、优化与生成——并在 SPIM 上亲眼看到自己编译的程序运行起来那么 CS143 就是这条路上最值得投入的一站。【免费下载链接】cs-self-learning计算机自学指南项目地址: https://gitcode.com/GitHub_Trending/cs/cs-self-learning创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考