十、土豪程序员的美食
Steve招聘程序员看重编译器,他认为编译原理知识和面试变现之间有线性关系,他之前工作过的公司那些最牛的工程师都是玩过编译器和解释器的家伙。玩编译器的人通常在面试里的表现都会相当出色,不管有没有被问到和编译器有关的问题。对编译器一无所知的人往往在计算机科学教育和对系统架构的整体把握上有缺陷。
不懂编译器原理的人,也不懂计算机的原理,如果你不知道自己是不是真的懂,那你就是不懂。编译原理是计算机科学本科里第二重要的课程。
不了解计算机架构的人,是不可能完全理解编译器是怎么工作的。不了解操作系统的人也无法理解现代编译器的工作原理。不先学计算理论的课程也无法理解编译器的工作原理,计算理论一定要全部弄懂。我们也学编程课,了解编程语言的极限在哪里,不精通多门语言就想写个编译器是毫无意义的。编译器可以用来进行图像处理和自然语言处理。我们遇到相关问题,可以自己动手而不是等别人更新编译器。
很多程序员不学编译原理和操作系统,认为这两门课很难。其他计算机科学的课程例如人工智能、机器学习、分布式计算、算法设计一样重要,但是编译原理是非常重要的。
大型系统都很烂,做出这么个系统的人也很烂。
编译过程的第一个大阶段是解析,职业程序员光是了解解析就能走得比别人远。如果你不懂解析,那么就只能用正则表达式,要是连正则表达式都不懂,那么最后写出来的状态机肯定是垃圾。
我们可以动手写一个编译器出来,这样能学到很多。