我怎么说编程语言可以编译成其他语言?


22

我怎么用英语说可以将编程语言编译成其他编程语言?

示例可以是Haxe。在网站上,该语言被称为“ Multiplatform”:

多平台:Haxe可以通过其快速编译器编译为所有流行的编程平台-JavaScript,Flash,NekoVM,PHP,C ++,C#和Java(很快)

但是多平台可能被误解为硬件或软件平台(win,mac,linux)。

那么最能描述这个能力的词是什么?


3
我将删除“编译”,只是说可以通过使用某些解释器将此编程语言转换为另一种语言。
尼尔

6
您可以使用与常规语言相同的词:翻译,翻译。很明显,我已经听说过这种含义的单词。
superM 2013年

4
@teresko怎么样?我能看到的唯一方法是,您使用了过于严格和无用的编译定义(将输出限制为机器代码)。

18
@Neil:将用一种语言编写的程序转换为另一种语言不是解释。事实上,这是定义汇编
约尔格W¯¯米塔格

2
@Neil,根据定义,编译是从一种语言到另一种语言的转换。只要您的读者不熟悉术语重写之类的知识,“转换”听起来就和“编译”一样晦涩难懂。因此,我建议使用“目标”一词,例如“ Haxe的目标是JavaScript,Flash等。”
SK-logic

Answers:


41

通常的术语是“反编译”-不是通用术语,而是技术上正确的术语。这不仅适用于流行的新脚本语言(CoffeeScript-> JavaScript);实际上,最早的C ++编译器是C的反编译器。


2
同样是“ transpiles”,如“ Transpiler将CoffeeScript转换为Javascript”

4
我曾在该领域工作数十年,从未听说过这个术语。介意其起源(最好是链接到它出现的第一篇论文)?
SK-logic

摘自Wikipedia:“源到源编译器[aka。“ transcompiler”,“ transpiler”]在运行于大致相同抽象级别的编程语言之间进行转换,而传统编译器则从较高级别的编程语言转换为较低级别的编程语言级别的编程语言。”
13年

4
@ l0b0,维基百科未评论该术语的起源,并且绝对绝不应该将其视为原始来源。
SK-logic

3
...在Google上搜索“反编译”不会产生任何相关结果...
Bakuriu

27

对不起,绅士,但是这个词只是“编译过的”。这意味着将一种类型的代码转换为另一种类型的代码。如果该代码是英语,C ++,x86机器代码,ARM机器代码,Java,字节码或返回英文,则没有任何实际区别。我们通常用它来表示从编程语言到机器代码的旅程,但这是单词随着时间的推移而获得的一个方面。嘿,如果有足够多的人开始不正确地使用一个单词,它的确会获得新的含义。但是,如果您想要将Haxe转换为C ++的单词,则该单词为“ compiles”

多平台:Haxe可以通过其快速编译器编译所有流行的编程语言 -JavaScript,Flash,NekoVM,PHP,C ++,C#和Java(很快)

(此外,我无视Merriam-Webster,因为他们很愚蠢,因为他们不同意我……嗯)


10

也许这是https://english.stackexchange.com/的问题,但我要说的是,编译过程包括编译为另一种高级语言,不仅限于编译为本机代码的编译器。

就像“编译”一词,它根本不是计算机编译器所特有的,而是相当笼统的。我想到了“编译表”或“编译名称列表”,因此它足够广泛,可用于多种用途(像Latex这样的文本处理器也可以编译等)。为了更具体地说明合并的目标,我将使用to-source-compiler

现在针对特定示例,我认为平台是一个合适的词。由于人类语言本质上是模棱两可的,因此如果有疑问,您必须使用冗余(示例,换句话说,解释)来阐明要点。

我还将以包括标准库和类似内容的方式阅读“ Haxe”语句。也就是说,在这种情况下,平台将是“语言”的超集,您可以通过将其称为“软件开发平台”等与它分离。


4
我认为您的意思是english.stackexchange.com?
苏曼

3

您可以说编译器将语言X,Y和Z作为翻译目标,或者在设计语言时要牢记这些目标。


2

我要说的是,编译器按定义可以转换为不同的编程语言(至少我知道这是定义-将一种语言转换为另一种语言的程序)。例如,大多数C编译器将程序集作为输出。汇编编译器接受此输出,并将其转换为也是一种语言的二进制代码(确保-在过去40多年或更长时间中,可能没有人用它写过写,但从技术上讲,这是语言)-可以将其取回并重新编译为微代码,由处理器执行操作(或链接器对目标文件执行某些操作)。同样javap编译成字节码。通常,在该链的末尾有解释器来执行最终代码(无论是CPU,GPU还是已执行的程序)。机器代码没有“东西”,因为现代的x86将程序重新编译为内部操作(微型操作),而我完全有能力将ARM机器代码视为x86上的解释语言或其他方式(在某些情况下甚至可以重新编译)从一种形式到另一种形式)。

Haxe是源到源编译器,因为它没有像前面的示例那样将高级语言转换为低级语言。它似乎并不能直接解决您的多平台歧义性问题,但是不幸的是,我认为这两者之间没有实际的区分方法-API是一种语言,通常可以解释,重新编译等。


1

首先第一件事:我不知道该功能是否已经合适。

但是也许它可以被称为多语言?还是与语言无关?由于它更多地与编程语言有关,因此在名称中提及“语言”可能使其比多平台更为明显。

当然语言也是模棱两可的,因为可以理解,源代码可以用任何现实世界的语言编写(例如,因为变量可以用unicode编写)。

另一方面,每个经验丰富的程序员都可能会认识到这种结构不同于本地化或国际化,因此他们可能会更轻松地“理解”它。

只是我的2美分。


我认为那是不正确的;如果您看到该事实,则该网站只喜欢事实正确的答案。但欢迎来到社区,并希望您在对答案有把握的地方回答更多:)
tgkprog 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.