compiladores e intÉrpretes

3
5/9/2018 COMPILADORESEINTRPRETES-slidepdf.com http://slidepdf.com/reader/full/compiladores-e-interpretes-559ca13a4fca3 1/3 COMPILADORES E INTÉRPRETES COMPPILADORES INTERPRETES DEFINICION Un compilador es un programa o una herramienta cuya función es compilar; es decir es aquel que toma un texto o código fuente escrito en un lenguaje de alto nivel y lo traduce a un lenguaje compresible para las computadoras. Un interpretador es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción. CARACTERISTICAS Generalmente un compilador se divide en dos partes:* Front End: parte que analiza e l código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Parte que suele ser independiente de la plataforma o sistema operativo para el que funcionará.* Back End: parte en donde se genera el código máquina exclusivo para una plataforma a partir de lo analizado en el frontend. Por lo general el resultado del back end no puede ser ejecutado directamente, se necesita pasar por un proceso de enlazado (linker).Existen varios tipos de compiladores: Compiladores cruzados, Compiladores optimizadores, Compiladores de una sola pasada, Compiladores de varias pasadas, Compiladores JIT (Just In Time). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora. Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de programación y depuración (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o añadir módulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete, sino del propio intérprete (lo que se conoce comúnmente como máquina virtual). VENTAJAS Se compila una vez, se ejecuta n veces. En bucles, la compilación genera código equivalente al bucle, pero interpretándolo se traduce tantas veces una línea como veces se repite el bucle. El compilador tiene una visión global El programa se puede ejecutar de inmediato, sin esperar a ser compilado. • Puede ser interrumpido con facilidad. • puede ser rápidamente modificado y ejecutado nuevamente.

Upload: israel-gonzalez

Post on 08-Jul-2015

3.840 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: COMPILADORES E INTÉRPRETES

5/9/2018 COMPILADORES E INT RPRETES - slidepdf.com

http://slidepdf.com/reader/full/compiladores-e-interpretes-559ca13a4fca3 1/3

COMPILADORES E INTÉRPRETES

COMPPILADORES INTERPRETESDEFINICION Un compilador es un programa o

una herramienta cuya función escompilar; es decir es aquel que tomaun texto o código fuente escrito en

un lenguaje de alto nivel y lo traducea un lenguaje compresible para lascomputadoras. 

Un interpretador es un programainformático capaz de analizar y

ejecutar otros programas, escritosen un lenguaje de alto nivel. Los

intérpretes se diferencian de loscompiladores en que mientras estostraducen un programa desde sudescripción en un lenguaje de

programación al código de máquinadel sistema, los intérpretes sólo

realizan la traducción a medida quesea necesaria, típicamente,instrucción por instrucción, ynormalmente no guardan el

resultado de dicha traducción. 

CARACTERISTICAS Generalmente un compilador sedivide en dos partes:* Front End:

parte que analiza e l código fuente,comprueba su validez, genera elárbol de derivación y rellena losvalores de la tabla de símbolos.

Parte que suele ser independientede la plataforma o sistema operativopara el que funcionará.* Back End:parte en donde se genera el código

máquina exclusivo para unaplataforma a partir de lo analizado

en el frontend.Por lo general el resultado del back

end no puede ser ejecutado

directamente, se necesita pasar porun proceso de enlazado(linker).Existen varios tipos decompiladores: Compiladores

cruzados, Compiladoresoptimizadores, Compiladores de una

sola pasada, Compiladores devarias pasadas, Compiladores JIT

(Just In Time).De esta manera un programadorpuede diseñar un programa en un

lenguaje mucho más cercano acomo piensa un ser humano, para

luego compilarlo a un programa másmanejable por una computadora. 

Los programas interpretados suelenser más lentos que los compilados

debido a la necesidad de traducir elprograma mientras se ejecuta, peroa cambio son más flexibles como

entornosde programación y depuración (lo

que se traduce, por ejemplo, en unamayor facilidad para reemplazarpartes enteras del programa oañadir módulos completamentenuevos), y permiten ofrecer al

programa interpretado un entornono dependiente de la máquina

donde se ejecuta el intérprete, sino

del propio intérprete (lo que seconoce comúnmente como máquinavirtual).

VENTAJASSe compila una vez, se ejecuta n

veces.

En bucles, la compilación genera

código equivalente al bucle, pero

