Вы находитесь на странице: 1из 7

TRADUCTORES DE LENGUAJE

Un traductor es un programa que recibe como entrada cdigo escrito en un cierto lenguaje y produce como
salida cdigo en otro lenguaje, generalmente el lenguaje de entrada es de ms alto nivel que el de salida, por
ejemplo, los traductores son los ensambladores y los compiladores.
Cuando programamos en algn lenguajes de alto nivel, lo que estamos haciendo en realidad es el cdigo fuente
de ese programa, este cdigo fuente debe ser traducido a lenguaje binario para que las instrucciones que
contienen puedan ser entendidas y ejecutadas por la computadora.
Un ensamblador es un programa que traduce de un lenguaje ensamblador a lenguaje mquina, mientras que un
compilador es un programa que traduce de un lenguaje de alto nivel a un lenguaje de bajo nivel o a lenguaje
mquina.
Un traductor es un programa que toma el texto escrito en un lenguaje (el lenguaje fuente) y lo convierte en el
texto equivalente en un segundo lenguaje (el lenguaje destino u objeto).
Si la fuente es un lenguaje abstracto o de alto nivel y si el objetivo es un lenguaje de ensamble de bajo nivel o de
mquina, el traductor es un compilador.

Los programas traductores de lenguajes son:


1. Compiladores
2. Interpretes
Debido la complejidad de la programacin del lenguaje de mquina, en realidad son muy pocos los programas
que se escriben con l. Sin embargo el lenguaje de maquina es el nico lenguaje capaz de dar instrucciones
directamente al CPU. Por lo tanto, toda instruccin de un programa de lenguaje que no sea de maquina tiene
que traducirse al lenguaje de maquina antes de su ejecucin. Esto se realiza mediante el software de sistemas
que se llama traductor de lenguaje. Un traductor de lenguaje convierte un cdigo fuente de un programador a su
equivalente en lenguaje de mquina. El cdigo de programa de nivel alto se conoce como el cdigo fuente,
mientras que el cdigo de lenguaje de maquina se llama cdigo objeto. Hay dos tipos de traductores de
lenguajes: intrpretes y compiladores.
Para que un lenguaje de programacin sea til debe de tener un traductor es decir un programa que aceptan
otros programas escritos en el lenguaje de cuestin y que, o los ejecuta directamente, o los transforma en una
forma adecuada de su ejecucin. Un traductor que produce un programa equivalente en una forma adecuada
para su ejecucin se conoce como compilador.
COMPILADOR
Los primeros compiladores se realizaron programndolos directamente en lenguaje mquina o en ensamblador.
Actualmente existen herramientas que facilitan la tarea de escribir compiladores intrpretes informticos. Estas
herramientas permiten generar el esqueleto del analizador sintctico a partir de una definicin formal del lenguaje
de partida, especificada normalmente mediante una gramtica formal y barata, dejando nicamente al
programador del compilador la tarea de programar las acciones semnticas asociadas.
Una vez que se dispone de un compilador, se pueden escribir nuevas versiones del compilador en el lenguaje
que compila ese compilador.
Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a

otro lenguaje de programacin, o tambin genera aplicaciones que sean directamente utilizables en un
ordenador o computadora. Un compilador lee el cdigo fuente creado en un determinado lenguaje de
programacin, lo interpreta, comprueba su sintaxis y traduce a lenguaje o cdigo mquina toda la serie de
instrucciones, generando el archivo ejecutable final.
Son programas que leen el cdigo fuente y lo traducen o convierten a otro lenguaje, estos programas muestran
los errores existentes en el cdigo fuente.

ESTRUCTURA DE UN COMPILADOR
Se requiere un compilador para cada
lenguaje de programacin. Un compilador
efecta la traduccin, no ejecuta el
programa, una vez compilado el programa,
el resultado en forma de programa objeto
ser directamente ejecutable.
La ejecucin de un programa
compilador requiere de dos etapas:

con

Traducir el programa simblico a cdigo


mquina
Ejecucin y procesamiento de los datos.

