知乎上有一种说法是「编译器、图形学、操作系统是程序员的三大浪漫」。
先不管这个说法是对是错,我们假设一个程序员在国内互联网公司写代码,业余时间不看相关书籍。那么三年之后,他的这些知识会比在校时损耗多少?
很显然,损耗的比例肯定非常高,毕竟国内互联网公司日常开发工作中,程序员基本很少接触这三块知识。大部分程序员工作几年后对编译原理相关的概念只能生理上起反应,脑海里很难再串联起相关概念了。
编译原理的概念有让人看到就头痛的特质,学校里要死记硬背,考试过了巴不得赶紧全忘掉,相信不少同学现在看到下面概念还会觉得蛋疼:
非确定性有限自动机/确定性有限自动机
四元式序列
上下文无关文法/BNF
终结符/非终结符
LL(1)/LR(1)
特设语法制导转换
局部优化
如果要按照课程来,光是背下这些名词和释义别说21分钟了,21天都有难度。更何况背下来这些名词之后如何写编译器又是另一个问题。
我们很多时候,都只是想快速上手写一个编译器,有可能是因为好奇,有可能是想实现自己的玩具DSL(领域特定语言),或者有可能是为了在约架时候防身。
来源: http://www.cnblogs.com/fingerpass/p/master-compiler-in-21-minutes.html