接目录页:
2.1语言的翻译过程
任何一种编程语言都需要从源代码(人理解)转化为机器指令(电脑)。而执行这个过程的东西,我们把其称之为翻译器(interpreter)和编译器(compiler)
2.1.1解释器
解释器将代码转换为一2.1.些动作,并立即执行他们。
对于解释器而言,快速的代码到执行代码转换速度、较好的交互性、适用于快速程序开发都是它的好处。但对于大项目而言,缓慢的速度使其无法被人们接收(python例外)。且由于其要求一次性输入整个源代码,限制了内存空间也不利于调试。
2.1.2编译器
编译器直接把源代码转化为汇编或机器指令,这是一个复杂的过程,但是由于其生成后的程序较小、运行快,更拥有着可以分段编译(separate compilation)能力,使其变成了主要的编译方法。
对于分段编译,最大的优点就是其支持独立创建程序,这样一个大项目就可以被拆分成为多个小内容,简化工作量。
2.1.3编译过程
编译过程一般分为两步。
首先,编译器将源码分为小的单元并按照树形结构组织起来。e.g "a + b" 中的 “a” “+” “b” 就都是叶子节点
然后,使用代码生成器(code generator)遍历语法分析树,从而生成目标模块。
当存在函数调用或者某个目标模块中的函数要引用另一个目标函数中的模块的时候,连接器(linker)将会帮我们执行这些操作。除此之外,连接器还将添加一个特殊的目标模块来进行程序的启动工作。