PHP v kontraste s Perlom

Ako hovoria naši neperliví kolegovia – PEARL (nesprávne). Na PHP mi vadí tisícky funkcií. Pri kódovaní v ňom vlastne neustále tipujem ako by sa tak mohla volať funkcia, ktorá robí nejakú drobnosť, ktorú v Perle spichnem regulárnym výrazom.
Áno, poločas pochopenia regulárnych výrazov je kritický. Stačí však pochopiť princíp a odrazu Vám bude vadiť, že na tr/abcd/1234/ je treba v PHP naplniť akési polia a spustiť funkciu, ktorej názov tipujete z troch-štyroch možných.
V PHP pokusom omylom hľadám funkcie a v Perle pokusom omylom konštruujem regulárny výraz.
Ale asi najlepšiu analýzu som našiel pri hľadaní jednej knižnice: PHP in contrast to Perl
Pre lenivších: PHP je úžasne nekonzistentné, konvencie pomenovania premenných a funkcií sú úžasné. PHP má separátne funkcie na každú blbosť. PHP má viac ako tri tisíc (!!!) funkcií „v základnom balení“ (Perl iba 206). Prečo? PHP ma rozdeľovanie reťazca 8 funkcií a Perl jedinú!
Úžasný dokument! Nenapísal by som ho lepšie!

Written by rony

17 komentárov

Kozo

Odhliadnuc od hore napisaneho mi na PHP najviac vadi jeho ponatie „variable scope“ (ako to prelozit?)

Keff

Odkazovana stranka mi prijde dost jednostranna, v cem je rozdil mezi 20ti druhy sortu a jednim sortem s prametrem upresnujicim druh sortu co ma 20 ruznych moznosti?

dusoft

Ano, nekonzistencia pomenovania funkcii je dana vyvojom PHP a tym padom aj spatnou komptabilitou. Nemozes zmenit nazvy funkcii z prechodu na novu verziu len preto, aby sme boli konzistentni, ze ano.
PHP je skriptovaci jazyk ponukajuci kopu nadstavby. Nikto ta nenuti nadstavbu vyuzivat. Ak si zvyknuty na PERL a regularne vyrazy, tak v klude pouzivaj ereg_replace aj v PHP. Nemusis pouzivat str)replace, substr ani ine dokonalosti. Mne ale vyhovuju, nakoniec Pascal ich tiez mal.
Co sa tyka rozsahu platnosti premennych – co je na tom divne? Samozrejme, ze globalne premennesu zasvinovanie priestoru premennych a ich vyuzivanie je spravne len pri kratkych programcekoch. Pri OOP chces mat platnost premennej len vo funkcii a hned sa lahsie programuje. Nemusis mazat premenne, nemusis rozmyslat, ze co dana premenna obsahuje.
PERL je narozdiel od PHP jazykom vedcov, strucny, na prvy a druhy pohlad neprehladny. Myslim, ze jeho syntax je pevne naviazany na dobu, kedy vznikol.
PHP je rovnako viazane na dobu svojho vzniku – doba velkych zmien na internete, dynamika veskera zadna, len nebezpecne CGI.
A nezabudajte, ze to je povodne domaci projekt jedneho cloveka.

dusoft

Este by som rad dodal, ze vstupne parametre a ich poradie si tiez vacsinou nepamatam, preto je rychla referencna prirucka v elektronickej podobe vyhodou.
Alebo editor typu Quanta, ktory mi format funkcie rovno napise.

rony

[2] ze si pamatam ze na sortovanie je sort. U PHP si musim pozriet do knizky, ze ked chcem sortovat tento typ dat, tak musim najst ktoraze to funkcia ma robit. Myslim, ze je to zjavne. Tazko ale posudzovat, ked poznas iba PHP.

dusoft

rony: naopak, beriem to ako vyhodu, ze mam napr. triedenie poli predpripravene a nemusim nanho hladat kniznicu ci funkciu.

rony

[4] to s tym vobec nesuvisi.
[3] stale ste nepochopili: 3000 funkcii vs. 200. To nie je jazyk spisovatela. To je jazyk ktory ma byt exaktny. Ale tazko to nejako vysvetlovat, ked nechapete, co je konzistencia.

