编译器与解释器的区别

编译器与解释器的区别

编译器就是一个程序,它可以阅读以某一种语言(源语言)编写的程序,并将该程序翻译成一个等价的、用另一种语言(目标语言)编写成的程序。
如果目标程序是一个可执行的机器语言程序,那么它就可以被用户调用,处理输入并产生输出。

解释器是另种语言处理器,它并不通过翻译的方式生成目标程序,
而是从用户的角度看,解释器直接利用用户提供的输入来执行源程序中的指定的操作。

在计算机科学中,解释器是一种计算机程序,它直接执行由编程语言或脚本语言编写的代码,并不会把源代码预编译成机器码。一个解释器,通常会用以下的姿势来执行程序代码:

分析源代码,并且直接执行。
把源代码翻译成相对更加高效率的中间码,然后立即执行它。
执行由解释器内部的编译器预编译后保存的代码
可以把解释器看成一个黑盒子,我们输入源码,它就会实时返回结果。
不同类型的解释器,黑盒子里面的构造不一样,有些还会集成编译器,缓存编译结果,用来提高执行效率(例如 Chrome V8 也是这么做的)。
解释器通常是工作在「运行时」,并且对于我们输入的源码,是一行一行的解释然后执行,然后返回结果。

简单来说

编译器把源代码转换成其他的更低级的代码(例如二进制码、机器码),但是不会执行它。
解释器会读取源代码,并且直接生成指令让计算机硬件执行,不会输出另外一种代码。

编译器与解释器的区别