定义:
编译型语言: 在执行前对已编写好的程序进行一次编译(即将代码翻译成机器语言).这个过程也是编程中的编译时,根据平台的编译器生成一个可执行文件,如windows下的exe, c语言下的cmd文件. 此后每次运行这些文件时 不需要进行编译. 所以运行时效率较高. 但是跨平台性较差. 如已编译好的exe文件不能在mac下使用,需要重新进行编译.灵活性也比较差, 因为编译好的文件如果需要修改则需要重新编译生成可执行文件. (例外:Objective-C的运行时机制可以在运行时才修改方法和属性 这个是灵活的) (使用编译器进行编译)
解释型语言:在执行时才将运行到的代码翻译成机器语言. 每执行到一句代码是直接编译然后执行. 再继续编译下一句代码再继续执行. 这种类型的语言跨平台型好. 因为在运行时才进行编译. 一个文件可以在不同的平台下的虚拟机中编译. 如Java语言生成class文件后. 可以在windows下的JVM下运行同时在Mac的VM下运行. 这种类型效率较低因为需要每句代码编译一次->执行->编译->执行. PHP, Javascript, Python都属于解释型语言. (使用翻译器进行翻译)
例子:
c语言是编译型语言的经典例子.
代码写好后, 需要使用编译器生成一个cmd文件. 然后再运行cmd文件.此时如果对代码进行修改, cmd文件的运行结果和过程不会发生改变. 任何代码上的修改都需要重新编译成cmd文件才能运行并看到成果.
PHP, Java是解释型语言的例子.
代码编写完成后, PHP会保存为一个后缀为php的文件. Java则生成一个class文件.
在不同的平台上. PHP会在运行时编译每句代码并执行. Java也会根据不同平台的虚拟机编译class文件.然后再输出结果.如果在文件中修改代码. 马上就能看到结果不需要重新编译.