1. 为何会有这个疑问
一开始的时候并不会关注 编译器 和 解释器 的区别,但是最近在学前端框架 Vue 和 React 的时候,经常接触到一个词语就是 “编译器” ,像 Vue框架 的 vue-template-compiler 和 vue-loader 编译器,像 React框架 的 babel-loader 编译器。之前有听到过解释器,于是便深入了解下二者的区别,此知识点应该输入编译原理方面的知识点。
2. 编译器与解释器
2.1 编译器
编译器(compiler)是一种计算机程序,它会将某种编程语言写成的源代码(原始语言)转换成另一种编程语言(目标语言)。编译器是把源代码整个编译成目标代码,执行时不再需要编译器,直接在支持目标代码的平台上运行,也就是说编译器的编译方式就是会将整个程序一块编译完再送去执行。
2.2 解释器
解释器(interpreter),是一种程序,能够把编程语言一行一行解释运行。执行时一直需要解释器。解释器和编译器一样都是将一种语言转化为另一种语言。它不会一次把整个程序翻译出来,而是每翻译一行程序叙述就立刻运行,然后再翻译下一行,再运行,如此不停地进行下去。
3. 优缺点对比
-
3.1 解释器的优点是更容易制作跨平台程序,同一套源代码在不同平台上时,解释器可以将其解释成对应平台可执行的语言格式。但是编译器想要实现跨平台需要针对不同的平台编译出多套目标程序。
-
3.2 编译器的优点是在程序的执行速度上比解释器块。但是编译器的编译时间加执行时间相比于解释器解释并执行的时间来说还是慢的。