Traductor: En un sentido orientado hacia la computación, un traductor, de manera general, es un software que toma como entrada un programa escrito en un código llamado fuente y genera como salida otro programa en un código llamado objeto.

Algunos ejemplos de traductores son los compiladores (toma como entrada código en alto nivel y genera como salida código en bajo nivel), los interpretes (toma como entrada código en alto nivel y genera como salida un código intermedio), los preprocesadores (toma como entrada código en alto nivel y genera como salida código en alto nivel) y el ensamblador (toma como entrada código en ensamblador y genera como salida código en bajo nivel).

Su estructura podria ser expresada de la siguiente manera:

código fuente -→>> traductor -→> código objeto

Intérpretes o Traductores Definición. Un intérprete es un programa que ejecuta un programa escrito en un determinado lenguaje examinando y ejecutando cada sentencia del programa una a una, por separado y sin realizar un proceso de compilación previo. Al contrario de lo que se podría pensar el intérprete NO traduce la sentencia a código máquina antes de ejecutarla. En su lugar, identifica el tipo de sentencia y la ejecuta directamente. El código para ejecutar la sentencia está contenido dentro del intérprete que contendrá rutinas para: evaluar una expresión, almacenar información en memoria, recuperar datos de memoria, etc. El intérprete contendrá el número de rutinas necesarias para poder ejecutar cualquier sentencia del lenguaje que está interpretando.

Ejemplo: C := A + B

	1. El intérprete lee la sentencia y determina que es una asignación. 
	2. Llamará a una de sus rutinas para evaluar la expresión a la derecha de la asignación. 
	3. Esta rutina toma los símbolos A y B, determina donde están almacenados, obtiene sus valores actuales y los suma. 
	4. El intérprete toma el valor calculado y lo almacena en la dirección de memoria a la que hace referencia el símbolo C. 

Al igual que un compilador para llevar a cabo su tarea el intérprete usará un analizador léxico-gráfico y guardará la información necesaria para la traducción en una tabla de símbolos. Interpretar una sentencia es relativamente complejo, al tener que ser escaneada y analizada, los símbolos tienen que ser buscados, hay que llevar a cabo lo indicado por la sentencia, etc. Esto significa que el número de instrucciones máquinas a ejecutar para interpretar una sentencia puede ser mucho mayor que el código generado por un compilador. Además, cada sentencia tendrá que ser interpretada cada vez que aparezca, por lo que una sentencia en un bucle sería interpretada varias veces. Además de elegir entre compilar o interpretar un programa, otra opción es combinar ambos procesos de traducción. En este caso, se realiza una compilación “parcial” a un código intermedio que es seguida de un proceso de interpretación. Uno de los lenguajes más utilizados hoy en día, sobre todo para el desarrollo de aplicaciones para la Web, que sigue esta propuesta es el lenguaje Java. En el lenguaje Java el código primero se compila con el compilador de Java javac. Este compilador genera un código virtual llamado Byte Code?. Este código es luego interpretado por una Máquina Virtual de Java (o JVM de Java Virtual Machine) que debe estar instalada y ejecutándose en la máquina en la que se desee ejecutar el código compilado con javac. Comparación entre compiladores e intérpretes

Históricamente, debido a la escasez de memoria de los primeros ordenadores, se puso de moda el uso de intérpretes frente a los compiladores, pues el programa fuente sin traducir y el intérprete juntos requerían una cantidad de memoria menor que la del compilador. Por ello, los primeros ordenadores personales (Spectrum, Commodore VIC-20, PC XT de IBM, etc.) iban siempre acompañados de un intérprete de BASIC. La mejor información sobre los errores por parte del compilador así como una mayor velocidad de ejecución del código resultante hizo que poco a poco se impusieran los compiladores. Hoy en día, y con el problema de la memoria prácticamente resuelto, se puede hablar de un gran predominio de los compiladores frente a los intérpretes, aunque intérpretes como los incluidos en los navegadores de Internet para Java son la gran excepción.

Algunas de las ventajas de compilar frente a interpretar son: • Se compila una vez; se ejecuta muchas veces • La ejecución del programa objeto es mucho más rápida que si se interpreta el programa fuente. • El compilador tiene una visión global del programa, por lo que la información de mensajes de error es más detallada.

Por otro lado, algunas de las ventajas de interpretar frente a compilar son: • Un intérprete necesita menos memoria que un compilador. • Permiten una mayor interactividad con el código en tiempo de desarrollo. • En algunos lenguajes (Smalltalk, Prolog, LISP, Java) está permitido y es frecuente añadir código según se ejecuta otro código, y esta característica solamente es posible implementarla en un intérprete.

christhian. Instituto Tecnologico de Mexicali!!

Dr. Alejandro Peña. Instituto Tecnológico de Villahermosa.


Google