Pregunta

Parrot es la máquina virtual diseñada originalmente para Perl 6.

¿Qué capacidades técnicas ofrece Parrot VM que las máquinas virtuales de la competencia, como Máquina Virtual Java (JVM) / Hotspot VM y Common Language Runtime (CLR) ¿falta?

¿Fue útil?

Solución

La siguiente respuesta se escribió en 2009. Consulte 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, mientras que 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 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, E / S, etc. El PMC y la amplia variedad de operaciones incorporadas significa que significa menos trabajo para el escritor de idiomas. Parrot no se aleja de las partes desordenadas pero necesarias de implementar un lenguaje.

Es posible que mi información esté desactualizada, pero creo que los códigos de operación son conectables, puede enviar un Parrot VM 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 para no solo en el ensamblador ( PASM ) pero también es un lenguaje de nivel ligeramente superior, Representación intermedia de Parrot (PIR) . PIR tiene bucles, subrutinas, variables localizadas y algunas operaciones básicas de matemática y comparación, todos los elementos básicos que se esperan 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 mayor parte de la implementación posible a otra persona.

Otros consejos

Puede leer mucho de esto en Parrot VM Intro página.

La principal ventaja que tiene Parrot sobre la JVM o la CLR sería que está diseñado para admitir primero los lenguajes dinámicos y, potencialmente, proporcionar un mejor soporte y rendimiento para los lenguajes de tipo dinámico. La JVM y el CLR están más orientados hacia el soporte de lenguajes de tipo estático, y muchas de las decisiones de diseño lo demuestran.

Otra cosa que diferencia a Parrot de la mayoría de las máquinas virtuales (ciertamente diferente de la JVM) es que es una máquina de registro en lugar de una máquina de pila. Pero creo que la gente discutirá durante mucho tiempo si eso se puede llamar una ventaja o una desventaja.

No conozco JVM y CLR lo suficiente, pero mis consejos:

  • soporte de idiomas dinámicos (cierres, escalas polimórficas, continuaciones, co-rutinas) (velocidad)
  • envío de método dinámico,
  • funciones de primera clase,
  • continuaciones de primera clase,
  • parámetros (opcional, con nombre, ..),
  • 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 hoy en día. Consulte Rakudo Perl 6 en JVM (Perl 6 Advent calendar 2013, Día 3).

  

Parrot es la máquina virtual diseñada originalmente para Perl 6.

Ahora hay dos máquinas virtuales diseñadas originalmente para Perl 6; se compromete a MoarVM comenzó en 2012.

  

¿Qué capacidades técnicas ofrece Parrot VM que carecen las máquinas virtuales de la competencia como Java Virtual Machine (JVM) / Hotspot VM y Common Language Runtime (CLR)?

En otra respuesta en esta página , Reini Urban, la versión actual (abril de 2015) del desarrollador principal de Parrot, ofrece un breve resumen. Comparación de Parrot con la máquina virtual JVM y CLR.

Según Reini , una ventaja clave que Parrot tiene sobre MoarVM es " efectivamente sin bloqueo de hilos " ;.

La principal ventaja y diferencia técnica sobre la JVM y el CLR es que los tipos ( clases denominados PMC) y ops ( métodos ) se pueden cargar dinámicamente desde usuarios eficientes. se proporcionaron las implementaciones de C y el marco del analizador para crear y extender idiomas está incorporado.

Esta pregunta no está actualizada. 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á trabajando en el desarrollo (no está listo para los usuarios) para agregar Javascript como un tercer backend.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top