在我参加的reactJs会话期间,演示者使用术语转换器进行一些代码转换/移植。在计算机系统/机器上将语言代码转换为可运行的形式时,我总是使用和听到编译器和解释器这两个术语。对我来说,Transpiler对我来说是全新的。有人可以帮助我理解一个Transpiler与编译器或解释器的不同之处以及为什么它真的需要它?
答案 0 :(得分:22)
编译器 - 将代码编译为较低级别的代码。
示例:
"Developer code"
- > "Machine code"
PHP
- > C
Java
- > bytecode
Transpiler - 将代码编译为相同级别的代码/抽象。
示例:
"Developer code"
- > "Another developer code or version"
JavaScript ES2015+
- > JavaScript ES5
口译员 - 解释代码,而不是与上述两个相同的类/联盟/上下文。
示例:php.exe
index.php
内的PHP代码/脚本” - > “结果为html
或就像纯index.html
”答案 1 :(得分:21)
正如本Wiki article中所提到的,它是一种编译器,它将源代码从一种编程语言转换为另一种编程语言。源代码可能是某种语言不再使用,或者不支持最新的硬件/软件改进,或者是程序员的方便/偏袒。
VB6到VB.NET转换器可以被认为是一个Transpiler。我可能会将 COBOL转换为C#/ C ++ / Java 工具作为转换器。
答案 2 :(得分:18)
当您使用像CoffeeScript,TypeScript(您将其命名)等JS预处理器转换为纯JavaScript时,通常会将其称为“转换”。 但它确实不是JS专有的东西。它适用于所有类型的编程语言。大多数情况下,它只是称为编译。
透明是用于编写源代码的特定术语 用一种语言转换成另一种语言 类似的抽象级别。
根据https://www.stevefenton.co.uk/2012/11/compiling-vs-transpiling/
所以你的案例:
另一个例子:
答案 3 :(得分:6)
我一直building such tools since the 1980s。
我们称他们为“来源program transformation systems”。
这个词很好,AFAICT,约45年。这个想法可以追溯到那之前;请参阅Val Schorre的Meta II Compiler-compiler work了解这个想法的1963年版本。
现在我们有了这个新名词;几年前我开始看到它。它什么都没有增加,但听起来很神秘而且很酷。这就是牧师建立自己价值的方式;他们为旧观念创造了新的词汇。
答案 4 :(得分:2)
根据定义翻译器是翻译器的一种特殊形式。
编译器将高级源代码转换为较低抽象级别的代码。通常,但并非必须如此,编译的目标是机器代码。即,可以直接由CPU执行的代码。编译器还可以生成字节码,它是对机器代码的模拟,但后来被所谓的虚拟机(即Java字节码和Java VM)解释。但是,术语编译器可以用于将代码转换为不是机器可执行代码的另一种编程语言的语言。明显的区别是编译器降低了抽象级别。
翻译器将源代码从一种编程语言转换为相同或不同抽象级别的另一种编程语言。请注意,如果源代码也是机器代码,则结果可以是机器代码。
Traspiler 与翻译器非常相似,但是专门在相同抽象级别的编程语言之间转换源代码。请注意,编程语言的不同之处在于它们抽象的内容。不同的抽象级别,特别是因为它们适用于作为抽象支持的不同概念。因此,转换(翻译)通常是在相似之间,而不是相同的抽象级别。
答案 5 :(得分:2)
编译器-它充当人与计算机之间的接口,用于将人类的理解语言转换为机器的理解语言。
编译器类型