domingo, 6 de noviembre de 2022

Compilador/Intérprete

 Traductor de lenguajes

Unos programas especiales llamados traductores (compiladores e intérpretes) convierten las instrucciones escritas en lenguajes de programación en instrucciones escritas en lenguaje maquina (0 y 1 bits) que ésta pueda entender.

 

Compilador

Es un programa que traduce un lenguaje de alto nivel al lenguaje máquina. Un programa compilado indica que ha sido traducido y está listo para ser ejecutado. La ejecución de los programas compilados es más rápida que la de los interpretados, ya que el intérprete debe traducir mientras está en la fase de ejecución (saca todos los errores).

Un compilador es un programa que traduce el programa fuente (conjunto de instrucciones de un lenguaje de alto nivel, por ejemplo BASIC o Pascal) a programa objeto (instrucciones en lenguaje máquina que la computadora puede interpretar y ejecutar). Se requiere un compilador para cada lenguaje de programación. Un compilador efectúa la traducción, no ejecuta el programa.

Una vez compilado el programa, el resultado en forma de programa objeto será directamente ejecutable. Presentan la ventaja considerable frente a los intérpretes de la velocidad de ejecución, por lo que su uso será mejor en aquellos programas probados en los que no se esperan cambios y que deban ejecutarse muchas veces. En caso de que se opte por un interpretador se debe considerar que el intérprete resida siempre en memoria.

Por lo tanto, para realizar esta compilación, se precisan de varias etapas. Dependiendo del lenguaje que se trate, esta traducción puede ser un proceso simple o puede ser bastante complejo. En términos muy generales, un compilador utiliza dos pasos para traducir el código fuente:

  1. Analiza el código fuente, verificando la sintaxis y obteniendo información sobre los nombres de las variables, tipos, entre otras cosas.

2.- En un segundo paso, con la información obtenida, se genera lo que se llama el código objeto. Una vez generado este código, puede ser que el mismo compilador (o a veces es un programa separado denomidado linker) se encargue de la generación final del código ejecutable. Esta última etapa, se denomina etapa de vinculación y la idea es la siguiente: cuando el programa fuente está compuesto de subprogramas que se compilan por separado, o bien utilizan librerías adicionales (o pre-compiladas), necesitamos unir todos esos “trozos” de programas, que forman diferentes códigos objeto, y vincularlos a través del linker para, finalmente, obtener nuestro programa ejecutable.

Resumiendo: desde el momento en que el programador escribe su código en un lenguaje de alto nivel, hasta que obtiene un código ejecutable, se deben cumplir una serie de etapas:

  1. La etapa de compilación, donde se traduce (en uno, dos o tres pasos, dependiendo de cada compilador) el código fuente a código objeto. Este código aún no se puede ejecutar.
  2. La etapa de vinculación o link edición, donde se toman todos los códigos objetos generados y se logra un código ejecutable y listo para ser utilizado.

 

Intérprete

Es un traductor de lenguajes de programación de alto nivel. Los intérpretes ejecutan un programa línea por línea. El programa siempre permanece en su forma original(programa fuente) y el intérprete proporciona la traducción al momento de ejecutar cada una de las instrucciones. Un intérprete es un programa que procesa los programas escritos en un lenguaje de alto nivel, sin embargo, está diseñado de modo que no existe independencia entre la etapa de traducción y la etapa de ejecución.

Un intérprete traduce cada instrucción o sentencia del programa escrito a un lenguaje máquina e inmediatamente se ejecuta. Encuentran su mayor ventaja en la interacción con el usuario, al facilitar el desarrollo y puesta a punto de programas, ya que los errores son fáciles de detectar y sobre todo de corregir.

Es un programa que también realiza el proceso de traducción. El interpretador, a diferencia del compilador, verifica, traduce y ejecuta instrucción por instrucción sin generar un programa en lenguaje de máquina, en forma ejecutable. En general la forma de traducir de un intérprete es más lenta que la de un compilador.

 

 

 

 

No hay comentarios.:

Publicar un comentario