1. Compilación: Un compilador traduce todo el programa de alto nivel al código de máquina (o a veces el código de ensamblaje, que luego se ensambla en el código de la máquina) * antes de * Ejecución. Esto da como resultado un archivo ejecutable que puede ser ejecutado directamente por el procesador de la computadora. Los idiomas compilados generalmente ofrecen un mejor rendimiento que los idiomas interpretados. Los ejemplos de compiladores incluyen GCC (para C/C ++) y Javac (para Java).
2. Interpretación: Un intérprete traduce y ejecuta el programa de alto nivel una línea (o declaración) a la vez. No produce un archivo ejecutable separado; En cambio, ejecuta directamente el código a medida que se traduce. Esto es generalmente más lento que la compilación, pero ofrece más flexibilidad, especialmente para los idiomas dinámicos. Python y JavaScript son idiomas interpretados principalmente, aunque algunas técnicas de compilación justo a tiempo (JIT) se utilizan para mejorar el rendimiento.
3. Compilación justo en el tiempo (JIT): Este enfoque híbrido combina aspectos de compilación e interpretación. El código se interpreta inicialmente, pero las piezas ejecutadas con frecuencia se compilan en el código de la máquina para una ejecución más rápida en ejecuciones posteriores. JVM de Java (Java Virtual Machine) y algunos motores JavaScript modernos (como V8 en Chrome) usan la compilación JIT.
En resumen, el requisito central es un traductor (compilador o intérprete, o un sistema que usa ambos). El traductor toma el código fuente de alto nivel como entrada y produce un código de máquina ejecutable directamente o una representación intermedia que se puede procesar aún más en el código de la máquina. Este traductor necesita comprender la sintaxis y la semántica del lenguaje de alto nivel y la arquitectura de la máquina objetivo (por ejemplo, x86, brazo). Las herramientas de soporte como los enlazadores (para combinar múltiples módulos compilados) y ensambladores (para convertir el código de ensamblaje al código de la máquina) también podrían estar involucrados en el proceso general.