编译器:是一个总括术语,用来描述一个程序,它接受用一种语言编写的源代码,并用另一种语言生成一个(或多个)输出文件。在实践中,我们主要使用这个术语来描述编译器,比如gcc,它接受C代码作为输入,并生成二进制可执行文件(机器代码)作为输出。
Transpiler也称为源到源编译器。因此,本质上,它们是编译器的一个子集,接受一个源代码文件,并将其转换为另一个源代码文件,使用其他语言或同一语言的不同版本。输出通常是人类可以理解的。该输出仍然必须经过编译器或解释器才能在机器上运行
我的理解是
- compiler是向机器,即向下编译,给机器读取的,或者是将一种语言编译成另一种语言。比如上面说的例子,以及将c++编译成js的编译器。
- transpilers是向另一个编译器编译,在同类语言中降级编译。比如babel将ES6++的代码编译成es5的代码给浏览器。