martes, 7 de febrero de 2017

Arquitectura de los compiladores e intérpretes

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