解释型程序与编译型程序
解释型程序与编译型程序教程
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:解释型程序与编译型程序。
解释型程序
执行方式类似于我们日常生活中的 “同声翻译”,应用程序源代码一边执行,一边被相应语言的解释器 “翻译” 成目标代码(机器语言)。
因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。
典型的解释型的高级语言有 BASIC。
编译型程序
编译是指在应用源程序执行之前,就将程序源代码 “翻译” 成目标代码(机器语言)。因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。
但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件才能执行,只有目标文件而没有源代码,修改很不方便。
现在大多数的编程语言都是编译型的,例如 C++、Java 等。
解释型程序与编译型程序图解
编译是对高级语言程序进行一次性翻译,这样的好处是,一旦源程序被彻底翻译,它就可以重复运行,且今后都不再需要编译器和源代码。
如果使用解释器,则高级语言程序每次运行,都需要借助源程序和解释器,其最大的好处就是,程序有很好的可移植性。
解释型程序与编译型程序对比
计算机不能直接的理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言, 也就是 0 和 1,这样计算机才能执行高级语言编写的程序。
翻译的方式有两种,编译和解释 。
解释型语言 | 编译型语言 | |
---|---|---|
特征 | 在运行程序的时候才翻译,每执行一次,要翻译一次,效率较低。 | 就是直接编译成机型可以执行的文件,只翻译一次。 |
优点 | 可移植性好,只要有运行相应需要的解释环境,可以在不用的操作系统上运行,修改调试也非常方便。 | 相比解释执行编译执行效率高,占用资源小,适合复杂程序。 |
缺点 | 一句一句执行解释,浪费计算机资源,效率低。 | 兼容性差,编译型程序虽然源代码也可以移植,但前提是必须针对不同的系统分别进行编译。 |