Parrot
Parrot – maszyna wirtualna przeznaczona do języków dynamicznie typowanych, takich jak Perl, Ruby i Python.
Autor | Parrot Foundation |
---|---|
Aktualna wersja stabilna | 8.1.0 – 16 lutego 2016; ponad 8 lat temu[1] |
Platforma sprzętowa | wieloplatformowość |
System operacyjny | wieloplatformowość |
Rodzaj | maszyna wirtualna |
Licencja | Licencja Artystyczna |
Strona internetowa |
Historia
edytujNazwa 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[2]. 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
edytujProjekt 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
edytujParrot jest maszyną rejestrową z operacjami wysokiego poziomu, takimi jak (podobnie jak aktualny kod bajtowy Perla) operacje na całych łańcuchach.
Rejestry
edytujParrot 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
edytuj- ↑ New supported release 8.1.0 "Andean Parakeet". Parrot Foundation, 2016-02-16. [dostęp 2020-05-01]. (ang.).
- ↑ Parrot : Some Assembly Required [online], Perl.com, 9 września 2001 [dostęp 2024-10-18] (ang.).
Linki zewnętrzne
edytuj- Parrot. Foundation [online], www.parrot.org [zarchiwizowane z adresu 2024-05-20] (ang.).
- Simon Cozens, Programming Parrot [online], Perl.com, 1 kwietnia 2001 [dostęp 2020-05-01] (ang.).