La compilación de idiomas de nivel superior a los de nivel inferior es un pastel. Hay innumerables ejemplos de que se está haciendo. Sin desviarnos de gran parte de la tangente, podemos apuntar a los primeros compiladores de C ++ que se compilaron hasta C.
Cuando empiezas a lanzar "limpio" y "legible" en la mezcla, sin embargo, las cosas se ponen muy difíciles. El código limpio y legible expresa el significado y intención de lo que estaba escribiendo. Las computadoras son notoriamente malas para interpretar & creando significado. Es más probable que termines con variables llamadas int_147
que input_buffer_length
. Claro, si realmente quería hacer que este proyecto funcionara, podría involucrarse en un proyecto masivo de AI para manejar la conversión de su Lisp a algún tipo de C ++ decentemente legible pero, para ser perfectamente honestos, los compiladores Common Lisp son Bastante jodidamente bueno en lo que hacen.
Más importante que la dificultad de generar C ++ a partir de un Lisp es la utilidad de esto. ¿Qué propósito serviría para que el C ++ generado sea legible? Si el Lisp es su código fuente, las representaciones intermedias deben ser irrelevantes. Si desea poder entregar el C ++ a los programadores que no entienden su Lisp original, ahora tiene otro problema. ¿Qué pasa cuando quieren modificar su C ++ generado? ¿Qué sucede si escriben cosas en C ++ que no se traducen limpiamente en tu Lisp?
Digamos que hemos resuelto eso. Es una década más tarde y, después de gastar cientos de millones de dólares en donaciones del DoD, hemos desarrollado este motor de traducción de lenguaje masivo, complejo (pero perfecto) que puede convertir a Lisp en C ++ idiomático y viceversa. ¿Qué hemos ganado realmente que no se lograría mejor enseñando a las personas un nuevo lenguaje de programación o simplemente desarrollando un nuevo compilador que nos permita vincular los dos idiomas?
Oh, cierto. Tu jefe quiere que escribas C ++ y prefieres no hacerlo. Actualice su currículum vitae & encontrar un nuevo trabajo.