Vous êtes sur la page 1sur 25

FACULTAD DE INGENIERIA DE SISTEMAS

COMPILADORES INTERPRETES Y MAQUINAS VIRTUALES

Mg. Ing. Rolando Chvez Guilln

En el sistema de mquinas virtuales se realiza

una

compilacin

posteriormente

una

interpretacin. No es un concepto nuevo, pero sin duda, no ha tenido una aplicacin prctica masiva hasta la llegada de la plataforma Java de Sun

Microsystems a principios de los 90, y algo despus con la plataforma .NET de Microsoft.
2

La confeccin de un programa se realiza escribiendo una serie de rdenes o instrucciones que siguen las normas de un lenguaje de programacin.

Estas rdenes las escribimos en ficheros de texto


, utilizando algn editor de textos ms o menos

sencillo,

bien

alguno

de

los

editores

especializados para programacin.


3

Incluso, algunos entornos de programacin proporcionan sus propias herramientas

especficas para escribir programas, con muchas ventajas para el programador... pero por muy

compleja

que

sea

la

herramienta

para

confeccionar programas, por lo general, el programa siempre se reduce a una serie de instrucciones en un fichero de texto.
4

A estos ficheros de texto les llamamos fuente. (del ingls source. A menudo se utilizan expresiones como cdigo fuente, ficheros fuente, etc.). Sin embargo, sabemos que la CPU slo entiende su propio lenguaje, que normalmente

es extraordinariamente sencillo comparado el


lenguaje de programacin que estamos
5

aprendiendo.

El lenguaje de la CPU es el cdigo mquina (del ingls machine code). El cdigo mquina son secuencias binarias que la CPU ejecuta como instrucciones sencillas. Por supuesto, cada modelo de CPU tiene su propio cdigo mquina, aunque a veces, varios

modelos de CPU tienen lenguajes mquina