interpretándolo se traduce tantas

veces una línea como veces se

repite el bucle.

El compilador tiene una visión global

El programa se puede ejecutar de

inmediato, sin esperar a ser

compilado.

• Puede ser interrumpido con

facilidad.

• puede ser rápidamente modificado

y ejecutado nuevamente.

Page 2: COMPILADORES E INTÉRPRETES

5/9/2018 COMPILADORES E INT RPRETES - slidepdf.com

http://slidepdf.com/reader/full/compiladores-e-interpretes-559ca13a4fca3 2/3

del programa, por lo que la

información de mensajes de error es

mas detallada. Ventajas del

intérprete frente al compilador:

Un intérprete necesita menos

memoria que un compilador. En

principio eran más abundantes dadoque los ordenadores tenían poca

memoria.

Permiten una mayor interactividad

con el código en tiempo de

desarrollo.

• Resultan muy apropiados durante

la fase de desarrollo de un

programa, ya que la compilación no

permite la ejecución paso a paso del

programa y con ello impide la

edición seguimiento y depuración

del programa.

DESVENTAJASLa ejecución es más lenta, pues

cada intrucción debe ser traducida acódigo máquina tantas veces como

sea ejecutada.

• No son adecuados en la fase de

explotación del programa ya que el

proceso de interpretación se ha de

repetir cada vez que se ejecuta el

programa, mientras que con la

compilación, una vez obtenido el

programa en leguaje máquina éste

puede ser ejecutado sin necesidad

de compilarlo de nuevo.

DIFERENCIASGenera un ejecutable

El proceso de traducción se realizauna sola vez

-La ejecución es muy rápida debido

a que el programa ya ha sidotraducido a código máquina

El ejecutable va dirigido a unaplataforma concreta (una CPU, unsistema operativo, y quizá algunaotra consideración), siendoprácticamente imposible portarlo aotra. En ocasiones, si existe uncompilador para otra plataforma, sepuede recompilar el programa,aunque normalmente esto planteaserias dificultades. Los programas

que se van a compilar suelen estarmuy ligados a la plataforma dedestino.

-No genera un ejecutable

-El proceso de traducción se realiza

en cada ejecución

La ejecución es más lenta, ya que

para cada línea del programa es

necesario realizar la traducción

No hay ejecutable, así que si existe

un intérprete para una plataforma

concreta, el programa se podrá

ejecutar en ambas. Típicamente, los

programas interpretados son mucho

más portables que los compilados,ya que suelen existir intérpretes del

mismo lenguaje en distintas

Page 3: COMPILADORES E INTÉRPRETES

5/9/2018 COMPILADORES E INT RPRETES - slidepdf.com

http://slidepdf.com/reader/full/compiladores-e-interpretes-559ca13a4fca3 3/3

Los lenguajes compilados suelenproporcionar al programadormecanismos más potentes yflexibles, a costa de una mayorligazón a la plataforma.

-Una vez compilado el programa, elcódigo fuente no es necesario paraejecutarlo, así que puede

permanecer en secreto si se desea-Los errores sintácticos se detectandurante la compilación. Si el fuentecontiene errores sintácticos, elcompilador no producirá unejecutable.

Un programa compilado puede, porerror, afectar seriamente a laestabilidad de la plataforma,comprometiendo la ejecución de losotros procesos, por ejemplo,

acaparando la CPU, la memoria oalgún otro recurso, siendo a vecescomplicado para el sistemaoperativo interrumpir su ejecución. 

plataformas. Los programas que se

van a interpretar no suelen ser muy

dependientes de su plataforma de

destino, siendo más portables.

Los lenguajes interpretados no

suelen ser muy dependientes de la

plataforma de destino, pero encontrapartida suelen ser menos

flexibles y potentes que los

compilados.

El código fuente es necesario en

cada ejecución, así que no puede

permanecer en secreto

Los errores sintácticos se detectan

durante la ejecución, ya que

traducción y ejecución se van

haciendo simultáneamente. Algún

error sintáctico podría quedar

enmascarado, si para una ejecución

concreta no es necesario traducir la

línea que lo contiene. (Algunos

intérpretes son capaces de evitar

esto)

-Un programa interpretado con un

comportamiento torpe normalmente

puede ser interrumpido sin

dificultad, ya que su ejecución está

bajo el control del intérprete, y no

sólo del sistema operativo.