El proceso de compilacin considera las siguientes etapas:


Edicin. Esta fase consiste en escribir el programa empleando algn lenguaje y un editor. Como resultado nos
dar el cdigo fuente de nuestro programa.
Compilacin. En esta fase se traduce el cdigo fuente obtenido en la fase anterior a cdigo mquina. Si no se
produce ningn error se obtiene el cdigo objeto.
En caso de errores el compilador los mostrara para ayudarnos a corregirlos y se procedera a su compilacin de
nuevo, una vez corregido.
Linkado. Esta fase consiste en unir el archivo generado en la fase dos con determinadas rutinas internas del
lenguaje, obteniendo el programa ejecutable.
Existen dos tipos de linkados:
Linkado esttico: Los binarios de las libreras se aaden a nuestros binarios compilados generando el archivo
ejecutable.
Linkado dinmico: no se aaden las libreras a nuestro binario sino que har que se carguen en memoria las
libreras que en ese momento se necesiten.
Una vez traducido, compilado y linkado el archivo est listo para su ejecucin donde tambin podrn surgir
problemas y fallos, para los cuales tendramos que volver a realizar todo el proceso anteriormente citado, de

modo que puedan ser corregidos.

TIPOS DE COMPILADORES
Esta taxonoma de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que se
adscriban a varias categoras:
Compiladores cruzados: generan cdigo para un sistema distinto del que estn funcionando.
Compiladores optimizadores: realizan cambios en el cdigo para mejorar su eficiencia, pero manteniendo la
funcionalidad del programa original.
Compiladores de una sola pasada: generan el cdigo mquina a partir de una nica lectura del cdigo fuente.

ESTRUCTURA DE UN COMPILADOR DE UNA SOLA PASADA

Compiladores de varias pasadas: necesitan leer el cdigo fuente varias veces antes de poder producir el cdigo
mquina.
Compiladores JIT (Just In Time): forman parte de un intrprete y compilan partes del cdigo segn se necesitan.

FASES DE LA COMPILACIN
La compilacin es el proceso de traduccin de programas fuente o cdigo fuente a programas objeto o cdigo
objeto.
Analizador lxico: tambin denominado scanner. Su funcin consiste bsicamente en agrupar los caracteres del
texto fuente en grupos con entidad propia denominados tokens, que son los identificadores, palabras reservadas,
separadores. Los tokens reconocidos son la entrada a la siguiente fase, el analizador sintctico.
Analizador sintctico: se ocupa de analizar la sintaxis de las sentencias, de acuerdo con la descripcin sintctica
reflejada en la gramtica.
Analizador semntico: Se ocupa de analizar la semntica de las sentencias realizando una serie de consultas en
unas tablas auxiliares denominadas tablas de smbolos.

TABLA DE SMBOLOS
Estructura de datos que contiene un registro
por cada identificador, con los campos para los
atributos: informacin sobre la memoria
asignada, tipo, si es nombre de procedimiento
(nmero, tipo y mtodo de paso de cada
argumento).
Permite encontrar rpidamente cada ID y
almacenar o consultar datos de ese registro.
En el Anlisis Lxico se detectan los ID y se
introducen en la Tabla de Smbolos.
Las fases restantes introducen informacin
sobre los ID y despus la utilizan.
OPTIMIZACIN DE CDIGO
Trata de mejorar el cdigo intermedio para que
resulte un cdigo de mquina ms rpido de
ejecutar.
Compiladores optimizadores: La fase de
optimacin ocupa una parte significativa del
tiempo del compilador.
Hay optimaciones sencillas que mejoran el
tiempo de ejecucin del programa sin retardar
mucho la compilacin.
ANLISIS DEL FLUJO DE CONTROL.Proceso que identifica los lazos dentro del
grafo de flujo de un programa.
ANLISIS DEL FLUJO DE DATOS.- Proceso para recopilar informacin sobre el modo en que se utilizan las
variables en un programa. Considera varios algoritmos para recopilar informacin, y el impacto de
construcciones de lenguaje como los procedimientos y apuntadores.
TRANSFORMACIONES.- Mejoras que se realizan al cdigo con el fin de obtener programas en lenguaje objeto
eficientes.
GENERADOR DE CDIGO
Se ocupa de generar cdigo objeto para una mquina, es decir, donde efectivamente se hace la traduccin.
Existe una otra fase, opcional pero muy usada en los compiladores modernos, que es el optimizador de cdigo,
ocupndose de optimizar el tamao y velocidad del cdigo generado en la fase anterior.
Un compilador necesita guardar y usar la informacin de los objetos que va encontrando en el lenguaje fuente,
como variables, etiquetas, declaraciones de tipos, etc. Esta informacin se va introduciendo en estructura de
datos internos al compilador conocida con el nombre de tabla de smbolos.
El conjunto de procedimientos para el manejo de esta tabla, como introducir un nuevo smbolo, consultar la
informacin de un smbolo, modificarla, borrarla, etc., es lo que se denomina control de las tablas de smbolos.

