编译原理速成课的收藏量,超过了名课总和:开学前两周,先做这三件事

源自29位全网作者

17:14

先说一组今天(8 月 20 日)从 B 站检索到的数据,挺说明问题的。

搜"编译原理",收藏量最高的一批视频全是期末速成:《混子速成期末保过》4.15 万收藏、《期末复习零基础自学》3.34 万收藏、《零基础期末速成》9899 收藏,三个加起来 8.4 万。而那些本来用来"好好学"的名课呢?哈工大公开课 3.0 万收藏,国防科大国家级精品课 1.66 万,斯坦福 CS143 两个搬运版本合计约 2 万——名课加一块,没打过速成课。

这意味着两件事:第一,大多数人的编译原理最后都是突击过的;第二,如果你秋季学期要上这门课,现在到开学前这两周,是唯一能用极低成本提前布局的窗口。今天就把这门课该怎么备课说透。

它为什么"索命":不是背得多,是换了一种语言

先看社区里的真实声音。小红书上最流行的说法是"文法+自动机+LL/LR 三座大山",有学生直接喊"编译原理是来索命的吧"。小红书也有同学被折磨到吐槽"第一次因为学习大脑缺氧,竟然是因为破编译原理的期末考"。微博知乎上则常年挂着几个月经帖:编译原理是不是计算机基础课里最难的?知乎但把吐槽拆开看,难点其实很集中:这门课会突然从"写代码"模式切换到"形式化"模式。文法是第一道坎,它用几条规则描述"合法句子长什么样"——汉语句子可以按主谓宾一层层拆成语法树。

编译原理速成课的收藏量,超过了名课总和:开学前两周,先做这三件事

编程语言里的算式也一样:把 3+2*5 按文法解析成树,乘法节点比加法节点更深一层,运算优先级就靠树的结构表达。

编译原理速成课的收藏量,超过了名课总和:开学前两周,先做这三件事

再往后,递归、归纳、集合运算、状态机,这些你在离散数学里见过的词,会组合成 FIRST/FOLLOW 集、LR(1) 分析表——绝大多数人是第一次真正用它们做题。卡住人的不是知识量,是这道形式化门槛。

反过来也有个好消息:正因为考试主要考"算"——画有限自动机、构造项目集、填分析表——它本质是一种程序性技能,程序性技能是可以练出来的。这就解释了 B 站那组数据:摸清考法之后,三小时速成确实能救个及格分。问题是,速成救得了绩点,救不了理解。

三种流行的备课方式,恰好都是贵的

坑一:上来就买龙书啃。 知乎一个 32 赞的荐书回答把这个路径写得明明白白:一开始只想看看编译器怎么生成代码,结果买了龙书翻开几页就想睡,硬看硬练,大部分人在前端部分就放弃了。知乎龙书当然是权威,但有知乎专栏作者说得更直白:它"也许是一本非常专业的书,但作为教材是非常糟糕的,基本上不是写给人类看的"。知乎它其实是哈工大公开课的指定教材,权威性和可读性是两回事,开学前抱着最厚的书去预习最劝退的章节,属于典型的高投入低回报。哔哩哔哩

坑二:收藏速成课,心里就有底了。 速成课是事后药,不是事前针。3 小时版本能覆盖的题型有限,万一你们学校出题偏深,兜底就会失效。

坑三:挑最有名的网课从头刷到尾。 微博上有位同学记录了真实错配:跟着哈工大网课学,感觉是难但是能看懂,结果期末考试题居然出得很浅,开始怀疑自己看了那么久网课有什么意义。微博网课的深度和你校考试的深度是两回事,备课前先找直系学长学姐问清楚本校考法,比选哪门网课更重要。

开学前两周,真正值得做的三件事

动作一:2 小时建立流水线全貌(0 元)。 词法分析→语法分析→语义分析→中间代码→优化→目标代码,先把这张地图刻进脑子里。现代编译器通常把这六步归成三大块:前端负责把代码读懂,中端负责优化,后端负责生成目标机器码,同一份源码在低优化和高优化两档下产出的目标代码会有明显差别。

编译原理速成课的收藏量,超过了名课总和:开学前两周,先做这三件事

B 站上就有现成的免费入口:8 月中旬新发的《编译器到底做了什么?7 分钟搞懂源码到机器码的完整流水线》是动画版速览,把编译器完整拆开讲。哔哩哔哩想动手的话,《十分钟看懂编译器》用 Python 把每一道工序拆开讲一遍,最后给你一个 30 行能跑的小编译器。哔哩哔哩这一步不追求看懂每一步,只追求"知道有哪几步"。

