2011-02-04 132 views
2

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

+3

是,以同样的方式,日本可以翻译成英语。这不是一件小事,你可能在这个过程中失去一些意义,但这是可能的。 – 2011-02-04 06:21:21

+0

基本上?是的,总是 - 因为大多数脚本语言都是用C编写的,并且不能获得底层语言缺乏的功能。几乎?取决于语言和编译脚本是否可以接受。 – SpliFF 2011-02-04 06:24:41

回答

5

从理论上说,是的,它可以把任何脚本语言为C,C++或Java代码。一个理论上有效的方法是获取解释器的源代码,然后在要执行的脚本中进行硬编码。最终的代码将会“运行用C/C++/Java编写的指定源代码解释器”。

在实践中,通常不是从脚本语言中,可以保留原来的编码风格的方式一些其他的目标语言翻译的好方法。每种语言都有其自己的构造,习惯用语和特质,并且在从源脚本语言翻译成目标语言时,很多原始结构都会丢失。也就是说,出于性能方面的原因,有许多项目会进行这种转换。例如,出于效率原因,Facebook的HipHop编译器将PHP转换为C++。不过,由此产生的代码并不适合人类阅读。

因此,在短期,是的,是可以做到的,但不是在那将导致相当代码的方式。

1

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

在我看来,不过,我要说的是,代码转换是一种非常危险的事情。当你手动重写你知之甚少的代码时,犯错字或其他错误要容易得多。自动翻译工具在这方面的表现也不会好得多。然后,一旦你翻译了代码,如果有错误怎么办?你应该如何找到它们?并修复它们?当你对实际的代码知之甚少。这可以很快成为一种梦魇般的体验。我过去做过,不要再做了!

BTW:如果你正在寻找使用上所写的脚本语言编写另一种语言项目中的代码,那么你可以考虑接口的转换,而不是一个代码,以另一种语言的语言。大多数编程语言和脚本语言都具有与其他语言(例如DLL或COM/ActiveX组件)接口的功能。如果可能的话,最好是用最初编写的语言来保存代码。

3

看看shedskin为一个Python到C++转换的一个例子。这并不完美。它对可以翻译的代码有一些限制。但总的来说,它是有效的。

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

0

对于C来说,有些脚本语言看上去有点像C,也许这是一个起点。我想起了Lua。

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

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

1

有一种编程语言叫做Haxe,可以转换成C++,Java,Javascript,C#和其他几种语言。这种语言最近才出现,并被设计成可以翻译成尽可能多的目标语言。

0

取决于你想要什么。一般来说,您可以使用任何语言构建语法树,并使用C/C++/Java/whatever构建等价的结构。不要指望代码超快,只是因为现在编译它在某些情况下可能会更慢。

这里有一些项目是做源到JIT或源到可执行:基于

Java字节码:会给你的Java类,你可以从Java调用它们。 您也可以反编译它们以获取源代码,但这不会提升性能。

C++: