Parrot

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Parrot
Maszyna wirtualna
Autor Fundacja Parrot
Platforma sprzętowa Wieloplatformowość
System operacyjny Wieloplatformowość
Aktualna wersja stabilna 7.9.0 - 20 października 2015; 10 miesięcy temu[1]
Licencja Licencja Artystyczna
Strona internetowa

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

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

  1. New supported release 7.9.0 "Sangihe hanging parrot" (ang.). parrot.org, 20 października 2015. [dostęp 2015-11-27].

Linki zewnętrzne[edytuj]