En cuanto al tratamiento de errores es el conjunto de rutinas y actividades que tratan la identificacin de un error,
su posible tratamiento o recuperacin y la emisin del mensaje correspondiente.
Hay que hacer notar la diferencia entre el BASIC interpretado y el compilado, que sera un buen ejemplo entre
ambas tcnicas de traduccin. En el BASIC intrprete se interpreta cada una de las lneas del programa, con lo
que se hace lenta la ejecucin del programa; con el compilado se consigue un programa objeto que, una vez
linkado, es un programa ejecutable globalmente. Todos los dems lenguajes citados tienen un traductor del tipo
compilador.
INTRPRETES
Un programa intrprete o traductor, analiza directamente la descripcin simblica del programa fuente y realiza
las instrucciones dadas.
Es un programa que traduce un lenguaje de alto nivel al lenguaje de mquina de una computadora, el programa
siempre permanece en su forma original y traduce cuando est en la fase de ejecucin instruccin por
instruccin.
La interpretacin es un proceso que
consta de un paso, en donde tanto el
programa como la entrada le son dados
al intrprete y se obtiene de una salida.
El intrprete en los lenguajes de
programacin simula una mquina
virtual, donde el lenguaje de mquina es
similar al lenguaje fuente.
La ventaja del proceso interprete es que
no necesita de dos fases para ejecutar el
programa, sin embargo su inconveniente
es que la velocidad de ejecucin es ms
lenta ya que debe analizar e interpretar
las instrucciones contenidas en el
programa fuente.
Comparando su actuacin con la de un ser humano, un compilador equivale a un traductor profesional que, a
partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intrprete corresponde al
intrprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito.
En la actualidad, uno de los entornos ms comunes de uso de los intrpretes informticos es Internet, debido a la
posibilidad que estos tienen de ejecutarse independientemente de la plataforma.
Traduce y ejecuta una lnea del programa a la vez
Si hay error, detiene ejecucin del programa
Programas ms lentos pero ms portables y flexibles.
Los intrpretes realizan la traduccin y ejecucin de forma simultnea, es decir, un intrprete lee el cdigo fuente
y lo va ejecutando al mismo tiempo.
Las diferencias entre un compilador y un intrprete bsicamente son:
Un programa compilado puede funcionar por si solo mientras que un cdigo traducido por un intrprete no puede

funcionar sin ste.


