如下有一个小目标
对于普通程序员,我认为编译原理这门课主要掌握几点就够用了:
- 词法分析方面,掌握正则表达式,了解dfa/nfa。
- Parsing 方面,能读懂BNF,知道AST,会写简单的递归下降parser,会用antlr之类的parser generator。
- 优化方面,知道现代编译器的优化能力有多强,知道如何配合编译器写出高效易读的代码,避免试图outsmart编译器。
- 会实现简单的虚拟机(stack-based,不带GC),并把四则运算表达式翻译为虚拟机指令。
——引自山威油条博客:
山威油条的感悟.
一个整理了一些相关知识的网站链接:
编译原理基础
你在查资料的时候应该也会遇见大量的龙书,虎书,鲸书的说法,不用查了给你一个直通车↓↓↓
龙书、虎书、鲸书是什么.
刚开始学习,查了一些经验贴,总结说来,
-
刚开始学习不建议直接看龙书、虎书和鲸书,而要先看一些可以实践的书籍(有人觉得虎书薄,且有利于实践),比如有人推荐了两本书,一本叫《编译原理与实践》,另一本叫做《计算机系统要素》(刚下单)。
-
编译原理是一门对背景知识要求很重的课程,边实践边学理论是很多人觉得有效的方法
-
在知乎“如何学习编译原理的”问题下,还有一些别的网站可供学习,比如这里有一个被说靠谱的 实现一个编程语言专栏
-
还有一个被推荐为手把手的教程,英文阅读能力好戳它看看
2021.01.26