2

是否可以将脚本语言翻译成 C、C++ 或 Java,以便它可以在 IDE 上运行而无需重写代码?

4

5 回答 5

5

理论上,是的,可以将任何脚本语言翻译成 C、C++ 或 Java 代码。一种理论上有效的方法是获取解释器的源代码,然后在将要执行的脚本中硬编码。然后生成的代码将“在指定的源代码上运行用 C/C++/Java 编写的解释器”。

在实践中,通常没有一种以保留原始编码风格的方式将脚本语言翻译成其他目标语言的好方法。每种语言都有自己的结构、习语和特质,在从源脚本语言翻译成目标语言的过程中,大部分原始结构都丢失了。也就是说,出于性能原因,有许多项目会进行这种转换。例如,Facebook 的 HipHop 编译器出于效率原因将 PHP 转换为 C++。但是,生成的代码并不打算供人类阅读。

所以简而言之,是的,它可以完成,但不是以一种会产生漂亮代码的方式。

于 2011-02-04T06:23:17.293 回答
3

查看shedskin以获取 Python 到 C++ 转换器的示例。它并不完美。它对可以翻译的代码有一些限制。但总的来说它有效。

在这种情况下,这样做的主要原因是与其他现有 C++ 软件集成的速度和易用性。

于 2011-02-04T06:55:33.703 回答
1

理论上,是的,这是可能的。根据脚本语言及其支持“虚拟机”,有一些工具可以(半)自动执行此操作。语言解释得越重,您翻译代码的可能性就越小(例如,将 HTML 网页翻译成原生 C 有点荒谬,而不是将 matlab 代码翻译成 C 或 C++)。一般来说,用于翻译代码的通用工具很少能很好地编译和运行生成的代码,它们通常会完成大部分语法翻译(基本上是查找和替换操作),也许还有一些更高级的东西。但是,在大多数情况下,您仍有大量工作要做(例如使用谷歌翻译器将网页从一种语言翻译成另一种语言,

然而,在我看来,我会说代码翻译是一项非常危险的业务。当您手动重写您知之甚少的代码时,更容易出现拼写错误或其他错误。自动翻译工具在这方面也不会表现得更好。然后,一旦你翻译了代码,如果有错误怎么办?你应该怎么找到他们?并修复它们?当您对实际代码知之甚少时。这很快就会变成一场噩梦般的体验。我以前做过,以后不要了!

顺便说一句:如果您希望在以另一种语言编写的项目中使用以脚本语言编写的代码,那么您可能会考虑将这些语言连接起来,而不是将一种代码翻译成另一种语言。大多数编程语言和脚本语言都具有与其他语言(例如 DLL 或 COM/ActiveX 组件)交互的功能。如果可能的话,最好用最初编写的语言保存代码。

于 2011-02-04T06:54:40.807 回答
1

有一种称为Haxe的编程语言可以翻译成 C++、Java、Javascript、C# 和其他几种语言。这种语言是最近才出现的,旨在被翻译成尽可能多的目标语言。

于 2012-07-11T01:53:08.980 回答
0

对于 C,有一些脚本语言看起来有点像 C。也许这是一个起点。Lua 出现在我的脑海中。

对于 java,有一种脚本语言 beanshell/bsh,它将简化的 java 代码作为脚本运行。但是您必须重写它以从中生成 Javacode,而且我不知道该过程会多么容易,以使这自动发生。

另一种方法是:编写一个 C 解释器,这样您就可以使用 C 代码进行脚本编写,并在需要时进行编译。

于 2011-02-04T07:17:14.053 回答