Dar vieno analitiko svetainė

Petras Kudaras

Perl vs PHP (subjektyvus asmeninis požiūris)

Nemėgstu PHP. Ir turbūt jau pats laikas pasiaiškinti kodėl. Dauguma mane mato kaip Perl fanatiką, nors tas fanatizmas tikrai išpūstas. Mėgstu Perl, bet kartu mėgstu ir Python, ir Ruby, ir hmmm.. kartais netgi Java. Tiesiog Perl yra mano „language of choice“, nes ją geriausiai moku (PHP irgi moku neblogai, bet jos paprasčiausiai nemėgstu). Gerbiu žmones, mėgstančius Python ar Ruby, bet tie, kas skelbia jog PHP yra geriausia kalba nuo pat Kristaus gimimo man sukelia šiokią tokią šypseną. Mano įsitikinimu neišvengiamai toks programuotojas arba subręs ir atras geresnę kalbą, arba bus amžinai pasmerktas knistis didelėje HTML ir PHP kodo košėje, iš kurios nematyt nei gražaus kodo, nei naujausių technologijų.

Tad kuo tas PHP blogas? Galbūt ir niekuo. Visa tai, ką čia rašau yra mano subjektyvi nuomonė. Pirmiausia PHP man asocijuojasi su pradedančiaisiais programavime, kurie net nežino kas tai yra „kintamasis“. PHP lengva įdiegti. PHP lengva pradėti rašyti, mat paprasčiausios PHP programos nesiskiria nuo HTML. Tuo tarpu Perl sudėtingas. Sunku juo programuoti Windows platformoje, ypač pradedantiesiems. Vien norint paleisti Perl programą per CGI, reikia padaryti „chmod“, išvesti reikiamą HTTP headerį, o tai sudėtinga žmogui, niekada nesusidūrus netgi su komandine eilute. Perl gal būt ir atrodo per sudėtingas, bet mano nuomone, jis priverčia susimąstyti. Priverčia pagalvoti kodėl reikia spausdinti būtent tokį headerį, o ne kitokį, priverčia užduoti klausimą „kodėl?“. Tiesiog PHP laikau vaikišku žaidimiu, palyginus su Perl (tiesą sakant nebūtinai su Perl… su bet kuria rimtesne programavimo kalba)

PHP meturi savo filosofijos. Arba jo filosofija yra padaryti kalbą kuo paprastesnę naudojimui internete, bet tam reikia skolintis idėjas iš to paties Perl. Tik skolintas ir kopijuotas daiktas niekada neprilygsta originalui. PHP turi daug ką, ko turi ir Perl, bet tai padaryta taip negrabiai kad net nesinori to naudoti. Tarkim regexpai. Krūvos preg_* funkcijų tikrai nepalengvina gyvenimo. O kaip būtų paprasta, jei regexpai būtų pačios kalbos dalis, o ne „prihakintas“ dalykas per funkcijas.

PHP neturi bendros vieningos funkcijų pavadinimų sistemos. is_array(), is_numeric(), is_null() ir isset()… kur dingo brūkšniukas? Be to pats sprendimas absoliučiai viską daryti per funkcijas (o kad bent ta funkcijų iškvietimo sintaksė būtų lankstesnė!) yra tiesiog atgrąsus. Štai yra ir funkcija array_map() (beje, kam tas „array_“ prieš visas masyvų funkcijas? Kad ilgesnės programos būtų?) — Perle map yra mano mėgstamiausia funkcija — bet ar kada kas naudoja tą array_map()? Ne, nes parašyti kodą su visais callback‘ais užima pernelyg daug laiko ir pastangų. Visiškai priešingai nei Perle, kur map labai patogu naudoti vietoj for ciklo: @foo = map { $_ * 2 } @bar;

PHP neturi paprastų masyvų. Yra keisti asociatyvūs masyvai, bet su jų normaliai negalima nei shift’inti, nei pop’int. Galbūt aš per daug stengiuos kad PHP būtų Perlas, bet patys PHP kūrėjai pripažįsta, kad daug idėjų ėmė iš ten. Deja, kopija skiriasi nuo originalo.

O kas toliau? PHP5 labai keistai ir įtartinai panašus į Java. Kaip sau norit, bet tai ne mano svajonių kalba. Perl6 — visai kitas žvėris. Tai jau nebe kalba, o metakalba, suteikianti visišką laisvę programuotojui. Jei tik jis žino ką daro.