Está en la página 1de 2

Arquitectura de Mquinas Virtuales

La arquitectura de mquinas virtuales se ha llamado tambin intrpretes basados en tablas [GS94] [SC96].
De hecho, todo intrprete involucra una mquina virtual implementada en software. Se puede decir que un
intrprete incluye un seudo-programa a interpretar y una mquina de interpretacin. El seudo-programa a
su vez incluye el programa mismo y el anlogo que hace el intrprete de su estado de ejecucin (o registro
de activacin). La mquina de interpretacin incluye tanto la definicin del intrprete como el estado actual
de su ejecucin. De este modo, un intrprete posee por lo general cuatro componentes: (1) una mquina de
interpretacin que lleva a cabo la tarea, (2) una memoria que contiene el seudo-cdigo a interpretar, (3) una
representacin del estado de control de la mquina de interpretacin, y (4) una representacin del estado
actual del programa que se simula.

El estilo comprende bsicamente dos formas o sub-estilos, que se han llamado intrpretes y sistemas
basados en reglas. Ambas variedades abarcan, sin duda, un extenso espectro que va desde los llamados
lenguajes de alto nivel hasta los paradigmas declarativos no secuenciales de programacin, que todo el
mundo sabe que implementan un proxy (una especie de nivel de impostura) que encubren al usuario
operaciones que en ltima instancia se resuelven en instrucciones de mquinas afines al paradigma
secuencial imperativo de siempre.

Fig. 5 - Intrprete [basado en GS94]

El estilo es su conjunto se utiliza habitualmente para construir mquinas virtuales que reducen el vaco que
media entre el engine de computacin esperado por la semntica del programa y el engine fsicamente
disponible. Las aplicaciones inscriptas en este estilo simulan funcionalidades no nativas al hardware y
software en que se implementan, o capacidades que exceden a (o que no coinciden con) las capacidades del
paradigma de programacin que se est implementando. Dado que hasta cierto punto las mquinas virtuales
no son una opcin sino que devienen inevtiables en ciertos contextos, nadie se ha entretenido identificando

sus ventajas y demritos.

Las mquinas virtuales no son una invencin reciente ligada a Java, sino que existen desde muy antiguo. En
la dcada de 1950, los precursores de los ingenieros de software sugirieron una mquina virtual basada en
un lenguaje de mquina universal de bytecodes (un ejemplo fue UNCOL), de manera que las aplicaciones
podan escribirse en las capas ms altas y ejecutarse donde fuere sin tener que recompilarse, siempre que
hubiera una mquina virtual entre el programa por un lado y el sistema operativo y la mquina real por el
otro [Con58]. En 1968 Alan Kay implement una mquina virtual vinculada a un sistema orientado a objetos
[Kay68] y luego particip con Dan Ingalls en el desarrollo de la MV de Smalltalk hacia 1972. Numerosos
lenguajes y ambientes de scripting utilizan mquinas virtuales: Perl, Javascript, Windows Script Host (WSH),
Python, PHP, Pascal. WSH, por ejemplo, tolera programacin en casi cualquier lenguaje de scripting que se
atenga a ciertas especificaciones simples.

En la nueva estrategia arquitectnica de Microsoft la mquina virtual por excelencia guarda relacin con el
Common Language Runtime, acaso unas de las dos piezas esenciales del framework .NET (la otra es la
biblioteca de clases). El CLR admite, en efecto, diversos paradigmas puros y templados: programacin
funcional (Lisp, Scheme, F#, Haskell), programacin imperativa orientada a objetos (C#, J#, C++, Python) y
estructurada en bloques (Oberon), ambientes de objetos puros (Smallscript / Smalltalk), programacin
lgica declarativa (Prolog, P#), diseo basado en contratos (Eiffel), modelado matemtico (Fortran),
scripting interpretado (Perl), meta-programacin (SML, Mondrian), programacin cercana a la semntica de
negocios (Cobol), programacin centrada en reportes (Visual ASNA RPG), adems de todos los matices y
composiciones heterogneas a que haya lugar. Si bien el lenguaje final de implementacin se encuentra en
un punto del proceso bastante alejado de la ideacin arquitectnica en que se despliegan los estilos, el
efecto de la disponibilidad de estas capacidades en el diseo inicial de un sistema no es para nada trivial.
Con una mquina virtual comn el proceso evita la redundancia de motores compitiendo por recursos y
unifica debuggers y profilers. La congruencia entre la naturaleza semntica y sintctica del modelo y la de
los lenguajes de programacin concretos ha sido, despus de todo, una de las banderas del modelado
orientado a objetos, desde OMT hasta UML, pasando por el modelado no slo de las aplicaciones sino de las
bases de datos [RBP+91].