jvm - ventajas - tipos de maquinas virtuales
¿Cómo se compara Parrot con otras máquinas virtuales? (7)
Parrot es la máquina virtual originalmente diseñada para Perl 6.
¿Qué capacidades técnicas ofrece Parrot VM que carecen las máquinas virtuales de la competencia, como la máquina virtual Java (JVM) / Hotspot VM y el Common Language Runtime (CLR) ?
Parrot es la máquina virtual originalmente diseñada para Perl 6.
Ahora hay dos máquinas virtuales diseñadas originalmente para Perl 6; Los compromisos con MoarVM comenzaron en 2012.
¿Qué capacidades técnicas ofrece Parrot VM que carecen las máquinas virtuales de la competencia, como la máquina virtual Java (JVM) / Hotspot VM y el Common Language Runtime (CLR)?
En otra respuesta en esta página , Reini Urban, el desarrollador principal de Parrot actual (abril de 2015), ofrece una breve comparación de Parrot con la máquina virtual JVM y CLR.
De acuerdo con Reini , una ventaja clave que Parrot tiene sobre MoarVM es "efectivamente sin bloqueo de hilos".
Esta pregunta está desactualizada. Rakudo Perl 6 ya no tiene como objetivo a Parrot como backend; MoarVM es el backend preferido, con JVM un trabajo en progreso (generalmente funciona, pero muchas de las funciones de Perl 6 no están implementadas o están actualmente descompuestas). Se está realizando un trabajo de desarrollo (no listo para usuarios) para agregar Javascript como un tercer backend.
La principal ventaja y la diferencia técnica sobre la JVM y el CLR es que los tipos ( clases denominadas PMC) y ops ( métodos ) pueden cargarse dinámicamente desde implementaciones C proporcionadas por el usuario, y el marco analizador para crear y extender idiomas está incorporado .
No conozco JVM y CLR lo suficiente, pero mis consejos:
- Soporte de idiomas dinámicos (cierres, escalas polimórficas, continuaciones, co-rutinas) (velocidad)
- método dinámico de envío,
- funciones de primera clase,
- continuaciones de primera clase,
- parámetros (opcionales, nombrados, ..),
- registro basado
- tiene interoperabilidad HLL proporcionada a nivel de ensamblaje
- gama de plataformas
Actualización: Esto es probablemente irrelevante, ya que JVM es uno de los backends de Rakudo Perl 6 en la actualidad. Consulte Rakudo Perl 6 en la JVM (Perl 6 Advent calendar 2013, Día 3).
Otra cosa que hace a Parrot diferente de la mayoría de las máquinas virtuales (ciertamente diferente de la JVM), es que se trata de una máquina de registro en lugar de una máquina de pila. Pero creo que la gente estará discutiendo por mucho tiempo si eso puede llamarse una ventaja o una desventaja.
Puedes leer mucho de esto en la página de introducción de Parrot VM .
La principal ventaja que tiene Parrot sobre la JVM o el CLR sería que está diseñado para admitir primero los idiomas dinámicos y, potencialmente, proporcionar un mejor soporte y rendimiento para los lenguajes de tipo dinámico. La JVM y la CLR están más orientadas hacia el soporte de lenguajes de tipo estático, y muchas de las decisiones de diseño lo demuestran.
La siguiente respuesta fue escrita en 2009. Vea también esta actualización de 2015 por raiph .
Para expandir en @Reed y señalar algunos aspectos destacados, los códigos de operación de Parrot se encuentran en un nivel mucho más alto que la mayoría de las máquinas virtuales. Por ejemplo, aunque la mayoría de las máquinas almacenan enteros y flotantes, los registros básicos son enteros, números, cadenas y Parrot Magic Cookies (PMC). El solo hecho de tener cadenas incorporadas es un paso adelante de la JVM.
Más interesante es el PMC, algo así como el tipo de objeto de JVM pero mucho más fungible. Los PMC son un contenedor para todos los otros tipos más complicados que necesita en un lenguaje real, como matrices, tablas, árboles, iteradores, I / O, etc. El PMC y la amplia variedad de operaciones incorporadas ya que significa menos trabajo para el escritor de idiomas . Parrot no se aleja de las partes desordenadas pero necesarias de implementar un lenguaje.
Mi información puede estar desactualizada, pero creo que los códigos de operación son conectables, puede enviar una máquina virtual Parrot que solo contiene los códigos de operación que su idioma necesita. También iban a ser heredados, si su idioma quiere que sus arreglos funcionen un poco diferente de los arreglos de Parrot, puede hacer esa subclase.
Finalmente, Parrot se puede escribir no solo en ensamblador ( PASM ) sino también en un lenguaje de nivel ligeramente superior, Parrot Intermediate Representation (PIR) . PIR tiene bucles, subrutinas, variables localizadas y algunas operaciones básicas de matemática y comparación, todo lo básico que la gente espera en un lenguaje de programación, sin alejarse demasiado del metal.
En general, Parrot es muy amigable con los diseñadores de idiomas (está escrito por y para ellos) que desean diseñar un lenguaje y dejar la implementación lo más posible posible a otra persona.