脚本语言可以翻译成其他语言吗?

时间:2011-02-04 06:17:11

标签: c++ code-translation

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

6 个答案:

答案 0 :(得分:5)

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

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

简而言之,是的,它可以完成,但不会导致产生漂亮的代码。

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

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

但是,在我看来,我会说代码翻译是一项非常危险的业务。当你手动重写你知之甚少的代码时,制作拼写错误或其他错误要容易得多。自动翻译工具在这方面也不会表现得更好。然后,一旦你翻译了代码,如果有错误怎么办?你怎么找到他们的?并解决它们?当你对实际代码知之甚少时。这可以很快成为一种噩梦般的体验。我过去做过,不再这样做了!

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

对于java,有一种脚本语言,beanshell / bsh,它将简化的java代码作为脚本运行。但是你必须重写它才能使Javacode脱离它,而且我不知道这个过程会变得多么容易,让它自动发生。

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

答案 5 :(得分:0)

取决于你想要什么。通常,您可以从任何语言构建语法树,并在C / C ++ / Java /中构造等效构造。不要指望代码超快,只是因为现在编译它在某些情况下可能会更慢。

这里有一些项目可以执行source-to-jit或source-to-executable:

基于Java Byte代码:将为您提供java类,您可以从java中调用它们。 您也可以反编译它们以获取源代码,但这对性能没有帮助。

C ++: