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

INTRPRETES Y COMPILADORES

INTRODUCCIN: La palabra intrprete puede darse en dos tipos de


disciplinas: en la Traduccin y en la Informtica. Para la Traduccin, un
intrprete se definira como una persona que explica a otras, en lengua que
entienden, lo dicho en otra que les es desconocida (segn la definicin de la
Real Academia Espaola). Un intrprete en Informtica sera un traductor de
lenguaje de programacin de alto nivel. Ms adelante ampliaremos su
definicin. Nos centraremos en el dominio de la Informtica, para saber
qu es exactamente un intrprete?, para qu sirve?, en qu lo podemos
comparar con un intrprete humano?, y por ltimo en qu nos puede
ayudar a la hora de hacer una traduccin? En primer lugar analizaremos sus
caractersticas y funciones. En segundo veremos los puntos comunes y las
diferencias con un intrprete humano, y por ltimo qu funciones nos
pueden servir en el momento que tengamos que realizar una traduccin.

I- Definiciones y funciones:

A) Definiciones:

Un intrprete es un programa de traduccin de lenguaje de alto nivel. En


Informtica se habla de lenguajes de programacin que son un medio de
comunicacin entre el usuario y el ordenador formado por un conjunto de
smbolos elementales (alfabeto), palabras (vocabulario), y reglas (semntica
y sintaxis). Con un lenguaje se construyen cada una de las rdenes o
instrucciones para el ordenador de la secuencia de instrucciones que
constituyen un programa.
Dentro de los lenguajes de programacin se encuentra el lenguaje de alto
nivel: universal, no depende del procesador ni de la estructura interna de
cada ordenador. No se necesita conocer el hardware especfico de dicha
mquina. Est ms prximo a lo que es un lenguaje natural. Es claro,
simple, eficiente y legible. Sus instrucciones equivalen a las mltiples
instrucciones en lenguaje mquina (cdigos binarios de instrucciones, es
decir, sucesiones de ceros y unos: 1100 0010 1010 0101 que componen
un repertorio reducido de operaciones). Existe el problema de que los
programas son ms lentos en su ejecucin y necesitan ser traducidos a
lenguaje mquina para que el procesador los entienda.
Algunos ejemplos de lenguajes de alto nivel pueden ser: FORTRAN, ALGOL,
COBOL, BASIC, PASCAL, LISP, JAVA
El intrprete analiza, lee lnea a lnea el programa fuente, lo traduce a un
cdigo intermedio y lo ejecuta directamente, sin generar ningn cdigo
equivalente. Pero el intrprete no es el nico programa traductor que existe.
Tambin estn los compiladores, que analizaremos ms adelante, los
ensambladores que traducen el lenguaje ensamblador (cdigos de
instrucciones formados por grupos de palabras mnemotcnicas como
LOAD= almacenar, ADD= sumar, CMP= comparar) a lenguaje mquina, y
los preprocesadores que traducen un programa escrito en lenguaje de alto
nivel a otro escrito en otro lenguaje de alto nivel.

Los compiladores tienen una accin parecida a la de los intrpretes, slo


que poseen un programa objeto que ya est traducido en lenguaje mquina.

B) Funciones:

Las funciones de un intrprete son las mismas que la de los compiladores:

Anlisis lxico: es la parte inicial de leer y analizar el cdigo fuente.


El texto es ledo y dividido en tokens (que segn la Wikipedia es
llamado tambin componente lxico y es una cadena de
caracteres que tiene un significado coherente en cierto lenguaje de
programacin. Ejemplos de tokens, podran ser palabras clave (if,
else, while, int, ...), identificadores, nmeros, signos, o un operador de
varios caracteres, (por ejemplo, :=).), cada uno de los cuales
corresponde a un smbolo en el lenguaje de programacin, por
ejemplo, el nombre de una variable, una palabra reservada o un
nmero.

Anlisis sintctico: en esta fase se toma una lista de tokens


