Papagaji protiv Zenda

Na nedavno završenoj PHP konferenciji u Kaliforniji je bilo dosta zanimljivo predavanje koje mi je privuklo pažnju, barem ovako online gledajući slajdove i čitajući komentare. Hm, kada nisam u "poziciji" da tamo stvarno odem. Već duže vremena se razmišlja o ubrzanju php koda, postoje projekti koji rade prevođenje php koda u asembler kod čije izvršavanje ne traži parsiranje i obradu od strane php interpretatora. Razvojni tim perl-a, čija dugo najavljivana verzija 6 treba da donese brojne inovacije, između ostalog i prevođenje koda u aseblerski kod virtuelne mašine, označene pod imenom Parrot. Prilikom izvršavanja emulator ove virtuelne mašine će da izvršava taj kod, ali je to znatno brže nego parsiranje i obrada koda prilikom izvršavanja. Specifikacija u natuknicama Parrot virtuelne mašine postoji na dev.perl.org.

Gde je PHP u celoj priči?

Na pomenutoj PHP konferenciji su se kao završni predavači pojavili Sterling Hughes i Thies Arntzen sa predavanjem na temu pokretanja PHP interpretatora na Parrot mašini. Link ka PDF datoteci sa izlaganja je ovde. Sami učesnici konferencije su vrlo lepo prihvatili celu priču, a ujedno dali i ime projektu - "Pharrot". Ono što je zanimljivo, osim mogućeg dobijanja u brzini jeste lako mešanje Perl i PHP koda u tom slučaju, jer će sve biti napisano u jeziku koji Parrot virtuelna mašina razume. Ukoliko se još i Python priključi ideji, dobićemo puno reči na P koje se teško izgovaraju (možda Pyrrot??) ali i lepše okruženje za rad. Što se ubrzanja tiče, mi sada ukoliko ne koristim neki sistem za keširanje PHP koda kroz ekstenziju u ZendEngine-u, odbacujemo sav generisani kod od strane interpetatora. Kroz Parrot, bi taj kod bio sastavni deo sistema, tj bio bi platformski nezavisan, uz dodatak mnogih drugih meta-informacija jer mi sami i pravimo procesor koji taj kod izvršava. Možda će doći vreme kada ćemo prestati da isporučujemo PHP kod sistema, već samo byte-code za Parrot mašinu ;).

John Coggeshall ima svoje utiske o Pharrot-u, i smatra da je Parrot mašina, neka vrsta odgovora na MS-ovu .NET tehnologiju. Koliko je opasno ovako govoriti neću da kažem, ali mislim da za sada ne treba upoređivati jednu produkcionu sa drugom wanna-be relased tehnologijom.

Šta dalje?

Iako Parrot postoji već skoro dve godine, sada se digla opšta frka po PHP sajtovima i svi pričaju o sjajnoj ideji. Sami autori predavanja su u bili izrazito oprezni, naglašavajući da se radi o projektu njih dvojce, a ne o forku php-a ili bilo šta slično tome. Parrot svakako predstavlja vrlo brzu virtuelnu mašinu što se može videti po nedokumentovanim i neobjašnjenim testovima (ali valjda su tačni), verovatno će podržavati više platformi i kroz perl6 biti široko prihvaćen. Sa ugrađenom podrškom za Unicode (eh taj php i mb_* string funkcije) i podrškom za regularne izraze bi trebao da pruži dobru platofrmu za perl6. A PHP i Zend, hm... PHP bi uvek bio drugi član porodice pod Parrot VM-om, razviti sopstvenu VM je bolje radi očuvanja kontrole binarne kompatibilnosti, lakše bi se sve to moglo povezati sa php5 i ZendEngine2... Ukoliko bi uspeli da naprave dobar PHP Parrot kompajler, sloj koji obezbeđuje kompatibilnost za php ekstenzije i ubede ostale da je to dobro, možda ovo postane nešto više od ličnog opitnog projekta kako je najavljeno u prvom slajdu. Pa ako php5 bude trajao kao i php4, možda...

 

October 28, 2003 5:54 AM | ostalo

Komentari

Lijep text.

Ovo sto kazes "Kroz Parrot, bi taj kod bio sastavni deo sistema, tj bio bi platformski nezavisan, uz dodatak mnogih drugih meta-informacija jer mi sami i pravimo procesor koji taj kod izvršava. Možda će doći vreme kada ćemo pisati da isporučujemo i kod PHP sistema, a ne samo byte-code za Parrot mašinu u našim ponudama ;)."

Nisam bas siguran da sam dobro razumio.

Objavio Zoka u November 18, 2003 11:25 AM

Bila je greška u rečenici, ispravio sam. Treba da piše:
"Možda će doći vreme kada ćemo prestati da isporučujemo kod PHP sistema, već samo byte-code za Parrot mašinu u našim ponudama ;)."

Naime, poznato je da mnogi žele da zaštite svoj PHP kod. Upotrebom Pharrot-a, mi možemo da napravimo byte-code i da to distribuiramo, pošto je on portabilan za bilo koji sistem. Potrebe za nekim kodom kao objašnjenje ne postoje, pošto ćemo kroz ekstenzije Parrot-a moći napisati "debug simbole" u proširenom smislu i slične podatke. Naravno, sve je apstraktno. Kako za sada stoji, PHP zajednica nije baš oduševljena idejom da koristi perl6 mašinu, naravno neki fork će verovatno postojati. Videćemo...

Objavio Goran Rakić u November 18, 2003 9:01 PM

hmm, ne bih se uzdao u bytecode zastitu. :)

Objavio caboom u November 27, 2003 5:37 PM

Naravno, byte-code možeš vratiti u originalan oblik ali se gubi dobar deo informacija, nema objašnjenja, komentara i ostalog što bi olakšalo razumevanje koda, a čega inače ima kada daješ PHP kod.

Ko ne želi, može da koristi Zend Encoder ili nešto alternativno, e sad kako će poslodavac da na to reaguje to je pitanje...

Objavio Goran Rakić u November 30, 2003 2:13 PM

Objavite komentar









Zapamti lične podatke i za naredni unos?




Zbog povećane količine SPAM-a u komentarima, prinuđen sam da vas malo maltretiram... Kao što je i očekivano, upišite dve reči sa slike u polje ispod (ako su reči nejasne, kliknite na crvene strelice za novu kombinaciju):



Slanjem komentara odobravate prikazivanje i trajno arhiviranje teksta komentara na ovom blogu uz uslov navođenja unesenog imena autora i zadržavate sva ostala prava i punu odgovornost za objavljeni sadržaj.




blog.goranrakic.com - Goran Rakić / Горан Ракић
Objavljeno pod uslovima licence Creative Commons Autorstvo 3.0 Srbija.
Sva prava i odgovornost za objavljene komentare zadržavaju njihovi autori.

Creative Commons License