Transpiler和Compiler的区别
编译器是一种将高级语言转换为低级汇编语言的软件,我们对它的名称和工作都很熟悉。转译器是另一种软件,有时被称为源代码到源代码的编译器,它将一种高级语言转换为另一种高级语言。现在还不清楚为什么我们需要一个转译器,以及什么时候我们可以将程序重新编码成另一种语言。
我们需要编译器的原因是,将一个大型程序重新编码成另一种语言是非常耗时的。让整个开发团队用另一种语言重新编写整个软件,没有任何额外的改进,这在经济上是低效的。因此,最好编写一个语言到语言的转换器来完成这项工作。Javascript转发器本质上做同样的事情。Web浏览器无法原生编译TypeScript、CoffeeScript或Kotlin,我们需要一个编译器将它们转换成Javascript。
如果要阅读每一篇外国的研究论文,我们必须理解外语,那么这将需要很多努力。没有翻译的生活是艰难的,没有翻译也是如此。
Compiler: 编译器是一种以某种语言编写的源代码作为输入,并将其转换成某种其他语言的输出代码的程序,通常具有较低的抽象级别。在实践中,编译器将用高级编程语言编写的代码转换为汇编语言,汇编语言对机器的抽象性更强,但对人类更容易读懂,汇编语言在机器层次抽象性方面较低,很容易转换为二进制机器代码,但对人类的可理解性很少。
Transpiler: Transpilers还将用某种语言编写的输入源代码转换为用另一种语言编写的输出代码,与源代码相比,这种语言具有类似的抽象级别。转发器是源到源的转换器。它们将代码从一种高级语言(如Java)转换为另一种具有类似抽象级别的高级语言(如c++)。这个输出对硬件来说仍然是抽象的,需要编译器转换成汇编语言才能在机器上运行。
Transpiler和Compiler的区别:
Compiler | Transpiler |
---|---|
它将用高级语言编写的源代码转换为用低级语言编写的输出代码。 | 它将用高级语言编写的源代码转换为用另一种高级语言编写的输出代码。 |
源代码比输出代码具有更高的抽象级别。 | 源代码和生成的输出代码具有相同的抽象级别。 |
输出代码是汇编语言,并且在链接和解码成机器语言后很容易执行。 | 输出代码仍然使用高级编程语言,需要编译器转换为低抽象的汇编语言。 |
在编译器中,对源代码进行扫描、解析、转换为抽象语法树进行语义分析,然后转换为中间代码,最后转换为汇编语言。 | 在编译器中,源代码被解析,并转换为抽象语法树,然后转换为中间模型。然后转换为目标语言的抽象语法树,并生成代码。 |
将Java代码转换为汇编语言指令是编译的一个例子。 | 将Java代码转换为c++代码是一个转换的例子。 |