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.

16 Comments

  1. Moxliukas, paskaites tavo nuomenes man atrodo, kad PHP yra paskutinis š****. Mano nuomonė yra ta, kad PERL yra daugiau ADVANCED chiūvams, bet niekados nereikia laidoti kitos kalbos… Juk jei pagal tave “jei PHP butu VIENODA kaip ir PERL”, tai tada pagal mane nereikėtų PHP kaip atskiro PERL klono… PHP yra skirta pradedantiems chiūvams (neapibrežtas kintamųjų tipas ir kt.) Tiesa sakant mane irgi prajuokina, TOPICAI “PHP atejo PERL isejo”, nes po tokio posto žmogus parodo savo neišmanymą, ir tai parodo, kad jis yra TIK pradedantis programuotojas, tikie po tam tikro laiko “SUSITUPARINA” kame diela

    P.S.

    PERL yra visuose “unix-like” OS pagal defaultą imetamas paketas, o php arba iš vis nebūna kaip atskiro paketo, arba instaliacjos metu yra pasiūloma ąmesti php kaip paketą (vien šio sakinio turėtų pakati ;)

  2. as vel prie savo nuomones – php skirta tik webuj ir niekam daugiau. mini portaliukam? gal, na tiem megejam knistis po php ir html kruva. (gi kurta webuj buvo, kosmoso nepadarysi)

    Kalbant konkreciai apie panaudojima – kuriant infrastrukturas imonems, naudojant konkrecius su paskirstytais tinklais susijusius uzdavinius, reikalingus valdymo per weba, tada php nublankta ir patartina ieskot alternatyvu (cgi-bin, mod_perl, JSP)

    Cia jau mano, kukli nuomone.

    4moxliukas: na sukure, zmones naudoja, populiaru, nepabegsi nuo to :)

  3. as vel prie savo nuomones – php skirta tik webuj ir niekam daugiau. mini portaliukam? gal, na tiem megejam knistis po php ir html kruva. (gi kurta webuj buvo, kosmoso nepadarysi)

    Kalbant konkreciai apie panaudojima – kuriant infrastrukturas imonems, naudojant konkrecius su paskirstytais tinklais susijusius uzdavinius, reikalingus valdymo per weba, tada php nublankta ir patartina ieskot alternatyvu (cgi-bin, mod_perl, JSP)

    Cia jau mano, kukli nuomone.

    4moxliukas: na sukure, zmones naudoja, populiaru, nepabegsi nuo to :)

  4. Na, nereikia parkių. Teko matyt visko – ir su PHP rašytą web serverį (!), tiesa, jis neveikė, bet projektas tokis buvo, teko matyt su perl’u rašytų projektų, kur kas galingesnių nei šitas.

    Mano, kaip totalaus lamerio progr. srityje nuomonė – viskam duokim savo vietą. Nereikia daryt razvratų, ir su php programint servrinių aplikacijų, arba TCP/IP steko draiverio ar dar kažko panašaus – jis tam neskirtas. Palikim php kaip web’inę kalbą, kur jinai mano nuomone daug geriau reiškiasi nei perl’as (IMO visų pirma, antra, galbūt su php programyt lengviau, dėl to programeriai daro mažiau klaidų ir paprasčiausiai saitai geriau sukas… Gerą perl’o programerį musėt sunku surast?).

    Panaudokim perl’ą plačiau. Ne tik web’e, bet ir skriptų sistemai tvarkyt rašyme, arba kaip greitą pakaitalą sed’ui (kartais ;-) etc etc. Ir viskam palikim savo vietą. Ir nebeliks diskusijos, kas yra geriau.

  5. Teisingai sakai, moxliuk, kad subjektyvi nuomonė ;)

    Paskaičius, susidaro įspūdis, kad nemėgsti PHP, nes:

    1. Tau nepatinka žmonės kurie naudoja PHP – dėl perdaug tiesmuko požiūrio į problemų sprendimą.

    2. PHP regexpus leidžia naudoti per daug suprantamai (7 funkcijos beje tikrai ne krūva)

    3. Funkcijų vardų nenuoseklumas (šiaip tai spėju mintinai žinai kaip rašosi is_array() ir kaip isset())

    Dėl filosofijos, tai pasakysiu, kad mano nuomone nėra galingesnės filosofijos už:

    Labas, <? echo $_GET[vardas]; ?>

    O tai, kas daugybei žmonių pasaulyje padeda išspręsti savas problemas be vargo ir supažindina jaunimėlį su server-side skriptingu tikrai nėra vaikiška. Greičiau vaikiška yra Perlo mėgėjų reakcija: niekas ir neginčija, kad Perl yra galingesnė skriptinimo kalba nei PHP, bet kažkodėl jiems vis norisi tai iš naujo įrodinėti.

    Vietoj belvyzgų rašinėjimo apie tai kas labiau patinka, galėtai pavyzdukais mus mokyti Perl – būtų ir tau ir mums daugiau naudos :)

    Smarkokai čia parašiau, tai dabar fleimink atgal ;) Bet geriau fleimink iškart su pavyzdžiais, kad tai būtų daugiau nei paprastas fleimas.

  6. "Nemėgstu PHP", "Java <…> ne mano svajonių kalba", "Perl6 — visai kitas žvėris"

    man čia dauk juokingo, ne fanatikui rašyt ir lygint savo fanatišką kalbą su kitomis. Tu ką juokauji lygindamas perlą su java bei php.

    šimtą kart sakiau ir dar pakartosiu : kiekvienam uždaviniui savas sprendimas. web'ui žymiai patogiau php nei perl'as ar java, java taip pat ne visoms problemoms spręst kalba.

    ir php5 nekopijuoja javos, tiesiog naujo OOP design senai php reikėjo.

    tegu perl'as sėdi ten kur ir turi sėdėt, juk su pascal'iu irgi web'ui galima programuoti ?

  7. wisiskaj sutinku su ABLomu – wiskam sawo wieta .. kiekwiena kalba, deja, turi sawo ir pliusu ir minusu ;] negalima tajp wisko iskejkt bewejk nej is sio nej is to, nes kodingas, imho, skonio rejkalas .. wieniem patinka zajst su pascaliu, kitiem assambleris atstoja gimtaja kalba ;] o del skonio gincytis yra beprasmiska ..

  8. Hehe.

    YHBT. YHL. HAND.

    O jei rimtai, tai čia bandau savo meilę Perlui pateisint. ;)

  9. myli tu perl'ą – MYLi ;) čia vienareikšmiškai. senai mes jau tai žinojom. o dabar varom su dviračiais važinėt

  10. Hehe =]

    Jo, dviračiais noriu. Tik reikia kažkaip labai iš Kauno tą dviratį atsigabent =]

  11. beje.. kas yra ta meile?

    kai tu myli, o dulkina kitas?

    arba akla meile… tu myli.. dulkina kitas, o tu nematai nieko..

    arba vienapuse meile… tu myli.. o kitai pusei nusishikt.. tik svarbu uz kava it maista kaboke sumoket :)

    na r dar nuosirdi meile… tu myli… gauni kartais padulkint, ir del to pleshaisi kaip gali..

    bet MEILE's siekiai yra pateisinami visi

    P.S. kada alaus?

Comments are closed.