compatibles. (Nota: mucha gente confunde el lenguaje ensamblador con el lenguaje mquina.
6

Es necesario tener en cuenta que cada orden de un lenguaje de alto nivel (por ejemplo, una orden para imprimir "hola mundo" por la pantalla) se

traduce en largas secuencias de instrucciones en


cdigo mquina .

Lo que para nosotros es una sola orden, para la


CPU supone muchos pequeos pasos simples.
7

extremadamente

Tampoco

podemos

olvidarnos

del

sistema

operativo. Los programas de aplicacin se apoyan no slo en la CPU, sino que necesitan de la

participacin del sistema operativo para realizar


muchas de sus labores.

As pues, muchas veces los programas se hacen


pensando que su destino va a ser una determinada CPU ms un determinado sistema operativo.
8

A menudo, incluso hay que incluir en esta lista otros programas como servidores de aplicaciones, sistemas gestores de bases de datos, libreras de cdigo, etc. A este conjunto de requisitos necesarios para la ejecucin de un programa se le suele llamar a menudo plataforma.

COMPILAR

10

DIFERENCIAS ENTRE COMPILAR E INTERPRETAR


COMPILAR Genera un ejecutable El proceso de traduccin se realiza una sola vez. INTERPRETAR No genera un ejecutable El proceso de traduccin se realiza en cada ejecucin.

-La ejecucin es muy rpida debido a que el programa ya ha sido traducido a cdigo mquina

-La ejecucin es ms lenta, ya que para cada lnea del programa es necesario realizar la traduccin

11

DIFERENCIAS ENTRE COMPILAR E INTERPRETAR


COMPILAR El ejecutable va dirigido a una plataforma concreta (una CPU, un sistema operativo, y quiz alguna otra consideracin), siendo dificultoso portarlo a otra. En ocasiones, si existe un compilador para otra plataforma, se puede recompilar el programa, aunque normalmente esto plantea serias dificultades. Los programas que se van a compilar suelen estar muy ligados a la plataforma de destino INTERPRETAR No hay ejecutable, as que si existe un intrprete para una plataforma concreta, el programa se podr ejecutar en ambas. Tpicamente, los programas interpretados son mucho ms portables que los compilados, ya que suelen existir intrpretes del mismo lenguaje en distintas plataformas..

12

DIFERENCIAS ENTRE COMPILAR E INTERPRETAR


COMPILAR INTERPRETAR

-Una vez compilado el programa, el -El cdigo fuente es necesario en cdigo fuente no es necesario para cada ejecucin, as que no puede ejecutarlo, as que puede permanecer en secreto permanecer en secreto si se desea.

-Los errores sintcticos se detectan durante la compilacin. Si el fuente contiene errores sintcticos, el compilador no producir un ejecutable.

Los errores sintcticos se detectan durante la ejecucin, ya que traduccin y ejecucin se van haciendo simultneamente. Algn error sintctico podra quedar enmascarado, si para una ejecucin concreta no es necesario traducir la lnea que lo contiene. (Algunos intrpretes son capaces de evitar esto)

13

MAQUINA VIRTUAL
Los programas interpretados o compilados tienen distintas ventajas e inconvenientes. En un intento de combinar lo mejor de ambos mundos, durante la dcada de los 90 surge con fuerza el enfoque de mquina virtual.

14

MAQUINA VIRTUAL
Los principales lenguajes abanderados de esta tecnologa son, por un lado, el lenguaje Java de Sun Microsystems, y por otro, los lenguajes de la plataforma .NET de Microsoft: Visual Basic, C# y J#. Tambin merece mencin el lenguaje Delphi de la compaa Borland, que desde hace tiempo funciona

para la plataforma .NET. Por supuesto, hay muchos


otros.
15

MAQUINA VIRTUAL
La filosofa de la mquina virtual es la siguiente: el cdigo fuente se compila, detectando los errores sintcticos, y se genera una especie de ejecutable, con un cdigo mquina dirigido a una CPU imaginaria. A esta especie de cdigo mquina se le denomina cdigo intermedio, lenguaje intermedio, p-code, o

byte-code .
16

MAQUINA VIRTUAL
Como esa CPU imaginaria no existe, para poder ejecutar ese ejecutable, se construye un intrprete. Este intrprete es capaz de leer cada una de las instrucciones de cdigo mquina imaginario y ejecutarlas en una CPU real. A este intrprete se le denomina mquina virtual.

17

MAQUINA VIRTUAL

18

MAQUINA VIRTUAL
Portabilidad: El cdigo intermedio ya est libre de errores sintcticos, y es un cdigo muy sencillo (al estilo del cdigo mquina). Si existe un intrprete para este cdigo en distintas plataformas, el mismo cdigo se puede ejecutar en cada una de ellas. Adems, la construccin de este intrprete

ser relativamente sencilla y su ejecucin ms


rpida, ya que no ha de comprobar la sintaxis.
19

MAQUINA VIRTUAL
Estabilidad: El cdigo intermedio no es ejecutado por una CPU real directamente, sino por una CPU virtual: la mquina virtual. Esto permite un mayor control sobre este cdigo, facilitando la labor de impedir que un cdigo descontrolado afecte a la estabilidad de la plataforma real.

20

MAQUINA VIRTUAL
Para entender algo mejor este concepto,

podemos fijarnos, por ejemplo, en el lenguaje JAVA. Imaginemos que disponemos de dos ordenadores: uno de ellos tiene una CPU Pentium y un sistema operativo Windows. El otro tiene una CPU Sparc y un sistema operativo Solari

21

MAQUINA VIRTUAL
En el primer ordenador instalamos un compilador de Java y una mquina virtual de Java especficos para Windows+Pentium. En el segundo hacemos lo mismo, pero con un compilador y mquina virtual especficos para Solaris+Sparc.

22

MAQUINA VIRTUAL
Confeccionamos un programa sencillo (por ejemplo, que escriba "Hola Mundo" por la pantalla) escrito en Java en el primer ordenador y lo compilamos, generando un ejecutable

intermedio.

Si utilizamos la mquina virtual del primer


ordenador para ejecutar ese cdigo intermedio,

comprobaremos que el programa escribe, en


efecto "Hola Mundo" por la pantalla.
23

MAQUINA VIRTUAL
Si cogemos ese ejecutable intermedio lo llevamos tal cual a la mquina con Solaris+Sparc, podremos

utilizar la mquina virtual instalada all para


ejecutarlo, y comprobaremos que el resultado es exactamente el mismo: "Hola Mundo".

24

MAQUINA VIRTUAL
Este sistema es tambin utilizado por los juegos Java de los telfonos mviles o las PDA. Distintas marcas de telfonos mviles son capaces de ejecutar el mismo juego, aun cuando cada telfono tiene una CPU y un sistema operativo distinto [Si, los telfonos

mviles tienen CPU y un rudimentario sistema


operativo. Multitud de aparatos ,hoy en da los

tienen: reproductores de DVD, de MP3, cajeros


automticos, GPS, incluso algunos electrodomsticos]
25

Vous aimerez peut-être aussi