Un programa traducido por un intrprete puede ser ejecutado en cualquier mquina ya que, cada vez que se
ejecuta el intrprete, tiene que compilarlo.
Un archivo compilado es mucho ms rpido que uno interpretado.
El intrprete traduce una sentencia de programa a la vez, segn se ejecuta el programa. Mostrara en la pantalla
cualquier error que encuentre en la sentencia. Esta traduccin lnea por lnea hace que los intrpretes sean
ideales para quienes se hallan en el aprendizaje de la programacin, pero hace ms lento el proceso de
ejecucin.
Cdigo fuente: Es un conjunto de instrucciones del programa que estn escritas en un lenguaje de
programacin.
Lenguaje de maquina: Instrucciones nativas del CPU
Lenguaje de alto nivel: Ms expresivo a nivel de aplicacin.
ENSAMBLADORES
Los ensambladores son programas que procesan los enunciados del programa origen en lenguaje ensamblador
y los traducen en archivos en lenguaje mquina que son ejecutados por un microprocesador o un
microcontrolador. Los ensambladores permiten que los programas origen se escriban y se editen en una
computadora para generar un cdigo ejecutable en otra computadora. El archivo en lenguaje objeto ejecutable
resultante se carga y se ejecuta en el sistema destino.

PROCESAMIENTO DE ENSAMBLADO
Este ensamblador es de dos pasadas.
Durante la primera pasada, el programa origen se lee para desarrollar la
tabla de smbolos.
Durante la segunda pasada el archivo objeto se crea con referencia a la
tabla desarrollada en la primera pasada.
Durante la segunda pasada se crea el listado del programa origen.
Cada enunciado origen se procesa completamente antes de que el enunciado siguiente se lea.
A medida que el enunciado se procesa el ensamblador examina los campos de etiqueta, de cdigo de operacin
y de operandos.
La tabla de cdigos de operacin se revisa para encontrar un cdigo operacional similar.
Durante el procesamiento de un mnemnico correspondiente a un cdigo de operacin normal, el cdigo
mquina normal se inserta en el archivo objetivo.

La accin buscada por una directriz del ensamblador ocurre durante el procesamiento de dicha directriz.
Cualquier error que detecta el ensamblador se muestra justamente antes de la lnea que contiene dicho error.
An y cuando no se desee producir un listado origen, los errores se despliegan para indicar que el
procesamiento de ensamblado no se llev a cabo de manera normal.
LENGUAJE ENSAMBLADOR
El lenguaje simblico que se utiliza para codificar los programas origen que se procesan por el ensamblador es
llamado lenguaje ensamblador.
Este lenguaje es una coleccin de smbolos mnemnicos que representan: operaciones, nombres simblicos,
operadores y smbolos especiales.
El lenguaje ensamblador proporciona cdigos de operacin de los mnemnicos para todas las instrucciones de
la mquina contenidas en la lista de instrucciones.
Adems, el lenguaje ensamblador contiene mnemnicos directrices, los cuales especifican acciones auxiliares
que se llevan a cabo por el ensamblador. Estas directrices no siempre son traducidas a lenguaje maquina.
LENGUAJE INTERPRETADO
Un lenguaje de programacin es, por definicin, diferente al lenguaje mquina. Por lo tanto, debe traducirse para
que el procesador pueda comprenderlo. Un programa escrito en un lenguaje interpretado requiere de un
programa auxiliar, que traduce los comandos de los programas segn sea necesario.
LENGUAJE COMPILADO
Un programa escrito en un lenguaje "compilado" se traduce a travs de un programa anexo llamado compilador
que, a su vez, crea un nuevo archivo independiente que no necesita ningn otro programa para ejecutarse a s
mismo. Este archivo se llama ejecutable.
Un programa escrito en un lenguaje compilado posee la ventaja de no necesitar un programa anexo para ser
ejecutado una vez que ha sido compilado. Adems, como slo es necesaria una traduccin, la ejecucin se
vuelve ms rpida.
Sin embargo, no es tan flexible como un programa escrito en lenguaje interpretado, ya que cada modificacin del
archivo fuente requiere de la compilacin del programa para aplicar los cambios.
LENGUAJES INTERMEDIARIOS
Algunos lenguajes pertenecen a ambas categoras (LISP, Java, Python...) dado que el programa escrito en estos
lenguajes puede, en ciertos casos, sufrir una fase de compilacin intermediaria, en un archivo escrito en un
lenguaje ininteligible y no ejecutable. Los applets Java, pequeos programas que a menudo se cargan en
pginas Web, son archivos compilados que slo pueden ejecutarse dentro de un navegador Web.