Compilación:
* Qué es: La compilación es el proceso de traducción del código fuente (código legible por humanos escrito por un programador) en el código de la máquina (instrucciones binarias que el procesador de una computadora puede comprender y ejecutar directamente). El compilador es un programa especial que realiza esta traducción.
* Salida: La salida de compilación es un archivo ejecutable (por ejemplo, un archivo `.exe` en Windows, o un binario simple en Linux/MacOS). Este archivo contiene las instrucciones del código de la máquina.
* Proceso: El compilador verifica el código fuente en busca de errores (errores de sintaxis, errores semánticos, etc.). Si se encuentran errores, la compilación falla y el programador debe corregir los errores en el código fuente antes de intentarlo nuevamente. Si no se encuentran errores, el compilador genera el archivo ejecutable.
* Cuando sucede: La compilación ocurre * antes de * el programa se ejecuta. Es un paso separado.
Ejecución:
* Qué es: La ejecución es el proceso de ejecutar realmente el programa compilado. El procesador de la computadora obtiene y ejecuta las instrucciones del código de la máquina una por una.
* Entrada: La entrada para la ejecución es el archivo ejecutable creado durante la compilación. También puede involucrar datos de entrada proporcionados al programa mientras se ejecuta (por ejemplo, entrada del usuario, datos de un archivo).
* Salida: La salida de ejecución puede ser muchas cosas:datos que se muestran en la pantalla, datos escritos en un archivo, cambios realizados en el sistema o simplemente el estado de salida del programa (indicando éxito o falla).
* Cuando sucede: La ejecución ocurre * después de * compilación. Es la etapa en la que el programa realiza sus tareas previstas.
Analogía:
Piense en escribir un libro (código fuente) y luego tenerlo impreso (compilación). El libro impreso es el archivo ejecutable. Leer el libro impreso es la ejecución. No puede leer el libro (ejecutar) hasta que se haya impreso (compilado).
Idiomas interpretados:
Los idiomas interpretados no tienen un paso de compilación separado de la misma manera. Un intérprete lee y ejecuta el código fuente de línea por línea, sin crear un archivo ejecutable separado de antemano. Sin embargo, algunos lenguajes interpretados utilizan la compilación justo a tiempo (JIT) para mejorar el rendimiento al compilar partes del código en el código de la máquina durante la ejecución. Pero incluso con JIT, la distinción entre el paso de traducción y el paso de ejecución es menos claro que en los idiomas compilados.