www.wikidata.de-de.nina.az
Der Titel dieses Artikels ist mehrdeutig Weitere Bedeutungen sind unter Parrot Begriffsklarung aufgefuhrt Parrot ist eine in Entwicklung befindliche registerbasierte virtuelle Maschine die vor allem auf die Bedurfnisse dynamischer Programmiersprachen wie Perl oder Python ausgerichtet ist Parrot wurde von Dan Sugalski vor allem als Interpreter fur Perl 6 entworfen Die Entwicklung wird von Allison Randal geleitet und von der Parrot Foundation unterstutzt und koordiniert Parrot Logo Inhaltsverzeichnis 1 Etymologie Wortherkunft 2 Entwicklung 3 Architektur 4 Zwischencodes 5 Werkzeuge 6 Unterstutzung anderer Programmiersprachen 7 Stand November 2006 8 Weblinks 9 EinzelnachweiseEtymologie Wortherkunft BearbeitenWahrend der Planungsphase von Parrot veroffentlichte Simon Cozens am 1 April 2001 auf der Perl Website des O Reilly Verlags einen aufwandigen Scherz Artikel 1 2 samt Buchankundigung 3 mit der offiziellen Ankundigung von Larry Wall und Guido van Rossum dass Perl und Python in Zukunft zu einer gemeinsamen Sprache namens Parrot verschmelzen wurden Diese Verschmelzung fand selbstverstandlich nicht statt aber der Name einer virtuellen Maschine die fur verschiedene Sprachen verwendbar sein soll war geboren Entwicklung BearbeitenUrsprunglich wurde Parrot von Dan Sugalski entworfen und mehrere Jahre geleitet Es war von Anfang an ein freies Softwareprojekt und wird unter der Artistic License 2 0 veroffentlicht Allison Randal fuhrt jetzt die Arbeit der Freiwilligen an wobei die im Herbst 2008 gegrundete und ebenfalls von ihr gefuhrte Parrot Foundation im November die Unterstutzung erster Firmen gewinnen konnte Patrick Michaud Hauptautor der PGE leitet die Entwicklung der PCT Parrot Compiler Tools und Rakudo Perl 6 Compiler Das Projekt befindet sich bereits seit mehreren Jahren in aktiver Entwicklung Einzelne Teile wurden mehrmals neu geschrieben bis eine zufriedenstellende Implementierung erreicht war Es sind jedoch noch nicht alle Fahigkeiten fur eine komplette VM vollstandig implementiert Aktuell ist Version 5 0 0 veroffentlicht am 29 Januar 2013 4 Das bei O Reilly erschienene Buch Perl 6 and Parrot Essentials 2nd edition bietet einen mittlerweile veralteten Uberblick uber Parrot und ist inzwischen unter einer Creative Commons Lizenz freigegeben worden damit es leichter aktuell gehalten werden kann 5 Architektur BearbeitenIm Gegensatz zu anderen virtuellen Maschinen wie der JVM fur Java die stapelorientiert sind 0 Adress Maschine ist Parrot eine Registermaschine 3 Adress Maschine Dadurch erhofft man sich bessere Optimierungsmoglichkeiten und Parallelverarbeitung von Befehlen sowohl innerhalb eines Prozessors als auch verteilt auf mehreren Prozessoren Parrot erlaubt es beliebig viele Register zu allozieren Register sind nach Typen unterschieden es gibt Register fur ganze Zahlen Gleitkommazahlen Zeichenketten und fur beliebige Objekte sogenannte PMC Soweit es die Plattform erlaubt werden sie auf Hardwareregister abgebildet um die Ausfuhrungsgeschwindigkeit zu erhohen Parrot ist in C geschrieben um moglichst auf allen Plattformen verfugbar zu sein auf denen auch Perl 5 lauft Zwischencodes BearbeitenBeim Kompilieren kann ein Programm mehrere Zwischenstufen durchlaufen Im ersten Arbeitsschritt wird der Quelltext in den Syntaxbaum uberfuhrt der noch sehr stark die Struktur des Quelltextes widerspiegelt Der zweite Schritt besteht ublicherweise in der Ubersetzung in einen Abstract Syntax Tree AST der sich mehr an der logischen als an der textuellen Struktur des Programms orientiert Parrot definiert eine Form des AST namens PAST Parrot Abstract Syntax Tree die von fast allen Programmiersprachen genutzt werden kann Diese Form kann uber eine weitere Zwischenstufe namens POST Parrot Opcode Syntax Tree in Bytecode umgewandelt werden POST dient als Schnittstelle fur Bytecodeoptimierer und Konverter in und aus Bytecode anderer virtueller Maschinen Wie bei Perl 5 kommt letztendlich ein Bytecode zur Ausfuhrung der direkt vor der Ausfuhrung aus einem Quelltext oder Zwischencode erzeugt wird oder in einem separaten Schritt kompiliert werden kann Neu ist fur Perl mit Parrot die Moglichkeit den Bytecode in Dateien meist mit Endung pbc abzuspeichern um sie spater auszufuhren Wahrend PAST und POST als Datenstrukturen ohne direkte textuelle Reprasentation definiert sind gibt es noch fur Menschen schreibbare Zwischencodes namens PIR Parrot Intermediate Representation und PASM Parrot Assembler PIR ist in der Lesbarkeit des Codes traditionellen Programmiersprachen ahnlich verzichtet jedoch auf Kontrollstrukturen PASM hat die gleiche Struktur wie Bytecode und ist sehr stark Parrots interner Struktur angepasst Werkzeuge BearbeitenDie Parrot Compiler Tools kurz PCT sind eine grosstenteils in PIR geschriebene Sammlung von Software die mit Parrot ausgeliefert wird um die Erzeugung von Parsern und Compiler fur Parrot erheblich zu erleichtern PCT besteht aus folgenden Bestandteilen Parrot Grammar Engine kurz PGE einer Bibliothek die mit Hilfe von Kontextfreien Sprachen meist Perl 6 rules Quelltext in einen Syntaxbaum umwandeln kann Not Quite Perl NQP einer Untermenge von Perl 6 die benutzt wird um aus einem Syntaxbaum einen Abstract Syntax Tree zu erzeugen und statische Analysen durchfuhren zu konnen Einem Compiler der PAST in POST ubersetzt Einem Compiler der POST in Bytecode ubersetztAlle diese Komponenten sind modular gehalten und konnen unabhangig voneinander benutzt werden Unterstutzung anderer Programmiersprachen BearbeitenParrot wurde entworfen um auch eine grosse Anzahl anderer Sprachen wie Python Ruby Tcl oder BASIC zu unterstutzen Compiler die diese Programmiersprachen in Perl6 Zwischencode ubersetzen der von Parrot ausgefuhrt wird wurden in Angriff genommen Da Parrot selbst jedoch noch nicht vollstandig war und von diesen Compilern verwendete Features teilweise wieder entfernt wurden funktionieren nicht mehr alle diese Compiler und deren Entwicklung wurde auch teilweise wieder eingestellt Trotzdem sind noch viele andere Compiler fur den Parrot Zwischencode in Arbeit wie Parrot selbst sind jedoch nur wenige fertiggestellt In der finalen Version sollen alle diese Sprachen gemeinsam verwendbar sein das heisst jede Sprache soll die Module jeder anderen Sprache verwenden konnen Die Entwicklung von Ponie einem Ubersetzer der existierenden Perl5 Code unter Parrot ausfuhrbar machen sollte wurde mittlerweile abgebrochen Stand November 2006 BearbeitenParrot ist derzeit Ein hochoptimierter Interpreter der wesentlich effizienter als der aktuelle Perl5 Interpreter arbeitet Optimierten Zwischencode fuhrt er derzeit je nach Benchmark zum Beispiel dreimal so schnell aus wie perl5 ein entsprechendes Perl Programm Er ist zwar noch etwas langsamer als nativ ausgefuhrter C Code jedoch in manchen Benchmarks nicht mehr um mehrere Faktoren langsamer als es das derzeitige Perl 5 ist Es war ein JIT Compiler vorhanden der Code zur Laufzeit in Maschinencode umwandelte der das Programm schneller ausfuhren sollte Jedoch hatte die JIT Implementierung praktisch keine Performancesteigerung bewirkt Da ihr Design ausserdem die Entwicklung der restlichen Komponenten von Parrot behinderte wurde sie vor dem Release von Parrot 1 7 entfernt Seit September 2009 besteht der Plan den JIT Compiler von LLVM in Parrot zu verwenden 6 7 8 Ein Code Generator fur kompilierte ausfuhrbare Dateien Dieser Generator verwendet den JIT Compiler und kann daher nur auf Plattformen zur Verfugung stehen auf denen es auch einen JIT Compiler gibt Derzeit gibt es dieses Native exec genannte Funktion nur auf i386 Linux und i386 BSD Zumindest auf i386 Linux scheint diese Funktion derzeit jedoch einen Fehler zu haben Programme die von dem JIT Compiler einwandfrei kompiliert werden losen bei der Umwandlung in Objektcode einen Segmentierungsfehler in Parrot aus Weblinks Bearbeitenparrot org offizielle HomepageEinzelnachweise Bearbeiten Parrot Press Release Scherz Interview mit Larry amp Guido perl com Programming Parrot in a Nutshell Memento vom 10 Oktober 2014 im Internet Archive http www parrot org news parrot 5 0 0 johnny five alive released Perl 6 and Parrot Essentials 2nd edition Memento des Originals vom 7 August 2008 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot use perl org Archivierte Kopie Memento des Originals vom 15 Januar 2010 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot use perl org http lists parrot org pipermail parrot dev 2009 September 002811 html http wknight8111 blogspot com 2009 09 jit first project challenge html Abgerufen von https de wikipedia org w index php title Parrot amp oldid 235816269