Compiler des langues de niveau supérieur vers des langues de niveau inférieur est un gâteau. Il existe d'innombrables exemples de ce qui se fait. Sans aller sur une grande partie de la tangente, nous pouvons pointer vers les premiers compilateurs C ++ qui se sont compilés en C.
Cependant, lorsque vous commencez à lancer "clean" et "readable" dans le mix, les choses deviennent vraiment difficiles. Un code propre et lisible exprime la signification et l' intention de ce que vous écriviez. Les ordinateurs sont notoirement mauvais pour interpréter et créer du sens. Vous êtes plus susceptible de vous retrouver avec des variables nommées int_147
que input_buffer_length
. Bien sûr, si vous vouliez vraiment faire fonctionner ce projet, vous pourriez vous lancer dans un projet d'IA massif pour gérer la conversion de votre Lisp en une sorte de C ++ lisible décemment, mais, pour être parfaitement honnête, les compilateurs Common Lisp sont plutôt bons à faire. .
L'utilité de ceci est plus importante que la difficulté de générer du C ++ à partir d'un Lisp. À quoi cela servirait-il que le C ++ généré soit lisible? Si le Lisp est votre code source, les représentations intermédiaires ne devraient pas être pertinentes. Si vous voulez pouvoir remettre le C ++ à des programmeurs qui ne comprennent pas votre Lisp d'origine, vous avez maintenant un autre problème. Que se passe-t-il quand ils veulent modifier votre C ++ généré? Que se passe-t-il s'ils écrivent des choses en C ++ qui ne se traduisent pas proprement dans votre Lisp?
Disons que nous avons résolu cela. C'est une décennie plus tard et, après avoir dépensé des centaines de millions de dollars en subventions du DoD, nous avons construit ce moteur de traduction linguistique massif, complexe (mais sans faille) qui peut transformer Lisp en C ++ idiomatique et vice versa. Qu'avons-nous vraiment gagné qui ne serait pas mieux accompli en enseignant aux gens un nouveau langage de programmation ou en développant simplement un nouveau compilateur qui nous permet de lier les deux langages?
Oh, c'est vrai. Votre patron veut que vous écriviez C ++ et vous préférez ne pas. Mettez à jour votre CV et trouvez un nouvel emploi.