高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好
低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差
机器语言:
优点是最底层,速度最快,缺点是最复杂,开发效率最低
汇编语言:
优点是比较底层,速度最快,缺点是复杂,开发效率最低
汇编语言也是低级语言,汇编语言只不过是机器语言的助记符罢了。
高级语言的运行机制
计算机高级语言按程序的执行方式分为编译和解释型两种
编译型语言是指使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性“翻译”成可被平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行程序的格式,这个转换过程称为编译(compile)。
因为编译型语言是一次性地编译成机器码,所以可以脱离开发环境独立运行。因为编译型语言的程序被编译成特定平台上的机器码,因此编译生成的可执行性程序通常无法移植到其他平台上运行:如果需要移植,则必须将源代码赋值到特定平台上,针对特定平台进行修改,至少也需要采用特定平台上的编译器重新编译。
c、 c++、objective-c、pascal等高级语言属于编译型语言。
简单总结:
编译型:
1、把源代码编译成机器语言的可执行程序
2、执行可执行程序文件
优点:
1、程序执行时,不再需要源代码,
2、执行速度快,因为你的程序代码已经翻译成了是计算机可以理解的机器语言。
缺点:
1、每次修改源代码,都要重新编译,生成机器码文件
2、跨平台性不好,不同操作系统,调用底层的机器指令不同,需为不同平台生成不同的机器码文件
解释型语言是指专门的解释器对源程序逐行解释成特定平台的机器码并立即执行的语言。相当于把编译型语言中的编译和解释过 程混合到一起同时完成。
每次执行解释型语言的程序都需要进行一次编译,因此解释型语言的程序运行效率通常较低,而且不能脱离解释器独立运行。但跨平台比较容易,只需要提供特定平台的解释器即可,每个特定平台上的解释器负责将源程序解释成特定平台的机器指令即可。
Ruby python等语言都属于解释型语言。
简单总结
解释型:
1、用户调用解释器,执行源代码文件
2、解释器把源代码文件边解释成机器语言边交给CPU执行
优点:
1、天生跨平台,因为解释器已经做好了对不同平台的交互处理,用户写的源代码不需要再考虑凭条差异性,可谓,一份源代码,所有平台都可以直接执行
2、随时修改,立刻生效,改完源代码后,直接运行看效果
缺点:
1、运行效率低,所有的代码均需经过解释器边解释变执行,速度比编译型慢很多
2、代码是明文。
注意:
Java语言编写的程序需要经过编译,但这个编译步骤并不会生成特定平台的机器码,而是生成一种与平台无关的字节码(.class文件)。这种字节码不是可执行的,必须用java解释器来执行。
Java语言既是编译型语言,也是解释型语言。Java程序的执行过程必须经过先编译、后解释两个步骤。
Java源文件(.java)使用javac编译生成字节码文件(.class),使用java解释执行生成特定平台的机器码。