Compiler construction 编译与传输
在寻找差异时,我遇到了以下定义: 编译是将用一种语言编写的源代码转换成另一种语言的通用术语 Transpiling是一个特定的术语,用于将用一种语言编写的源代码转换成具有类似抽象级别的另一种语言 我明白什么是抽象Compiler construction 编译与传输,compiler-construction,abstraction,transpiler,Compiler Construction,Abstraction,Transpiler,在寻找差异时,我遇到了以下定义: 编译是将用一种语言编写的源代码转换成另一种语言的通用术语 Transpiling是一个特定的术语,用于将用一种语言编写的源代码转换成具有类似抽象级别的另一种语言 我明白什么是抽象 但在上述定义中,“相似的抽象层次”是什么意思?我们如何在语言中找到抽象的层次 这里有一种描述性的回答方式 如果您认为抽象层就是这个示例: (1) CPU-level (actual logic gates on the CPU) (2)machine code (3)assembly
但在上述定义中,“相似的抽象层次”是什么意思?我们如何在语言中找到抽象的层次 这里有一种描述性的回答方式 如果您认为抽象层就是这个示例:
(1) CPU-level (actual logic gates on the CPU)
(2)machine code
(3)assembly code
(4)[C/C++, JVM/bytecode]
(5)[JavaScript, Python]
编译器转到较低的级别(较低的数字)。transpiler以相同的数字从一种语言(或语言版本)切换到另一种语言。下面是一种描述性的回答方式 如果您认为抽象层就是这个示例:
(1) CPU-level (actual logic gates on the CPU)
(2)machine code
(3)assembly code
(4)[C/C++, JVM/bytecode]
(5)[JavaScript, Python]
编译器转到较低的级别(较低的数字)。transpiler从一种语言(或一种语言的版本)切换到另一种语言,切换次数相同。您上面引用的定义太笼统,初学者无法完全理解,因此让我将其简化为我们实际看到的内容 编译器:是一个总括术语,用于描述一个程序,该程序使用一种语言编写的源代码,并使用其他语言生成一个(或多个)输出文件。 在实践中,我们主要使用这个术语来描述编译器,比如gcc,它接受C代码作为输入,并生成二进制可执行文件(机器代码)作为输出 传输编译器也被称为源到源编译器。因此,本质上,它们是编译器的一个子集,它接收源代码文件并将其转换为另一个源代码文件,使用某种其他语言或同一语言的不同版本。输出通常是人类可以理解的。该输出仍然必须经过编译器或解释器才能在机器上运行 Transpiler的一些示例:
希望这有帮助 您上面引用的定义过于笼统,初学者无法完全理解,因此让我将其简化为我们实际看到的内容 编译器:是一个总括术语,用于描述一个程序,该程序使用一种语言编写的源代码,并使用其他语言生成一个(或多个)输出文件。 在实践中,我们主要使用这个术语来描述编译器,比如gcc,它接受C代码作为输入,并生成二进制可执行文件(机器代码)作为输出 传输编译器也被称为源到源编译器。因此,本质上,它们是编译器的一个子集,它接收源代码文件并将其转换为另一个源代码文件,使用某种其他语言或同一语言的不同版本。输出通常是人类可以理解的。该输出仍然必须经过编译器或解释器才能在机器上运行 Transpiler的一些示例:
希望这有帮助 我基本上同意塔帕那和答案,但是
定义 词语是“造”出来的,所以它们是有目的的。这也会随着时间而改变 我们现在倾向于使用transpiler来指定一个编译器,该编译器将代码翻译成与源代码“更相似”的其他代码,这就是编译器可能做的。当在同一上下文中提到这两种语言时,通常使用And来区分这两种语言(同样,这主要意味着一种transfile语言必须至少编译一次)
例子 所以一切都很主观。在撰写本文时:
- 来自Java世界,我可以调用CoffeeScript/TypeScript Transpiler来描述生成的代码不再有效