On m'a demandé d'écrire un traducteur de code qui prendrait un programme Python et produirait un programme C. Avez-vous des idées comment pourrais-je aborder ce problème ou est-ce même possible? P>
4 Réponses :
regarder Shedskin . Cela fait exactement que (Eh bien, à C ++ et pour un sous-ensemble de Python et de ses modules). Mais il devrait être en mesure de fournir une perspicacité précieuse comme comment aborder ce problème particulier (bien que vous écrivez certainement votre propre
Merci Christopher. Je vais étudier le code source de Shedskin maintenant.
Shedskin: http://code.google.com/p/shedskin/ < / p>
boost python: http: //www.boost .org / doc / libs / 1_42_0 / libs / python / doc / index.html p>
pycxx: http://cxx.sourceforge.net/ p>
Cython: http://www.ython.org/ p>
de http://wiki.python.org/moin/compile%20python % 20t% 20c , il existe une liste de projets connexes. P>
pyrex: http://www.cosc.canterbury.ac .nz / greg.ewing / python / pyrex / p>
PSYCO: http://psyco.sourceforge.net/ p>
rpython: http://code.google.com/p/rpython/ << / p>
Il y a une question fondamentale ici: l'intention de créer essentiellement un compilateur Python qui utilise C en tant que back-end, ou de convertir le programme en C et de maintenir le C par la suite? P>
Écrire un compilateur qui produit (vraiment laid) C comme sa sortie n'est probablement pas trivial - un compilateur est rarement, et la génération de code pour Python sera plus difficile que pour beaucoup d'autres langues (dactylographie dynamique, en particulier , est difficile à compiler, du moins à une production très efficace). OTOH, au moins l'analyseur sera beaucoup plus facile que pour certaines langues. P>
Si par "Traduire", vous voulez dire convertir Python en C qui est lisible et responsable, c'est une question complète - c'est sensiblement em> plus difficile, de la mettre légèrement. De manière réaliste, je doute que toute traduction automatique en vaut la peine - il existe de trop grandes différences dans la manière dont vous abordez normalement les problèmes de Python et C pour qu'il y ait beaucoup d'espoir d'une traduction automatique décente. P>
+1: Python n'est pas C avec une syntaxe différente. C'est une langue fondamentalement différente avec une sémantique unique. Si c'était "C avec une syntaxe différente", quelqu'un aurait déjà écrit cette transformation.
Il est difficile de croire que personne n'a mentionné Cyron - à peu près la norme de facto pour ce type d'emploi, à mon avis: http://www.cython.org/ p>
Je suis hésitant à la seconde - devinez vos besoins sans entendre plus, mais si vous avez «on vous a demandé d'écrire un traducteur de code» (par une personne comme l'un de mes pires patrons), qui suggère un malentendu à un certain niveau. Ma réaction initiale est que (a) quelqu'un pense "python = lent, c = rapide" toujours, et (b) un traducteur de code pour Python serait une chose facile à écrire. Je reviendrais et demanderais pourquoi ils veulent ça.
Dupliqué possible de Convertir le programme Python en code C / C ++?