producida por el anlisis lxico y los acomoda en una estructura de
rbol llamado rbol sintctico que refleja la estructura del programa.
Esta fase tambin se llama parsing.

Verificacin de tipos: en esta pate se analiza el rbol sintctico


para determinar si el programa viola ciertos requerimientos de
consistencia, es decir, si una variable se utiliza pero no se declara, o
si se usa en un contexto que no tiene sentido por el tipo de variable,
tal como un string (que segn la Wikipedia es
una secuencia ordenada de longitud arbitraria (aunque finita) de
elementos que pertenecen a un cierto alfabeto) para utilizar un valor
booleano (segn la Wikipedia: aquel que puede representar valores
de lgica binaria, esto es 2 valores, valores que normalmente
representan falso o verdadero) como una funcin de apuntador.

Generacin de cdigo intermedio: el programa se traduce a un


lenguaje simple e independiente de la mquina.
Ubicacin de registros: los nombres simblicos de las variables
utilizadas en el cdigo intermedio se traducen a nmeros, cada uno
de ellos correspondiendo a un registro de mquina objetivo (de la
mquina que va a ejecutar finalmente el programa).

Generacin de cdigo mquina: el lenguaje intermedio se traduce


al lenguaje ensamblador (representacin textual de cdigo mquina)
para una estructura de mquina especfica.

Ensamblado y enlazado: el cdigo en lenguaje ensamblador se


traduce a una representacin binaria y se determina la direccin real
de las variables, funciones, etc.

Aqu podemos observar un esquema sobre las distintas partes en que


trabaja:
Pero a diferencia de un intrprete, el compilador es una aplicacin que lee
totalmente un programa escrito en lenguaje fuente, y lo traduce a un
programa equivalente a otro en lenguaje objeto. La principal ventaja del
proceso de compilacin frente al de interpretacin es que los programas se
ejecutan mucho ms rpidamente una vez compilados; por el contrario, es
ms cmodo desarrollar un programa mediante un intrprete que mediante
un compilador puesto que en el intrprete las fases de edicin y ejecucin
estn ms integradas. La depuracin de los programas suele ser ms fcil
en los intrpretes que en los compiladores puesto que el cdigo fuente est
presente durante la ejecucin. Estas ventajas pueden incorporarse al
compilador mediante la utilizacin de entornos de desarrollo y depuradores
simblicos en tiempo de ejecucin.

II- Intrprete informtico y humano

a) La simultaneidad:

Un intrprete humano tiene como objetivo transmitir un mismo mensaje


desde una lengua origen hacia una lengua meta. Se podra comparar con un
intrprete informtico en cuanto a la simultaneidad. El intrprete humano va
traduciendo lo que se emite en el momento determinado. El intrprete
informtico va traduciendo segn se ejecuta un programa, lnea por lnea,
oracin por oracin, etc. Tiene como objeto la obtencin de los resultados
del programa. El intrprete tambin traduce un cdigo fuente en lenguaje
mquina.

Esto es lo que hara un intrprete informtico:


Y esto es lo que hara un intrprete humano:

Situacin de intento de traduccin


Discurso de partida en

lengua de origen
Intrpre

te
Traduce y ejecuta oracin
por oracin

b) La ineficacia:

Difiere del compilador en que ejecuta cada orden una vez que se traduce.
Se debe analizar, traducir y ejecutar cada instruccin. Este proceso puede
hacer ms lenta la ejecucin del programa, con lo cual los intrpretes se
utilizan menos que los compiladores.

En lugar de generar un cdigo del rbol sintctico, este ltimo se procesa


directamente para evaluar expresiones y ejecutar sentencias, as hasta
terminar. Un intrprete puede necesitar evaluar la misma parte del rbol
sintctico varias veces, por ejemplo cuando se hacen ciclos. Por eso, la
interpretacin puede resultar ms lenta que la ejecucin de un programa
compilado. Pero escribir un intrprete es ms fcil de mover a una mquina
diferente, por lo tanto, en las aplicaciones donde la velocidad no sea
importante, es mejor utilizar un intrprete.

