compiladores e intÉrpretes
TRANSCRIPT
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.
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
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.