Papagáj
| Papagáj | |
|---|---|
| |
| Típusú | Virtuális gép |
| Fejlesztő | A Perl Alapítvány [d] |
| Beírva | Xi |
| Operációs rendszer | Többplatformos szoftver |
| legújabb verzió |
|
| Engedély |
Művészi licenc és GNU GPL (Angol) |
| Weboldal | parrot.org |
A Parrot ( parrot vagy papagáj ; az angol parrot - parrot szóból) egy virtuális gép , amelyet értelmezett nyelvek használnak a bájtkód hatékony végrehajtására. A név egy áprilisi tréfából [3] származik, amikor bejelentették egy új nyelvet, amely egyesíti a Perl -t és a Pythont .
Az új virtuális gép fejlesztésének egyik fontos oka a statikus és dinamikus adattípusú nyelvek megkülönböztetése volt. A mai főbb virtuális gépeket, mint például a Java VM és a .NET CLR , statikus adattípusú nyelvekhez tervezték, míg a Parrot által támogatni kívánt nyelvek dinamikus típusokat használnak. A Parrot virtuális gép a regiszterek használatára épül , nem a veremre , mivel a fejlesztők szerint ez növeli a sebességet és jobban tükrözi a modern processzorok szerkezetét.
A Parrot a Perl interpreter alapja volt , valamint a Perl 6 kód fordításának célplatformja . A Perl 6 implementált része mellett más nyelvű programok is fordíthatók bájtkódba, köztük APL , BASIC , Befunge , Brainfuck , Cola , Forth , Jako , Lisp , m4 , Miniperl , Ook ! , Parakeet , OpenComal , PHP , Plot , Pheme , Punie , Python , Ruby , Scheme , Span , Tcl , URM és YAL , de ezeknek a nyelveknek a legtöbb megvalósítása a Parrot számára hiányos és kísérleti állapotban van.
2014-ben a Parrot fejlesztési problémái miatt a MoarVM [4] megjelent a Perl 6 alternatív virtuálisgép-megvalósításaként .
Példák
Regisztrálok
A Parrot a regiszterek használatán alapul , ellentétben a legtöbb verem alapú virtuális géppel. A Parrot 4 típusú regisztert kínál:
- I: egész számok ( angolul i nteger )
- N: lebegőpontos számok (az angol n umber nyelvből )
- S: kiterjesztett karakterlánc-regiszterek Unicode támogatással (az angol s tringből )
- P: A PMC vagy a Parrot Magic Cookie egy speciális típusú Parrot objektum
A 0.3.0-s verzióig a Parrot minden típusból 32 regiszterrel látta el a programokat, és ezt a számot 64-re lehetett növelni. A későbbi verziók korlátlan számú regisztert biztosítottak; minden funkció annyi regisztert kérhet, amennyire szüksége van.
Parrot Assembly Language
Magán a bájtkódon kívül a Parrot rendelkezik egy speciális , alacsony szintű nyelvvel , a Parrot Assembly Language (PASM) néven. Az alábbiakban egy példa látható egy kis programra:
set I1, 4 # Írjon 4-et az I1 regiszterhez inc I1 # Növekmény I1 add I1, 2 # Add 2 to I1; az I1 értéke 7 lesz állítsa be N1, 42.0 # Írja be az N1-be a 42.0 értéket dec N1 # N1 csökkentése, az új érték 41,0 lesz sub N1, 2.0 # N1 lesz 39.0 print I1 # Nyomtassa ki az I1 tartalmát print ", " # Output string ", " print N1 # Nyomtassa ki az N1 értékét print "\n" # Újsor karakter nyomtatása vége
Támogatott platformok
A Parrot sokféle platformot fordít és fut, beleértve a legelterjedtebbeket is, beleértve a Linuxot ( x86 ), a Cygwint , a Win32 -t , a Tru64 -et , az OpenVMS -t (Alpha), a Solarist ( Sparc ), a FreeBSD -t (x86).
Lásd még
- libJIT könyvtár Reese Weatherly, Klaus Treichel, Alexey Demakov és Kirill Kononenko menet közbeni összeállításához
Jegyzetek
- ↑ https://github.com/parrot/parrot/releases/tag/RELEASE_8_1_0
- ↑ http://www.parrot.org/news/2016/Parrot-8.1.0
- ↑ Parrot programozása (downlink) . perl.com (2001. április 1.). Hozzáférés dátuma: 2015. február 26. Az eredetiből archiválva : 2010. július 18. (Angol)
- ↑ Andrej Sitov. 21. századi Perl 6 // Pragmatic Perl. - 2014. december. - Kiadás. 22 .
Linkek
- Parrot Virtual Machine (angol) (nem elérhető link) . — a projekt hivatalos oldala. Letöltve: 2011. szeptember 30. Az eredetiből archiválva : 2012. május 18..
- Parrot (downlink) (2004. február 29.). — a dokumentáció egy részének fordítása. Letöltve: 2011. július 18. Az eredetiből archiválva : 2008. szeptember 26..
- LXF73: Mi az a...papagáj? . — cikk a LinuxFormatban . Archiválva az eredetiből 2012. május 18-án.
- A Parrot virtuális gép használata: 1. rész , 2. rész , Alexey Snastin, IBM developerWorks
