因为高级语言计算机是识别不了的,得转换成计算机识别的机器码,这个翻译的过程就两种形式,一种是编译性,一种是解释性
区别
编译性:在执行前先将代码编译成计算机识别的二进制文件,比如c,会先编译生成.exe文件,后续执行就不用再编译了,直接运行这个二进制文件就可以了。 优点就是:编译一次即可,缺点就是可移植性差,因为每个平台能理解的二进制文件可能不同,需要重新编译(如windows编译成ext文件,linux编译成erp文件)。
解释性: 执行代码前不用编译,而是在运行代码的时候逐行去解释,当然需要当前环境配有该语言的解释器,优点就是可移植性好,只需改平台配有该语言的解释器即可,如js,java,shell, 缺点就是 速度慢,因为每次执行都需要翻译一次。
其中java比较特殊,它既有编译又有解释的过程,他先编辑成字节码,生成.class文件,然后放到JVM(java虚拟机)进行逐行解释,所以如果要移植,只需该平台拥有相匹配的JVM 即可运行java的.class文件。
总结
- 编译型语言在程序执行前有一个单独编译的过程,只编译一次,后续执行就无须翻译
- 解释性语言运行时将代码翻译成机器语言,且每次执行都会翻译,所以执行速度比较慢