7

是否有可能翻译一种语言到另一个翻译?将一种语言翻译成另一种语言?

听说quercus可以将php转换为java吗?起初,我认为这是一个便宜的糟糕的解决方案,可能会导致代码错误,但似乎完全有可能这样做。

你能把php翻译成其他语言,比如python或ruby吗? C++到Java等?

+0

你可以有一个产生糟糕,但工作的解决方案便宜糟糕的解决方案。作为一般规则,你不能轻易地在各种语言之间进行翻译,而且你也不能在糟糕的基础机器上做好工作。 – 2011-04-23 08:59:10

+0

一个标准的错误答案是,“将原始语言翻译为模拟原始语言语义的目标语言库的调用”;本质上你是建立一个口译员。你可以随时做到这一点;一台图灵机可以总是模仿另一台图灵机。但是这种翻译的结果通常是非常糟糕的,没有按照目标语言培训的维护人员期望的方式使用目标语言,而且经常需要很高的开销(所有这些模拟调用)才能启动。所以,你总是可以做到这一点,但你不应该这样做。 – 2011-04-23 09:05:18

+0

查看我的SO answer on how to translate between languages 2011-04-23 08:52:38

回答

11

将一种语言翻译为另一种语言对于称为编译器,解释器和翻译器的程序类来说只是一个特例。

这个类的程序将需要输入符号流(“源代码”),其可以通常被正式语法描述的和将输出符号流。

即符号的输出流可以是:

  • 本机汇编代码,通常为操作系统和硬件机器上运行。如果是这样,该程序被称为编译器;
  • 不同操作系统和/或硬件的本机汇编代码。这也可以称为编译器,但通常称为交叉编译器;
  • 中间形式可以由某种虚拟机执行。这不是一个真正的编译器,但通常称为编译器。 Java,C#,F#,VB.NET等“编译器”都属于这一类;
  • 完全用另一种语言。这就是所谓的翻译器,并且有一些例如Java to C#翻译器。他们通常有不同程度的成功,因为成语常常不易翻译;
  • 口译员遵循相同的原则,但通常在原地执行处理过的表格而不是将其保存在某处。 Perl,PHP和shell脚本都属于这一类。例如,PHP将操作码缓存中的操作码存储为中间形式(如果启用了操作码缓存),但该中间形式未被存储,因此调用PHP解释器仍然是安全的。
+0

有没有可以建议的书籍,教程或例子?即使是简单的一个 – lostmylogin 2018-03-07 06:28:13

5

问题出现在成语翻译得不好的时候,或者来自或来自。你得到的代码在语法上是有效的,但看起来它是由酸性人写的。

+0

+1对于酸赫赫 – 2010-01-13 07:58:25

+0

但它的工作原理?:) – ajsie 2010-01-13 09:06:14

+0

不能证明多快或好,但肯定。 – 2010-01-13 09:15:40

1

这可能不是你所追求的,但有痛饮 http://en.wikipedia.org/wiki/SWIG

我们使用它在我们的项目之一,以创建一个C++框架的Python,Java和Ruby的绑定/包装。在实践中看到它在http://marsyas.sness.net

+0

我不太明白......它在纯英文中做了什么? – ajsie 2010-01-13 09:05:12

2

SO为“transpiler”为一些指针搜索:https://stackoverflow.com/search?q=transpiler

+2

+1,从来没有听说过的术语transpiler。听起来很老土,但有用。 – 2010-01-13 08:11:18

+0

-1,我一直在建造翻译工具很长一段时间,每当你听到像“译员”或“代码转换器”而不仅仅是“译者”这样的螺旋球术语时,答案本身就是一团糟,如果不是一个好的解决方案完全可以工作。我看过的那些实际上会产生答案,但只有通过回答你的意思是“翻译并运行并且是维持的彻底噩梦”。参见关于生产JOBOL的NACA的讨论:http://stackoverflow.com/questions/1029974/experience-migrating-legacy-cobol-pl1-to-java/1061829#1061829 – 2011-04-23 08:53:55

+1

对不起,这不是你的教育;我的老师教过我这个术语。 – 2011-04-24 20:33:37

相关问题