Compiladores vs. Intérpretes: Fundamentos y Comparativa de la Traducción de Código
Clasificado en Informática
Escrito el en
español con un tamaño de 3,59 KB
Programas Traductores
Los programas escritos en **lenguajes de alto nivel (LAN)** necesitan ser traducidos a **código máquina** para poder ser ejecutados. Esta tarea la llevan a cabo los programas traductores, que pueden ser de dos tipos en función del proceso que siguen para realizar la traducción:
Tipos de Programas Traductores
- Intérpretes: Toman el programa original (código fuente) y traducen y ejecutan cada instrucción del mismo de forma secuencial.
- Compiladores: Toman el código fuente, lo traducen por completo a código objeto y, posteriormente, se ejecuta el programa traducido.
El Proceso de Compilación: Código Objeto y Enlazado
Tras compilar un programa, lo que se obtiene es lo que se conoce como **código objeto**, que no es más que un nuevo programa escrito en un lenguaje muy similar al código máquina, pero que aún no es ejecutable por la CPU. Tras la compilación, es necesario un proceso que, a partir del código objeto, obtenga el código máquina (*enlazado*).
Ventajas y Desventajas de Compiladores e Intérpretes
Compiladores
Ventajas de los Compiladores
- Traducción Única: La traducción se realiza una sola vez. Una vez traducido, el programa puede ejecutarse repetidamente sin necesidad de retraducción.
- Optimización Automática: Es posible optimizar (mejorar) el código máquina resultante de forma automática. Esto se debe a que, antes de la ejecución, se tiene una visión global del programa, permitiendo detectar redundancias o áreas de mejora.
- Independencia del Código Fuente: Para la ejecución, no se necesita el código fuente.
- Velocidad de Ejecución: La ejecución de los programas es más rápida.
Inconvenientes de los Compiladores
- Baja Portabilidad: Una vez obtenido el código máquina tras la compilación y el enlazado, este estará preparado para un tipo de CPU en concreto y, por lo tanto, no podrá ser ejecutado en otras arquitecturas.
- Detección de Errores Sintácticos: Los errores sintácticos deben ser corregidos en su totalidad antes de poder pasar a la fase de ejecución.
Intérpretes
Ventajas de los Intérpretes
- Mayor Portabilidad: Si existe un traductor-intérprete para distintas arquitecturas, cualquier programa escrito podrá ser ejecutado en cualquiera de ellas sin tener que hacer nada especial.
- Detección de Errores en Tiempo de Ejecución: Los errores sintácticos serán detectados cuando la ejecución del programa llegue hasta ellos. Al detectar el error, la ejecución se detendrá temporalmente y se podrá corregir el error para, a continuación, seguir la ejecución por donde se dejó.
Inconvenientes de los Intérpretes
- Traducción Recurrente: Cada vez que se ejecuta el programa, se debe traducir el código fuente.
- Falta de Optimización: No es posible optimizar el código máquina resultante al no tener una visión global del programa.
- Dependencia del Código Fuente: Se necesita el código fuente cada vez que se realiza una ejecución. Si se desea proteger los algoritmos de forma que nadie sepa cómo funcionan, esto no sería posible con los intérpretes.
- Lentitud de Ejecución: La ejecución es más lenta, ya que implica la traducción simultánea de las instrucciones.