Das Kompilieren von höheren zu niedrigeren Sprachen ist ein Kinderspiel. Es gibt unzählige Beispiele dafür. Wir können auf frühe C ++ - Compiler verweisen, die bis zu C kompiliert wurden, ohne dass wir uns auf eine Tangente festlegen müssen.
Wenn Sie anfangen, "sauber" und "lesbar" in die Mischung zu werfen, werden die Dinge jedoch sehr schwierig. Sauberer, lesbarer Code drückt die Bedeutung und Absicht des Geschriebenen aus. Computer sind notorisch schlecht darin, Bedeutung zu interpretieren und zu schaffen. Es ist wahrscheinlicher, dass Sie mit Variablen namens enden int_147
als input_buffer_length
. Wenn Sie dieses Projekt wirklich zum Laufen bringen möchten, könnten Sie sich auf ein riesiges KI-Projekt einlassen, um Ihr Lisp in eine anständig lesbare C ++ - Version umzuwandeln .
Wichtiger als die Schwierigkeit, C ++ aus einem Lisp zu generieren, ist der Nutzen davon. Welchen Zweck hätte es, wenn das generierte C ++ lesbar wäre? Wenn das Lisp Ihr Quellcode ist, sollten Zwischenrepräsentationen irrelevant sein. Wenn Sie in der Lage sein möchten, C ++ an Programmierer weiterzugeben, die Ihr ursprüngliches Lisp nicht verstehen, haben Sie jetzt ein anderes Problem. Was passiert, wenn sie Ihr generiertes C ++ ändern möchten? Was passiert, wenn sie Dinge in C ++ schreiben, die sich nicht sauber in Ihr Lisp übersetzen lassen?
Nehmen wir an, wir haben das gelöst. Es ist ein Jahrzehnt später und nachdem wir Hunderte von Millionen Dollar an DoD-Zuschüssen aufgebraucht haben, haben wir diese massive, komplexe (aber fehlerfreie) Sprachübersetzungs-Engine entwickelt, die Lisp in idiomatisches C ++ verwandeln kann und umgekehrt. Was haben wir wirklich erreicht, das nicht besser erreicht werden könnte, wenn wir den Leuten entweder eine neue Programmiersprache beibringen oder nur einen neuen Compiler entwickeln, mit dem wir die beiden Sprachen verbinden können?
Oh, richtig. Ihr Chef möchte, dass Sie C ++ schreiben, und Sie möchten es lieber nicht. Aktualisieren Sie Ihren Lebenslauf und finden Sie einen neuen Job.