Parrotmaszyna wirtualna przeznaczona do języków dynamicznie typowanych, takich jak Perl, Ruby i Python.

Parrot
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

edytuj

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[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

edytuj

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

edytuj

Parrot jest maszyną rejestrową z operacjami wysokiego poziomu, takimi jak (podobnie jak aktualny kod bajtowy Perla) operacje na całych łańcuchach.

Rejestry

edytuj

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

edytuj
  1. New supported release 8.1.0 "Andean Parakeet". Parrot Foundation, 2016-02-16. [dostęp 2020-05-01]. (ang.).
  2. Parrot : Some Assembly Required [online], Perl.com, 9 września 2001 [dostęp 2024-10-18] (ang.).

Linki zewnętrzne

edytuj