2010-03-26 13 views
8

Me pidieron que escribiera un traductor de código que tomaría un programa Python y produciría un programa C. ¿Tiene alguna idea de cómo podría abordar este problema o incluso es posible?Escribiendo el traductor de código de Python a C?

+19

estoy indeciso de adivinar sus necesidades sin escuchar más, pero si "te pidieron que escribieras un traductor de código" (por alguien como uno de mis peores jefes), eso sugiere un malentendido en algún nivel. Mi reacción inicial es que (a) alguien piensa "Python = slow, C = fast" siempre, y (b) un traductor de código para Python sería una cosa fácil de escribir. Volvería y preguntaría por qué quieren esto. – Ken

+0

posible duplicado de [¿Convertir el programa Python a código C/C++?] (Http://stackoverflow.com/questions/4650243/convert-python-program-to-c-c-code) –

Respuesta

2

Eche un vistazo a Shedskin. Hace exactamente eso (bueno, para C++ y para un subconjunto de Python y sus módulos). Pero debería ser capaz de proporcionar información valiosa sobre cómo abordar este problema en particular (aunque escribir el suyo ciertamente será no, una tarea trivial).

+0

Gracias, Christopher. Voy a estudiar el código fuente de Shedskin ahora. – bodacydo

6

Hay una cuestión fundamental aquí: es la intención de crear, básicamente, un compilador de Python que utiliza C como un back-end, o para convertir el programa a C y mantener la C después?

Escribir un compilador que produce (realmente feo) C ya que su salida probablemente no es trivial; un compilador raramente lo es, y la generación de código para Python será más difícil que para muchos otros lenguajes (mecanografía dinámica, en en particular, es difícil de compilar, al menos a una salida muy eficiente). OTOH, al menos el analizador será mucho más fácil que para algunos idiomas.

Si por "traducir", quiere decir convertir Python a C, que es legible y fácil de mantener, esa es una pregunta completamente diferente - es sustancialmente más difícil, por decirlo suavemente. De manera realista, dudo que cualquier traducción automática valga mucho; hay demasiadas diferencias en la forma en que abordas normalmente los problemas en Python y C para que haya muchas esperanzas de una traducción automática decente.

+7

+1: Python no es C con una sintaxis diferente. Es un lenguaje fundamentalmente diferente con semántica única. Si fuera "C con una sintaxis diferente", alguien ya habría escrito esa transformación. –

2

Es difícil creer que nadie ha mencionado Cython - más o menos el estándar de facto para este tipo de trabajo, en mi opinión: http://www.cython.org/

Cuestiones relacionadas