解释型程序与编译型程序

解释型程序与编译型程序教程

高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:解释型程序与编译型程序。

解释型程序

执行方式类似于我们日常生活中的 “同声翻译”,应用程序源代码一边执行,一边被相应语言的解释器 “翻译” 成目标代码(机器语言)。

因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。

典型的解释型的高级语言有 BASIC。

编译型程序

编译是指在应用源程序执行之前,就将程序源代码 “翻译” 成目标代码(机器语言)。因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。

但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件才能执行,只有目标文件而没有源代码,修改很不方便。

现在大多数的编程语言都是编译型的,例如 C++Java 等。

解释型程序与编译型程序图解

10 python.png

编译是对高级语言程序进行一次性翻译,这样的好处是,一旦源程序被彻底翻译,它就可以重复运行,且今后都不再需要编译器和源代码。

如果使用解释器,则高级语言程序每次运行,都需要借助源程序和解释器,其最大的好处就是,程序有很好的可移植性。

解释型程序与编译型程序对比

计算机不能直接的理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言, 也就是 0 和 1,这样计算机才能执行高级语言编写的程序。

翻译的方式有两种,编译和解释 。

解释型语言 编译型语言
特征 在运行程序的时候才翻译,每执行一次,要翻译一次,效率较低。 就是直接编译成机型可以执行的文件,只翻译一次。
优点 可移植性好,只要有运行相应需要的解释环境,可以在不用的操作系统上运行,修改调试也非常方便。 相比解释执行编译执行效率高,占用资源小,适合复杂程序。
缺点 一句一句执行解释,浪费计算机资源,效率低。 兼容性差,编译型程序虽然源代码也可以移植,但前提是必须针对不同的系统分别进行编译。