Parrot
Ten artykuł od 2012-07 wymaga zweryfikowania podanych informacji. |
Autor | Parrot Foundation |
---|---|
Aktualna wersja stabilna | 8.1.0 – 16 lutego 2016; ponad 6 lat temu[1] |
Platforma sprzętowa | wieloplatformowość |
System operacyjny | wieloplatformowość |
Rodzaj | maszyna wirtualna |
Licencja | Licencja Artystyczna |
Strona internetowa |
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 miało okazać 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, 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
- ↑ New supported release 8.1.0 "Andean Parakeet" (ang.). Parrot Foundation, 2016-02-16. [dostęp 2020-05-01].
Linki zewnętrzne
- Parrot, Parrot Foundation (ang.).
- Simon Cozens, Programming Parrot, Perl.com, 1 kwietnia 2001 [dostęp 2020-05-01] (ang.).