Idiomas traducidos (idiomas compilados):
* Proceso de traducción: Un * compilador * toma todo el programa de código fuente como entrada y lo traduce en un programa completo de código de máquina (o una representación intermedia que luego se traduce al código de la máquina) * antes de * el programa se ejecuta. Este proceso a menudo se llama *compilación *. El código de la máquina resultante es un archivo separado (como un `.exe` en Windows o un archivo ejecutable en otros sistemas).
* Ejecución: El código de la máquina compilado es ejecutado directamente por el procesador de la computadora.
* velocidad: Generalmente, una ejecución más rápida porque la traducción se realiza de antemano, y el procesador ejecuta el código de máquina optimizado directamente.
* Detección de errores: Los errores del compilador se detectan * antes de * tiempo de ejecución. El compilador identificará errores de sintaxis y algunos errores semánticos durante el proceso de compilación.
* Portabilidad: Típicamente menos portátil. Un programa compilado para un sistema operativo o arquitectura generalmente no se ejecutará en otro sin recompilación.
* Ejemplos: C, C ++, Go, Rust, Fortran
Idiomas interpretados:
* Proceso de traducción: Un *intérprete *toma el código fuente de línea por línea (o a veces en trozos más grandes) y traduce y ejecuta cada pieza *inmediatamente *. No hay un paso de compilación separado que produzca un ejecutable independiente.
* Ejecución: El intérprete lee, traduce y ejecuta el código simultáneamente. No produce un archivo de código de máquina separado.
* velocidad: Generalmente ejecución más lenta debido a la traducción sobre la marcha. Cada línea (o fragmento) debe interpretarse cada vez que se ejecuta.
* Detección de errores: Los errores a menudo se detectan solo durante el tiempo de ejecución. Es posible que el intérprete no capte todos los errores hasta que se ejecute el código problemático.
* Portabilidad: A menudo más portátil. Mientras el intérprete esté disponible para una plataforma en particular, el código fuente generalmente puede ejecutarse.
* Ejemplos: Python, JavaScript, Ruby, Perl, PHP
Enfoques híbridos:
Es importante tener en cuenta que la distinción no siempre está clara. Algunos idiomas emplean un enfoque híbrido:
* Compilación de justo en tiempo (JIT): Lenguajes como Java y C# inicialmente compilan el código fuente en una representación intermedia (código de byte). Un compilador JIT luego traduce esta representación intermedia en el código de la máquina *durante el tiempo de ejecución *. Esto combina las ventajas de los lenguajes interpretados y compilados:portabilidad inicial (como interpretada) y una ejecución más rápida de secciones de código de uso frecuente (como compilado).
En resumen:la compilación traduce todo el programa a la vez * antes * de ejecución, lo que lleva a una ejecución más rápida pero menos portabilidad y detección de errores iniciales. La interpretación traduce y ejecuta código línea por línea, proporcionando una mejor portabilidad pero una ejecución más lenta y detección de errores de tiempo de ejecución. Muchos idiomas modernos utilizan enfoques híbridos para obtener lo mejor de ambos mundos.