经常见很多人问相关的问题(当然只是其中的一部分,例如virtual function 对效率的影响,增量变异的原理等等),自己也不是完全明白。花了一个下午的时间作了一点总结,大多数内容来自,
wikipedia.org只是翻译和总结。如有不当之处,请提出。如有不全之处也请提出,我及时更新,为其他遇到类似问题的人,提供一点帮助。
1、增量编译(Incremental compiler)[1]
通常,一个编程语言的编译器是这样一种程序,它读取一个或多个源代码文件,产生出一个或多个机器码或其它低级语言代码文件;然后这些生成的代码文件被生成为最终的执行程序。这种情况下产生的执行程序,在执行时是不需要编译器的。这种方式有时被称作“batch compiler”,因为在真正运行之前,一系列(a batch of)的文件生成出最终的执行文件。
与之相对,"incremental compiler"是这样一种编译器。该种编译器在程序运行时,作为程序的一个运行部分。这样他就允许在任何时间(译注:无论指运行期还是非运行期)编译程序的任何部分,或者是扩展原有的程序,或者是代替原有的部分。因为incremental compliler是运行时系统的一部分,所以任何时间源代码都可以从终端、文件、甚至是运行时声称的一段数据结构输入,然后被解释成机器代码块或是函数。新生成的函数可以替换原有的同名函数。并且新编译出的程序可以在程序运行时,立即被更新、使用。
2、Dynamic compilation</
1、增量编译(Incremental compiler)[1]
通常,一个编程语言的编译器是这样一种程序,它读取一个或多个源代码文件,产生出一个或多个机器码或其它低级语言代码文件;然后这些生成的代码文件被生成为最终的执行程序。这种情况下产生的执行程序,在执行时是不需要编译器的。这种方式有时被称作“batch compiler”,因为在真正运行之前,一系列(a batch of)的文件生成出最终的执行文件。
与之相对,"incremental compiler"是这样一种编译器。该种编译器在程序运行时,作为程序的一个运行部分。这样他就允许在任何时间(译注:无论指运行期还是非运行期)编译程序的任何部分,或者是扩展原有的程序,或者是代替原有的部分。因为incremental compliler是运行时系统的一部分,所以任何时间源代码都可以从终端、文件、甚至是运行时声称的一段数据结构输入,然后被解释成机器代码块或是函数。新生成的函数可以替换原有的同名函数。并且新编译出的程序可以在程序运行时,立即被更新、使用。
2、Dynamic compilation</