Tambin es importante decir que consume muchos recursos, es decir que


ocupa mucha memoria.
c) El compilador como un traductor:

El objetivo de un compilador es la obtencin de una traduccin del


programa fuente a otro lenguaje.

En la primera etapa se analiza la entrada para averiguar qu es lo que se


intenta comunicar. Esto es lo que se conoce como anlisis. El fruto de esta
etapa es una representacin de la entrada que permite que la siguiente fase
se desarrolle con facilidad. La segunda etapa, la sntesis, toma la
representacin obtenida en el anlisis y la transforma en su equivalente en
el lenguaje destino.

Anlisis:

- Lxico: de caracteres a componentes

- Sintctico: de componentes a rboles de anlisis

- Semntico: de rboles de anlisis a AST (Advanced Software


Technologies)

Sntesis:

- Generacin de cdigo intermedio

- Generacin de cdigo objeto

- Optimizacin (mezclada con las anteriores)

Coincide con un traductor humano en que en primer lugar debe hacer un


anlisis de lectura (que se debe efectuar ms de una vez) comprobando el
campo lxico, la sintaxis y sobre todo el significado del texto. La sntesis
correspondera al proceso de traduccin en el cual se pasa el texto de una
lengua origen a una lengua meta. Por ltimo quedara la revisin.
El compilador tiene una visin global del programa, por lo que la
informacin de mensajes de error es ms detallada. Un traductor puede
corregir sus errores de forma ms fcil que un intrprete que traduce de
forma simultnea. Los compiladores permiten una mayor interactividad con
el cdigo en tiempo de desarrollo. Necesita otros programas para conseguir
su objetivo (por ejemplo el linker, el depurador, el ensamblador, etc.). Un
traductor tambin hace uso de distintos recursos aparte del texto (por
ejemplo glosarios, tesauros, enciclopedias, etc.). El compilador informa de
los errores a su usuario. El traductor puede consultar al cliente sobre las
diferentes traducciones que pueden hacerse y as encontrar la que ms se
adece al inters del primero. Pueden discutirse errores en cuanto al uso de
una palabra concreta por ejemplo.
Sin embargo, no coincide con un traductor humano en cuanto a la
velocidad. Normalmente un compilador suele ser ms rpido que un
intrprete. En la vida real, la interpretacin se hace en el momento, si el
discurso es de 10 minutos, la interpretacin se hace en 10 minutos. Una
traduccin necesita das para llevarse a cabo.

III- En qu nos puede ayudar a nosotros,


traductores?

Los intrpretes se usan principalmente:

Para el desarrollo de prototipos y la enseanza; cuando el lenguaje tiene


caractersticas que exigen un intrprete (Lisp, APL, REXX, Smalltalk, Prolog);
cuando el lenguaje dispone de operadores muy potentes, lo que significa
que la mayor parte del tiempo los programas estn ejecutando cdigo
rpido prefabricado, ms que los programas fuente del programador (APL,
SNOBOL). Tambin sirve para obtener independencia de la mquina (JAVA) y
para aumentar la seguridad (JAVA).

Ventajas de un intrprete:

Flexibilidad: permite realizar acciones complejas, imposibles o muy


difciles con un compilador, como las siguientes:

o Ejecucin de cadenas de caracteres mediante operadores


como "execute", "interprete" o "evalquote".

o Modificar sobre la marcha el significado de los smbolos e


incluso prescindir por completo de las declaraciones.

o Obtener un ligamiento dinmico completo en los sistemas


orientados a objetos.

o Simplificar la gestin de memoria en los programas fuente.


La facilidad de depuracin de programas: la interpretacin puede
interrumpirse en cualquier momento para examinar o modificar los
valores de las variables o la situacin en la ejecucin. La tabla de
smbolos est disponible. Se pueden corregir los errores y continuar;
trazas y paradas programadas, saltos en el programa, abandonos de
subrutinas.

En comparacin con un compilador podemos decir que, en un ejemplo de la


