上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.1 为什么要了解Go语言编译器
编译器是一个大型且复杂的系统,一个好的编译器会很好地结合形式语言理论、算法、人工智能、系统设计、计算机体系结构及编程语言理论。Go语言的编译器遵循了主流编译器采用的经典策略及相似的处理流程和优化规则(例如经典的递归下降的语法解析、抽象语法树的构建)。另外,Go语言编译器有一些特殊的设计,例如内存的逃逸等。在本章中,笔者将分别介绍Go语言编译器的各个阶段。
编译原理值得用一本书的笔墨去讲解,通过了解Go语言编辑器,不仅可以了解大部分高级语言编译器的一般性流程与规则,也能指导我们写出更加优秀的程序。本书后面的章节经常会禁用编译器的优化以及内联函数等特性调试和查看代码的执行流程。后面还会看到,很多Go语言的语法特性都离不开编译时与运行时的共同作用。另外,如果读者希望开发go import、go fmt、go lint等扫描源代码的工具,那么同样离不开编译器的知识和Go语言提供的API。