Unidad 1
Arquitectura de
los compiladores e intérpretes
Unidad de
competencia:
Determina la
estructura general de los compiladores de intérpretes con base a su
funcionalidad de sus etapas y fases.
Compiladores
e intérpretes
Compiladores.
Concepto: Es
aquel traductor que tiene como entrada una sentencia en lenguaje formal y como
salida tiene un fichero ejecutable, es decir, realiza una traducción de un
código de alto nivel a código máquina (también se entiende por compilador aquel
programa que proporciona un fichero objeto en lugar del ejecutable final).
Características:
◦ Generación
de código intermedio.
◦ Generación
de código objeto.
◦ Optimización
(mezclada con las anteriores).
Aplicabilidad
Se realizara
la implementación de un Generador de Analizadores Léxicos.
Se realizara
la implementación de un Generador de Analizadores Sintácticos.
Se
realizara la implementación de un Analizador Semántico y la de un Generador de
Código Intermedio.
Se realizara
la implementación de un Intérprete de un lenguaje XXX2.
Ejemplo (1):
Ejemplo (2):
Interpretes:
Concepto: Es
como un compilador, solo que la salida es una ejecución. El programa de entrada
se reconoce y ejecuta a la vez. No se produce un resultado físico (código
máquina) sino lógico (una ejecución). Hay lenguajes que sólo pueden ser
interpretados, como p.ej. SNOBOL (StriNg Oriented SimBOlyc Language), LISP
(LISt Processing), algunas versiones de BASIC (Beginner’s All-purpose Symbolic
Instruction Code), etc.
Características:
Mientras que
el objetivo de los compiladores es obtener una traduccion del programa fuente a
otro lenguaje, los interpretes tienen como objeto la obtencion de los
resultados del programa. Para ello deben realizar dos tareas: analizar su
entrada y llevar a cabo las acciones especificadas por ella.
La parte de analisis
puede realizarse de manera identica a como se lleva a cabo en los compiladores.
Es la parte de sıntesis la que se diferencia sustancialmente
◦ Generación
directa de resultados.
◦ Generación
de código intermedio e interpretación del código intermedio.
Aplicabilidad
Se realizara
la implementación de un Intérprete de un lenguaje XXX2.
Se realizara
la implementación de un Compilador de un lenguaje XXX3.
Ejemplo (1):
Ejemplo (2):
Arquitectura de
los compiladores e intérpretes
Interprete:
A la hora de
construir un intérprete es conveniente utilizar una Representación Interna (RI)
del lenguaje fuente a analizar.
De esta
forma, la organización interna de la mayoría de los intérpretes se descompone
en los módulos: Traductor a Representación Interna: Toma como entrada el código
del programa P en Lenguaje Fuente, lo analiza y lo transforma a la
representación interna correspondiente a dicho programa P. Representación
Interna (P/RI): La representación interna debe ser consistente con el programa
original.
Entre los
tipos de representación interna, los árboles sintácticos son los más utilizados
y, si las características del lenguaje lo permiten, pueden utilizarse
estructuras de pila para una mayor eficiencia. Tabla de símbolos: Durante el
proceso de traducción, es conveniente ir creando una tabla con información
relativa a los símbolos que aparecen.
Características:
Aplicabilidad:
Compiladores:
Verifica en
forma permanente la correcta escritura de las sentencias, teniendo como
parámetros un conjunto de reglas denominada ―gramática‖.
Interpretes:
Intérpretes
de Comandos: Los sistemas operativos cuentan con intérpretes de comandos como
el Korn-Shell, C-Shell, JCL, etc. Estos intérpretes toman un lenguaje fuente
que puede incluir sentencias de control (bucles, condiciones, asignaciones,
etc.) y ejecutan los diferentes comandos a medida que aparecen en el lenguaje.
Lenguajes
basados en Escritos (Scripting Languages), diseñados como herramientas que
sirvan de enlace entre diferentes sistemas o aplicaciones. Suelen ser
interpretados con el fin de admitir una mayor flexibilidad a la hora de
afrontar las peculiaridades de cada sistema.
Podrían destacarse Perl, Tcl/Tk,
JavaScript, WordBasic [Ousterhout 97]
Entornos de
Programación: Existen ciertos lenguajes que contienen características que
impiden su compilación o cuya compilación no es efectiva. Estos lenguajes
suelen disponer de un complejo entorno de desarrollo interactivo con
facilidades para la depuración de programas. Entre estos sistemas pueden
destacarse los entornos de desarrollo para Lisp, Visual Basic, Smalltalk, etc.
Ejemplo (1):
Máquinas
virtuales
Concepto: Entendamos
por una máquina virtual a un Software que simula a una computadora y puede
instalar y usar otros sistemas operativos de forma simultanea como si fuese una
computadora real sobre nuestro sistema operativo1.
Una característica
esencial de las máquinas virtuales es que los procesos que ejecutan están
limitados por los recursos y abstracciones proporcionados por ellas. Estos
procesos no pueden escaparse de esta "computadora virtual". Uno de
los usos domésticos más extendidos de las máquinas virtuales es ejecutar
sistemas operativos para "probarlos".
De esta forma
podemos ejecutar un sistema operativo que queramos probar (GNU/Linux, por
ejemplo) desde nuestro sistema operativo habitual (Windows 7 por ejemplo) sin
necesidad de instalarlo directamente en nuestra computadora y sin miedo a que
se des configure el sistema operativo primario.
Características:
Particionamiento:
El particionamiento es una de
las características de las máquinas virtuales que permite que se ejecuten
varios sistemas operativos en una misma máquina física y se distribuyan los
recursos del sistema entre las máquinas virtuales.
Aislamiento
El aislamiento es aquella
característica de las máquinas virtuales que ofrece seguridad a nivel de
hardware y el aislamiento por fallas y protege el rendimiento mediante
controles de recursos avanzados.
Encapsulación
La encapsulación es una
característica de las máquinas virtuales que garantiza que se guarde el estado
completo de una ordenador virtual en archivos y que se muevan y copien máquinas
virtuales con la misma facilidad que si fueran archivos.
Independencia del
hardware
La independencia del hardware
es característica de máquinas virtuales que proporciona que se migre cualquier máquina virtual a cualquier
servidor físico.
Crear una máquina virtual
Ya
conocemos las máquinas virtuales y sus características pero aún no sabemos cómo
crear una máquina virtual.
Aplicabilidad:
Varios
sistemas operativos distintos pueden coexistir sobre la misma computadora, en
sólido aislamiento el uno del otro, por ejemplo para probar un sistema
operativo nuevo sin necesidad de instalarlo directamente. La máquina virtual
puede proporcionar una arquitectura de instrucciones que sea algo distinta de
la verdadera máquina.
Es decir,
podemos simular Hardware. Varias máquinas virtuales –cada una con su propio
sistema operativo llamado sistema operativo "invitado" o
"guest"–, pueden ser utilizadas para consolidar servidores.
Esto
permite que servicios que normalmente se tengan que ejecutar en computadoras
distintas para evitar interferencias, se puedan ejecutar en la misma máquina de
manera completamente aislada y compartiendo los recursos de una única
computadora.
Ejemplos:
·
Virtualbox:
Software desarrollado por Oracle. Se trata de un software multiplataforma capaz
de virtualizar prácticamente la totalidad de sistemas operativos con
arquitectura x86/amd64. Es la máquina virtual multiplataforma, la base de este
software dispone de una la licencia GPL2, mientras que el pack de extensiones
que añaden funcionalidades están bajo licencia privativa. Virtualbox es
gratuito para un uso no comercial.
·
Vmware
Workstation Player: Software privativo multiplataforma desarrollado por EMC
corporation y que es utilizado ampliamente en el entorno profesional en las
áreas del cloud computing entre muchas otras. Al igual que Virtualbox, esta
máquina virtual nos permite virtualizar una gran diversidad de sistemas
operativos.
Parallels: Aunque se
trata de una máquina virtual multiplataforma, acostumbra a ser usado por los
usuarios del sistema operativo OS X de Apple que desean virtualizar el sistema
operativo Windows. Esta máquina virtual es de pago y únicamente puede
virtualizar los sistemas operativos Windows y Mac OS.
No hay comentarios:
Publicar un comentario