vida real; supongamos que tenemos un libro escrito en una lengua diferente
al castellano. Existen dos procesos para acceder a su contenido cuando se
necesite su uso. El primero es traducir en el momento de su empleo la parte
del libro que se necesite, pero sin transcribirla a papel, solo de forma
simultnea. Este proceso corresponde a la funcin del intrprete. El segundo
sera traducir el libro al castellano y dejar dicha versin escrita sobre papel,
lo que corresponde a la compilacin.

Pequea curiosidad:

En el siguiente artculo http://spac.caad.es/2/spip.php%3Farticle127?


article127, el autor hace una reflexin de porqu es preferible que haya
interpretes tecnolgicos antes que intrpretes humanos en un videojuego
de rol (juego en el que cada jugador tiene que desempear un papel de un
personaje totalmente fuera de la realidad). Los dos argumentos que expone
son:

1) Si bien es cierto que jugando con Mster* humanos, estos harn de


intrprete de tus acciones y por tanto sern capaces de responderte
ms y mejor que un intrprete informtico ()la realidad desde mi
punto de vista, es que jugando contra la mquina, sin humanos de
por medio, tienes ms libertad. () la libertad de desconectarse del
mundo real y liberar su mente. Visto as, si con Masters vas a poder
hacer ms cosas en el mundo del juego... () te cortan el punto, as
de simple, una o varias personas escuchndote, son, lo quieran o no,
personas que juzgan ().
2) una AC informtica se puede empaquetar en un ejecutable, el
mundo del juego que propone, est definido rgidamente a nivel
binario y con el texto y comportamiento, y es como es, por s mismo.
No depende de quin entre en ese mundo a explorarlo, y no depende
de cmo te lo muestra un Mster, ese mundo era y es como es antes
de que t llegars... ()La definicin exacta del mundo del juego
sufre la interpretacin del Mster, para cada Mster que ofrece una
partida en ese mundo. Su valor y definicin original siempre es
adulterada en un porcentaje. Ese valor es distinto en cada Mster,
porque los hay mejores y peores.
La redaccin de tiene un gran nivel pero entendemos lo que quiere
transmitirnos. Sin embargo existe una respuesta a este artculo que podra
resultar muy interesante:

Analizndolos parece que el autor tiene miedo a vivir, o al menos, jugar en


sociedad. Veamos:

Miedo a ser juzgado por sus experimentos inmorales? Decir que su


libertad de experimentacin se ve menoscabada por que frente a l tiene un
Mster y otros jugadores que son humanos y juzgan implica dos
posibilidades: nunca ha jugado con adultos caso en el que al jugar al rol
siempre hay que poner en claro que los personajes son una cosa y las
personas otras. Si llevas al villano de la pelcula hars salvajadas,
traicionars o quemars aldeanos, violars a inocentes... pero no eres t el
que lo hace, sino el personaje y parte de la experiencia es ver a tus amigos
en esas circunstancias increbles y nada relacionadas con ellos. Eso es rol
entre adultos. Tan inmorales son los experimentos que quiere desarrollar el
autor que provocara el rechazo abierto de jugadores y Mster adultos? A m
me suena a miedo a jugar en sociedad.

El segundo argumento me parece similar. Qu el hecho de hacer un


agujero en una pared y que el Mster cree de la nada lo que hay al otro
lado ensucia el mundo de juego? Qu cosa ms absurda. Es como pensar
que las historias embutidas en una ACS no han sido inventadas por un
creador, creador que tena vagamente en la cabeza mltiples aspectos del
juego que nunca ha reflejado en el juego en s. Todas las historias tienen
limitaciones sea en el soporte que sea. La improvisacin teatral y el rol en
directo son probablemente de los pocos soportes para historias en donde
constantemente se pueden romper estas restricciones y eso no es un
problema, es claramente un valor. La experiencia, que al final es lo que
importa, puede ser casi tan extensa como se quiera. El humano que est ah
frente a ti, logra que la experiencia se adapte a tus reacciones. Eso es algo
que una mquina solo puede hacer de una manera mucho ms limitada.
Todo el argumento de que la historia exista ah a priori, es una cosa absurda
para m. Qu ms da? Lo que importa es lo que experimentes no cmo se
llega a esa experiencia. Y desde luego lo de que la cosa se ensucia porque
hay otros jugadores de nuevo me suena a miedo a jugar en sociedad. Por
qu se ensucia? Es que no puedes coordinar tu experiencia para disfrutarla
conjuntamente con otros jugadores? Tan frgil es tu capacidad de sostener
la suspensin de la realidad porque el gordo del Mster mastique unas
patatas justo antes de describir la corte del conde local?

