Parrot – maszyna wirtualna przeznaczona do języków dynamicznie typowanych, takich jak Perl, Ruby i Python.
Historia Nazwa Parrot pochodzi od primaaprilisowego żartu Simona Cozensa, który w 2001 roku napisał artykuł Programming Parrot na Perl.com (O'Reilly Network), pisząc o tym, iż Larry Wall i Guido van Rossum planują rzekomo połączenie języków Perl i Python. Wbrew burzy negatywnych komentarzy, jakie wówczas wywołał, żart ów – jak się później okazało – zawierał więcej prawdy, niż ktokolwiek mógł wtedy sądzić.
Języki programowania Projekt Parrot powstał na listach dyskusyjnych Perla jako maszyna wirtualna przeznaczona dla Perla 6 (do dziś lista dyskusyjna projektu Parrot nosi nazwę perl6-internals, lecz wkrótce zmieniona zostanie na parrot-internals, pozostając jednak na serwerach perl.org), jednak prawdopodobnie wcześniej będzie można wykonywać za jej pomocą programy w języku Python lub Perl 5 (projekt Pony) niż Perl 6 (projekt Rakudo). Poza nimi trwają już prace nad wykorzystaniem projektu Parrot dla języków BASIC, Befunge, Brainfuck, Cola, Forth, Jako, m4, Miniperl, Ook, OpenComal, PHP, Plot, Ruby, Scheme, Tcl, URM, LOLCODE i YAL. Wewnętrznymi językami dla projektu Parrot są PASM i IMC (PIR).
Duże zainteresowanie projektem przejawiają środowiska związane z Ruby, podczas gdy twórcy Pythona są bardziej zainteresowani pracami nad własnym projektem PyPy.
Zasady działania Parrot jest maszyną rejestrową z operacjami wysokiego poziomu, takimi jak (podobnie jak aktualny kod bajtowy Perla) operacje na całych łańcuchach.
Rejestry Parrot ma po 32 rejestry czterech typów: I0 do I31 – rejestry całkowitoliczbowe, które mogą zawierać liczbę całkowitą lub wskaźnik (I od integer, liczba całkowita), N0 do N31 – rejestry zmiennoprzecinkowe (N od number, liczba), S0 do S31 – rejestry łańcuchowe (S od string, łańcuch znaków), P0 do P31 – rejestry obiektowe (P od PMC, Parrot Magic Cookie).
W przeciwieństwie do kodu bajtowego Perla, natywne perlowe typy (skalar, tablica, hasz i inne) są tu traktowane jako obiekty, a maszyna wirtualna operuje na znacznie prostszych typach.
Przypisy
Linki zewnętrzne
Kategoria:Języki programowania Kategoria:Wirtualizacja