动作二:补两块前置工具,总共 10 小时左右。 一是集合与归纳——文法章节的证明几乎全靠数学归纳法;二是树、栈、哈希表——语法树、符号表全建立在这几个结构上。不需要碰高数,也不需要线代。

动作三:定一套"主教材+主网课",其余全部降级为参考。 按目标分三档:

目标

教材

课程搭配

稳过型

学校指定教材即可

跟紧老师,考前两周再看速成视频兜底

扎实型

国内经典教材为主线(国防科大精品课的主教材即陈火旺版《程序设计语言编译原理》)

用哈工大或国防科大公开课补缺薄弱章节,不要从头刷

动手型

虎书(Appel《现代编译器实现》)或实践向讲义

B 站《从头开始开发一个 C 语言编译器》《硬核开课》系列,边学边写迷你编译器

龙书对三档人都适合当字典查,不适合开学前逐页读。表里扎实型一栏的陈火旺版教材,正是国防科大精品课的主教材,编委会就是授课团队,书和课天然配套。哔哩哔哩知乎上一个 128 赞的自学帖也给了类似建议:先以一本书为主立起知识框架,掌握全局后再细读别的材料,他点名推荐的是自底向下、以问题驱动的《编译器设计》。知乎另外提一句时间线:今年 7 月中下旬,斯坦福 CS143 中英双语全套、哈佛 CS153 中文配音版相继出现在 B 站,暑期预习内容供给明显在涨。哔哩哔哩但供给涨了不等于你得全看,选定一套,其余先关掉。如果你选了动手型,起点几乎一定是语法树:把每条文法规则变成一步建树操作,在节点上标注语义信息,一句源代码对应树的哪些位置,写着写着就清楚了。

编译原理速成课的收藏量,超过了名课总和:开学前两周,先做这三件事

最后:这门课到底"保值"吗

7 月知乎有个问题问:"为什么编译原理看起来与现实距离这么远,在高校里面还要花这么大的功夫教和学呢?"一个回答的看法反而很乐观:放在过去这个质疑有点道理,结果到了 AI 时代,只剩下编译原理、操作系统、微机原理、计算机网络,成了整个码农技术栈中为数不多算得上"保值"的东西。知乎小红书上也有笔记讨论同样的反差:编译原理、近世代数、集合论与图论,这些科班生都头疼的课,为什么反而最该补?小红书我的看法更实际:保不保值,取决于你学到哪一层。60 分的知识够你拿学分;分层抽象和形式化建模这套设计思维,要学到 85 分才真正长在身上。知乎上还有个 143 赞的说法——“编译原理本身其实不难,难的是和写一个编译器的差别就好像设计浏阳花炮和设计东风火箭”——知道原理和做出来之间隔着工程,而开学前想清楚自己要哪一层,恰恰是最便宜的决定。知乎

两个继续观察的信号

开学第一周,看老师课上习题里计算题和理论题的比例,计算题占大头就"多练少看";如果你们是自考路线,代码 13007 的《编译原理》是常考科目,8 月已经进入考前资料密集期,该开始刷真题了。小红书

内容由AI生成

精选参考来源

1. 🔥编译原理90+核心秘籍|狂拆考点💯期末必备

2. 第一次因为学习大脑缺氧,竟然是因为破编译原理的期末考

3. 编译原理是不是计算机基础课程中最难的?

4. 学编译原理有什么好书?

5. 编译原理: 理解自底向上语法分析

6. 【编译原理】哈工大公开课(高清版)

7. 编译原理看了哈工大的网课,感觉是难但是能看懂。结果期末考试题居然出这么浅,我竟然不知道编译原理还能变成这样。那我这学期看那么久的编译原理网课有什么意义?我不懂我们学校保研的意义是什么,我一直在怀疑自己

8. 编译器到底做了什么?7 分钟搞懂源码到机器码的完整流水线

9. 十分钟看懂编译器:从字符到 AST,用 Python 拆开一条流水线

10. 国防科技大学-编译原理(国家级精品课)高清流畅

11. 怎么高效自学《编译原理》

12. 【极致中配】哈佛大学 CS 153 编译原理 Compilers | Fall 2021

13. 为什么编译原理看起来与现实距离这么远,在高校里面还要花这么大的功夫教和学呢?

14. 计算机里最“没用”的课,却最值钱

15. 早就听闻编译原理很难,而且很重要,写一个编译器算是合格,快放假了,寒假大概40天左右,能学个什么程度?

16. 北京自考13007编译原理考前资料密训考点

0
扫一下,分享更方便,购买更轻松
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

最新文章 热门文章