前言
为什么要学习编译原理? IT行业日新月异,新技术层出不穷,然而这些新技术所依赖的底层技术,如操作系统、计算机系统原理、数据结构与算法、网络、编译原理等依然没多大变化,只有掌握了这些基础技术,在面对新技术才能拨开新技术的迷雾一窥究竟。就好比应用层的知识就是拳法招式,而底层基础知识就好比战马步、练肌肉。所谓练拳不练功,到老一场空,而这些功法中编译原理就是基础之一。编译技术是计算机科学皇冠上的明珠之一,如比尔·盖茨早期最主要的成就,就是写了一个 Basic 的解释器,国外的巨头企业谷歌、微软、苹果这些技术巨头们的核心能力,都是拥有自己的语 言和生态。可见编译技术有多么重要。
编译原理与工作
许多程序员会说,在日常工作中不会去设计一门新的语言,编译原理离得很遥远,其实不然在实际工作中你经常会碰到需要编译技术的场景。比如java 如果你要深入理解和用好如hibernate、和spring(编译技术做 HQL 的解析,对注解的支持和字节码动态生成) 这类工具,以及这类型的工具,会需要编译技术。还有要参与编写一个基础设施类的软件,很多需要采用编译技术提供软件自带的语言功能、还有运维工程师分析日志文件等等高级别的需求,都要用到编译技术。除了丰富的应用场景,学习编译技术对于提升程序员的竞争力也很重要,学习编译原理能让你从前端的语法维度、代码优化的维度、与硬件结合的维度几个方面,加 深对计算机技术的理解,提升自己的竞争力。
编译原理前端技术
编译器前端技术,也就是通常说的词法分析、语法分析和语义分析。这里的“前端”指的是编译器对程序代码的分析和理解过程,主要跟语言的语法有关,跟目标机器无关。而与之