前景提要:
C、C++、JAVA、Python等高级语言的优点:编程更容易、代码更紧凑、可读性更强、出错更容易修改;
可移植的、与平台无关的。
计算机不能直接理解高级语言,只能理解和运行机器语言,所以要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。
将高级语言翻译成机器语言的方式有两种:编译和解释。
关于编译:
编译器对源代码或源文件编译的过程并不执行程序,而是把源代码全部翻译成机器指令(机器语言),再加上一些描述信息,生成一个新的文件,称为可执行文件。
可执行文件可以被操作系统加载运行,而可执行文件编译一次即生成了,所以运行时不再需要编译,因而编译型语言的执行效率相对较高。
编译示意图:
关于解释:
解释型语言编写的程序不需要编译。在运行的时候才翻译,例如Shell程序,在执行的时候,专门有一个解释器能够将其翻译成机器语言,每一行当作一条命令,都是执行的时候才翻译。所以效率相对较低。
所以编译和解释:
在执行效率上:两种转换为机器指令的方式,最大不同之处是处理转换为机器指令(编译)的时机不同。编译型语言是在运行前编译,且只需编译一次,并生成一个可执行文件,每次运行该可执行文件执行即可,效率相对较高。
解释型语言是在运行时进行解释,并不生成可执行文件,所以每次运行都需要进行解释,然后再执行,效率相对较低。
在平台无关性上:编译型语言在编译后生成的可执行文件,是相对于本机机器指令集的,所生成的可执行文件移植到不同机器指令集的机器上,不一定能正常运行。
解释型语言,尽管在不同配置的机器上,也最终会解释成基于当前机器指令集的机器码并执行。
因此解释型语言的可移植性相对来说强于编译型语言的。
对于编译和解释相结合的方式:
Java、Python等编程语言采用这一方式,称为编译型-解释型语言,同时具备编译特性和解释特性。以Python为例,程序员写的源代码.py文件首先被编译成.pyc文件,称为字节码,然后字节码被Python虚拟机执行。字节码是Python虚拟机的指令而非机器指令,所以它是与平台无关的。如果把字节码文件从一种平台复制到另一种平台,只要另一种平台也安装了Python虚拟机,即可运行这个字节码文件。
点个赞呗!