Frage

Papagei ist die virtuelle Maschine, die ursprünglich für Perl 6 entwickelt wurde.

Welche technischen Fähigkeiten bieten das Parrot VM den konkurrierenden virtuellen Maschinen wie dem an Java Virtual Machine (JVM)/Hotspot VM und Gemeinsame Sprachlaufzeit (CLR) Mangel?

War es hilfreich?

Lösung

Die folgende Antwort wurde 2009 geschrieben. Siehe auch dies 2015 Update von RAIPH.

Um @REED zu erweitern und auf einige Highlights hinzuweisen, sind die Opcodes von Parrot auf einem weitaus höheren Niveau als die meisten virtuellen Maschinen. Während die meisten Maschinen Ganzzahlen und Schwimmkörper speichern, sind die grundlegenden Register Ganzzahlen, Zahlen, Saiten und Papageienmagierkekse (PMCs). Nur ein Schritt nach oben aus dem JVM eingebaut zu haben.

Interessanter ist das PMC, ähnlich wie JVMs Objekttyp, aber weitaus fungibler. PMCs sind ein Behälter für Alle anderen komplizierteren Typen Sie brauchen in einer realen Sprache wie Arrays, Tischen, Bäumen, Iteratoren, E/O usw. Das PMC und die Vielzahl von integrierten OPs bedeutet weniger Arbeit für den Sprachautor. Papagei scheut sich nicht vor den unordentlichen, aber notwendigen Teilen der Implementierung einer Sprache.

Meine Informationen mögen veraltet sein, aber ich glaube, Opcodes sind steckig, Sie können eine Papagei -VM versenden, die nur die Opcodes Ihre Sprachanforderungen enthält. Sie würden auch vererbbar sein, wenn Ihre Sprache möchte, dass ihre Arrays ein wenig von Stock -Papageien -Arrays unterscheiden, können Sie dies unterklassen.

Schließlich kann Papagei nicht nur für Assembler (für Assembler () geschrieben werdenPasm) aber auch eine etwas höhere Sprache, Papageienmediate -Darstellung (PIR). PIR verfügt über Schleifen, Unterprogramme, lokalisierte Variablen und einige grundlegende Mathematik- und Vergleichs -Ops.

Alles in allem ist Papagei für Sprachdesigner (es ist von und für sie geschrieben) sehr freundlich, die wollen Entwerfen Sie eine Sprache und überlassen Sie die Umsetzung wie möglich jemand anderem.

Andere Tipps

Sie können viel darüber lesen Papagei VM Intro Seite.

Der Hauptvorteilspapier über die JVM oder die CLR wäre, dass es zuerst dynamische Sprachen unterstützt und möglicherweise eine bessere Unterstützung und Leistung für dynamisch typisierte Sprachen bietet. Die JVM und die CLR sind beide eher darauf ausgerichtet, staatlich geschriebene Sprachen zu unterstützen, und viele der Entwurfsentscheidungen zeigen dies.

Eine andere Sache, die Papagei von den meisten VMs unterscheidet (sicherlich von der JVM), ist, dass es sich eher um eine Registermaschine als um eine Stapelmaschine handelt. Aber ich denke, die Leute werden lange Zeit streiten, ob dies als Vorteil oder Nachteil bezeichnet werden kann.

Ich kenne JVM und CLR nicht genug, aber meine Tipps:

  • Dynamische Sprachen (Verschluss, polymorphe Skalare, Kontinuationen, Co-Routinen) Unterstützung (Geschwindigkeit)
  • dynamischer Methode Versand,
  • erstklassige Funktionen,
  • erstklassige Kontinuationen,
  • Parameter (optional, benannt, ..),
  • Register basieren
  • Hat die HLL -Interoperabilität auf Baugruppenebene bereitgestellt
  • Plattformen

UPDATE: Dies ist wahrscheinlich irrelevant, da JVM heutzutage eines der Rakudo Perl 6 -Backends ist. Sehen Rakudo Perl 6 auf dem JVM (Perl 6 Adventskalender 2013, Tag 3).

Papagei ist die virtuelle Maschine, die ursprünglich für Perl 6 entwickelt wurde.

Es gibt jetzt zwei VMs ursprünglich für Perl 6 entwickelt; begeht zu Moarvm begann 2012.

Welche technischen Funktionen bietet der Parrot VM, dass konkurrierende virtuelle Maschinen wie die Java Virtual Machine (JVM)/Hotspot VM und die Common Language Runtime (CLR) Mangel an?

Im Eine weitere Antwort auf dieser Seite, Reini Urban, der aktuelle (April 2015) Parrot Lead Dev, bietet einen kurzen Vergleich von Parrot mit dem JVM und CLR VM.

Laut Reini, Ein wesentlicher Vorteil Papagei über MOARVM ist "effektiv sperrenlose Fäden".

Der Hauptvorteil und der technische Unterschied gegenüber dem JVM und der CLR sind diese Typen (Klassen PMCs genannt) und OPS (Methoden) kann dynamisch von effizienten vom Benutzer bereitgestellten C-Implementierungen geladen werden, und das Parser-Framework zum Erstellen und Erweitern von Sprachen ist integriert.

Diese Frage ist veraltet. Rakudo Perl 6 zielt nicht mehr als Backend ab. Moarvm ist das bevorzugte Backend mit dem JVM -Backend A -Arbeiten (im Allgemeinen funktioniert, aber viele Perl 6 -Funktionen, die nicht implementiert oder derzeit kaputt sind). Entwicklungsarbeit (nicht für Benutzer bereit) wird durchgeführt, um JavaScript als drittes Backend hinzuzufügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top