编译型语言vs解释型语言,还有JIT是什么鬼?
1)编译型vs解释型
高级编程语言,按照程序的执行方式分为两种。一种是编译型语言,一种是解释型语言。
编译型
编译型语言会通过编译器将源代码一次性翻译成机器码,然后执行。一般编译型语言执行速度比较快,常见的编译型语言有C、C++等。
解释型
解释型语言会通过解释器一句一句地将源代码解释成机器码并执行,一般解释型语言开发效率比较高。常见的解释型语言有Python、JavaScript等。
小结
可以发现无论是编译型语言还是解释型语言都是将源代码译成机器码才能执行,其区别在于一个是执行前先行编译(编译型),一个是执行期间动态解释(解释型)。
那为什么得翻译成机器码才能执行呢?
因为计算机只能直接识别和执行特定的指令集,这些指令集就是机器码。源代码本质上只是一些文本,只有翻译成机器码才算是一个指令或者说一个程序。
2)JIT(即时编译)
为了结合两种类型的有点,发展出了即时编译(Just IN Time,JIT)让编译与解释并存。它像编译型语言一样,先把源代码编程成字节码,到执行期间再将字节码直译,然后执行。Java就是这种类型的代表