dmiba

dulsoft [3] – „A nezabudajte, ze to je povodne domaci projekt jedneho cloveka.“ to bol aj svojho casu Linux ;)

dusoft

[9]: No ved hej? A pointa?
[8]: Ja chapem, ze co je konzistencia, ale ty asi nevies, akym vyvojom PHP preslo, preto ti to nedava zmysel.

dmiba

[10] – Rovnako ja som nepochopil pointu tvojho „A nezabudajte, ze to je povodne domaci projekt jedneho cloveka“.
Perl je rovnako pouzitelny ako php ak nie este lepsie. Na rozdiel od php 5< je OO. Okrem toho existuju aj nadstavby pre webdevelop ako Mason alebo nami pouzivane Embperl. Ked sa hladal nastroj, ktory je OO a ponuka viac moznosti ako PHP v ktorom sme vyvijali takmer od jeho pociatkov, tak sa WA rozhodol pre Embperl, ktory je na rozdiel od JSP menej systemovo narocny a ponuka podobny komfort. Dalsou podmienkou bol Linux a vypadlo aj ASP. Takze teraz zasadne iba EPL.
Projekty ako http://www.blog.sk alebo http://www.svadba.sk bezia na EmbPerl a za vedcov sa nepovazujeme rovnako ako za vedca (bez urazky) nepovazujem Rony-ho.

rony

[10] chapem, ze je to ponaliepane cez seba. To ma ale moc neuspokojuje ked miesto OOP neustale zo seba vyrazam iba OPS po tom, co mi ktora funkcia vyviedla ;-)
Ano rony nie je vedec ;-) on si iba vybera najmenej narocne nastroje, ktore mi nekladu naroky na encyklopedicke znalosti nazvov. Takisto prikazy pre perl dohladavam v literature ale ked ide len o ten sort, proste jeden prikaz uz sa tocim iba okolo neho :) lahsie sa mi najde k nemu co potrebujem.
Horsie ked zadam http://www.php.net/sort – vybehne 20 zaznamov a po jednom to musim skusat a zavrhovat.
Ked mam porovnavat, tak Pascal je hodne podobny PHPku a nechapem, preco sa miesto PHP nepouzil ako vzor prave packal.

2ge

kedze som zastanca Perlu pridam sa. Tiez mi na PHP vadi to mnozstvo funkcii, henten clanok som si davno cital, ked som prechadzal na PHP. Ano, kodujem aj v Perli, aj v PHP, ja som si to rozdelil – PHP pouzivam na WEB, Perl pouzivam na skripty. Takze to viem celkom objektivne posudit. Objekty v PHP mi pridu lepsie spravene, v Perli je to dost komplikovane (uvod do objektov, potom sa s nimi robi uz v pohode). Dalsia vec, regularne vyrazy su zaklad, robil som uz naozaj vo vseliakych jazykoch (REBOL niekto pozna?:), ale Perl ich ma najlepsie a som rad ze mame PCRE :)

dusoft

regularne vyrazy mas nakoniec uplne vsade a perlovsky, resp. POSIX kompatibilny format v kazdom jazyku.

rony

budem velmi detailny, ale to, comu hovori PHP, ze je Perlovsky RE, nie je podla mna vobec pravda.
Ja som napr. mal predstavu, ze:
$vysledok = $retazec =~ tr/ABCDE/abcde/;
prevediem na PHP syntax nejako takto:
$vysledok = perlrege($retazec =~ tr/ABCDE/abcde/);
Ale zrejme to nejde a naviac som zatial nenasiel vobec ziadny ekvivalent tr… (asi som slabo hladal).

2ge

[15] to nie je pravda, vacsinou su tam nejake rozdiely a taky humusny zapis ako je napriklad vo VB som este nevidel – perl na jeden riadok, vo VB na 5. Okrem toho pri zlozitejsich vyrazoch sa PHP zlozi (nematchuje), treba ich vzdy trosku prepisat. Perl milujem kvoli REGEXom, kto raz s nimi robi, zabuda na vsetky trimy, alltrimy, ltrimy, rtrimy, left, righty, midy a neviem co vsetko.

Comments are closed.