*un Mster es un jefe de juego.

Nos preguntamos, en este caso, qu sera ms conveniente?


CONCLUSIN:

En conclusin podemos decir que el intrprete puede aparecer en forma de


ser humano o de aplicacin informtica. Cada uno tiene sus distintas
caractersticas pero coinciden en muchos aspectos como en el principal: la
transmisin de un cdigo de una lengua origen a una lengua meta. Hemos
adoptado la definicin de intrprete informtico como un programa de
traduccin de lenguaje de alto nivel que se diferencia del compilador, otro
programa de traduccin.

El intrprete coincide con un intrprete humano en su simultaneidad pero


difiere en la velocidad de ejecucin. Los intrpretes informticos suelen ser
ms lentos que los compiladores. Tambin podemos comparar los
compiladores con los traductores humanos en cuanto a su necesidad de
utilizar varios recursos para poder traducir como en la posibilidad de
consultar y corregir de manera ms profunda. En este caso, la traduccin de
un compilador resulta ms eficaz que la de un intrprete que debera
emplearse slo para el desarrollo de prototipos y para la enseanza.
Tambin sirve cuando el lenguaje tiene caractersticas que exigen un
intrprete (Lisp, APL, REXX, Smalltalk, Prolog), cuando el lenguaje dispone
de operadores muy potentes y, por ltimo, para obtener independencia de
la mquina (JAVA) y para aumentar la seguridad (JAVA).

Estas distintas funciones pueden ayudarnos a nosotros, traductores, para


poder introducir algoritmos (en lenguaje humano) dentro de una
computadora y que esta pueda entenderlos (en lenguaje de cdigo de
objeto) y as poder utilizar el programa que deseamos para poder ejercer
con las traducciones.

BIBLIOGRAFA

Fuentes informticas
http://www.todo-
programacion.com.ar/archives/2005/04/interpretes_y_c.html

http://www.mitecnologico.com/Main/DiferenciasEntreInterpretesYCompilador
es

http://www.mitecnologico.com/Main/ComparacionInterpretesYCompiladores

http://www.monografias.com/trabajos11/compil/compil.shtml

http://www.mailxmail.com/curso-informatica-ordenador-cientifico-
desarrollo/compiladores-interpretes-programas

http://www.giaa.inf.uc3m.es/docencia/ITIG/introduccion.pdf

http://spac.caad.es/2/spip.php%3Farticle127?article127

http://profejavaoramas.blogspot.com/2010/04/interprete.html

http://repositori.uji.es/xmlui/bitstream/handle/10234/5876/estructura.apun.p
df?sequence=1

http://algomasquetraducir.com/2007/09/02/traducir-programas-informaticos-
la-localizacion/

Wikipedia

www.rae.es

http://mi-carrera.com/TraductorEInterprete.html

http://www.investigacion.frc.utn.edu.ar/labsis/Publicaciones/InvesDes/Compil
adores/caratula.html

http://es.scribd.com/doc/49201542/Compiladores-E-Interpretes

http://arantxa.ii.uam.es/~alfonsec/docs/compila8.htm

http://www.di.uniovi.es/~labra/FTP/Interpretes.pdf

Fuentes bibliogrficas

Mtodos informticos en turbo pascal cap. 1 Fundamentos de


programacin ngel Garca y Beltrn, Raquel Martnez Fernndez y Jos
Alberto Jan Gallego.