
Un lenguaje de programación es un conjunto de reglas que le dicen a una computadora qué hacer. Pero, ¿cómo entiende la computadora estas reglas? Ahí es donde entran en juego los conceptos de interpretación y compilación.
Lenguajes Compilados
Un lenguaje compilado se traduce completamente al lenguaje de la máquina (código binario, ceros y unos) antes de ser ejecutado. Piensa en un libro traducido del español al inglés. El traductor (compilador) toma el libro completo (código fuente) y lo transforma a inglés (código máquina). Una vez traducido, puedes leer el libro en inglés sin necesidad del traductor.
El compilador hace este trabajo. Recibe el código fuente (el código que escribes) y genera un ejecutable (el programa que corre). Ejemplos comunes son C, C++, y Go.
Must Read
Ventajas: Generalmente, los programas compilados son más rápidos porque la traducción ya se hizo. Además, el código fuente está protegido, ya que solo se distribuye el ejecutable.
Desventajas: Compilar lleva tiempo. También, el ejecutable suele ser específico para un sistema operativo (Windows, macOS, Linux). Necesitas recompilar para cada sistema.

Lenguajes Interpretados
Un lenguaje interpretado se traduce y ejecuta línea por línea, a medida que se necesita. Imagínate a un intérprete en una conferencia. Escucha al orador (código fuente) y traduce instantáneamente para la audiencia. No existe una traducción completa previa.
Un intérprete es el programa que hace esta traducción simultánea. Ejemplos populares son Python, JavaScript, y Ruby.

Ventajas: La ejecución es más flexible. No necesitas recompilar para diferentes sistemas operativos, ya que el intérprete se encarga de adaptar el código. También es ideal para el desarrollo rápido, ya que puedes probar los cambios inmediatamente.
Desventajas: Los programas interpretados suelen ser más lentos que los compilados, ya que la traducción ocurre en tiempo real. Además, el código fuente es más vulnerable, ya que se distribuye directamente.

Un Híbrido: Compilación Justo a Tiempo (JIT)
Algunos lenguajes modernos, como Java y C#, utilizan una técnica llamada compilación JIT (Just-In-Time). Es un híbrido. El código fuente se compila a un código intermedio (bytecode) y luego, el intérprete (la máquina virtual) compila este bytecode a código de máquina durante la ejecución. Esto ofrece un equilibrio entre velocidad y flexibilidad.
En resumen, la diferencia clave radica en cuándo se realiza la traducción a código de máquina: antes de la ejecución (compilación), durante la ejecución (interpretación), o una combinación de ambas (JIT). Entender esto te ayudará a elegir el lenguaje adecuado para tu proyecto.