Python理论上可以对C进行“反编译”

时间:2014-03-04 15:36:03

标签: python c

由于Python本身是用C语言编写的,理论上可以将任何Python程序“反编译”成C,无论出于何种原因?不翻译,(它将采用程序的语义并在C中编写另一个执行相同操作的程序)但真正反编译(使用程序为每个Python操作找到适当的C函数并以语法正确的方式实现它们)。

3 个答案:

答案 0 :(得分:3)

理论上,任何编程语言都可以翻译成任何其他编程语言。这种理论上的可能性并没有说明它是多么容易,也没有任何现有工具允许你这样做。

“反编译”的含义也很模糊。例如,我可以使用boost::python并将python程序作为字符串嵌入到C ++程序中。现在我有一个完全等同于python代码的C ++程序。然而,这几乎不算是一种正确的翻译。

有些事情没有翻译能够做到(好):

if ask_user():
    a = 1
else:
    a = "hi"
print(a)

由于编译时类型歧义,任何等效的c程序都必须具有一些具有运行时类型信息的精细数据结构。

答案 1 :(得分:0)

是。当然,您可以将翻译为。解释器的部分内容最终会出现在程序中。如果你将python限制为RPython,它会变得容易多了。因为完整python中的一些东西不能很好地翻译。尽管如此,我看来并不多见。

答案 2 :(得分:-1)

签出https://code.google.com/p/py2c/将python转换为c。