Cuando aprendí sobre programación, en algún lugar en la segunda mitad del siglo pasado, aprendí que todo se debe convertir a código de máquina. Los lenguajes de script simplemente decidirían qué código llamar según el código del script. El código compilado se compilaría primero en p-code, que significa código precompilado, que debe vincularse a otro código precompilado para crear una aplicación completa. Me gustó Turbo Pascal en aquel entonces, simplemente porque Turbo Pascal compiló directamente el código machione y no usó el código intermedio intermedio. Es decir, hasta Turbo Pascal 4.0, que creó * .tpu unidades compiladas. La mayoría de los otros compiladores compilarían en su lugar el formato .obj.
Cuando se creó Java, algo relativamente nuevo comenzó a hacerse popular. Básicamente, un compilador de Java simplemente compila código en algún archivo de script binario. Esta secuencia de comandos podría interpretarse, aunque ese mecanismo pronto también cambió.
Hoy en día, los intérpretes están casi extintos. La mayoría de los lenguajes guionizados se compilarán primero en código máquina, el código de la máquina se almacena en algún caché y, por lo tanto, se puede ejecutar muy rápido, sin que el sistema tenga que volver a interpretar ninguna instrucción repetitiva. Esto funciona bien para textos y scripts binarios. PHP sería un ejemplo de un script basado en texto. Java y .NET son scripts binarios, ya que generalmente compila el código en este formato de script binario. (Lo llamarán diferente, pero creo que las secuencias de comandos binarias suenan mejor.)
En general, el truco consiste en convertir el código en código de máquina, utilizando cualquier medio posible. Ha habido muchas formas de hacerlo y es un poco complejo dejarlo todo en claro.
También recuerdo el momento en que podía escribir una aplicación C++ donde las sentencias SQL se ubicarían dentro del código mismo. Esto también era muy práctico, pero requería un preprocesador que primero analizara las declaraciones SQL del código para convertirlo a otras sentencias C++ y reemplazando las sentencias SQL con los comandos C++ más complejos. Entonces todo se compilaría en código p. Entonces necesitarías vincularlo con las bibliotecas SQL adicionales y finalmente tendrías un ejecutable.
Pregunta de recursos definitiva del compilador en SO: http: // stackoverflow.com/questions/1669/learning-to-write-a-compiler Aquí hay algunos recursos sugeridos que adoptan un enfoque muy sencillo: si puede programar, está listo para aprender métodos de compilación. No tengas miedo. Me gusta el tutorial de Crenshaw. – dmckee
^Esa es una excelente lista de recursos. Gracias. –