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.

Columbia Shuttle tyrimas

Prieš porą dienų Columbia Accident Investigation
Board
išleido pirmąsias
rekomendacijas
būsimiesiems Shuttle skrydžiams. Nieko aiškaus apie pačios
katastrofos priežastį. Susidaro įspūdis, kad tos rekomendacijos tik tam
kad kitą kartą tokie tyrimai vyktų sklandžiau (rekomenduojama fotografuoti
Shuttle nusileidimą iš palydovų ir panašiai). Tiesa, taipogi rekomenduojama
peržiūrėti Shuttle anglies plokštelių struktūrą.

Pamąstymai apie #php tradicijas

Tiesa, važinėjantis dviračiais su Lakūnu šiek tiek pasikalbėjom apie
#php tradicijas ir apie jų atgimimo galimybes. Pereitą vasarą juk vos ne kiekvieną
pekntadienį būdavo tradicinis #php sugėrimas Rotušėlėje. Kartais ateidavo
keletas žmonių, kartais — kelios dešimtys. Įdomu, ar tokia tradicija atgimtų ir šią vasarą, nebūtinai
Rotušėlėj, nebūtinai penktadieniais, nebūtinai alaus gėrimas, tiesiog kažkas bendro ir tradiciško.

Naujos Microsoft buferio perpildymo klaidos

Microsoft įspėjo Windows NT, 2000 ir XP vartotojus apie buferio perpildymo
klaidas, kuriomis pasinaudojus galima užvaldyti kompiuterį, trinti bylas,
perkonfigūruoti sistemą, ir daryti viską administratoriaus teisėmis. Skylę galima užlopyti
atsisiunčiant lopą iš Windows Update svetainės.

Tai jau 14-a atrasta su sistemos saugumu susijusi klaida Windows
sistemose šiais metais. Daugiau apie pačią klaidą galima rasti
pačioje
Microsoft svetainėje

Socialinė inžinerija — lengviausias slaptažodžių sužinojimo būdas

Įdomus ir linksmas (na, kai kuriem… kitiem reikia stipriai susirūpinti) straipsniukas apie tai kaip lengva išvilioti iš darbuotojų slaptažodžius. Pasirodo, 90% žmonių pasako savo slaptažodžius jei jūsų paklausi labai sukto klausimo, kaip kad “koks jūsų slaptažodis?“. Negana to, jie dar paaiškina šio slaptažodžio kilmę ir išpasakoja kitas kompanijos paslaptis.

Nagi, nagi… O koks jūsų slaptažodis? ;)

Diena offline

Šiandien praleidau toli nuo interneto važinėdamasis dviračiu po Kauną ir keldamas avarines situacijas (taip, ir aš kartais turiu gyvenimą :)

Tiesa, esu patvarkęs svetainės kodą, ir galite jį atsisiųsti (ten jau su komentarais — gal ir ne visai stable, bet bent jau testing :)

Svetainės bugai

Kaip ir sakiau, taip ir įvyko. Komentaruose dar pilna bugų ;)

Pirmiausia noriu padėkoti godzhirra_da_mc už tai, kad atrado problemą postinantdidelius komentarus (pasirodo problema  buvo ne tame, bet tai padėjo išaiškinti teisybę). Problema standartinė — neteisingai eskeipinamos viengubos kabutės (dėl to pradeda strigti MySQL kodas, ir labai lengva padaryti “SQL injection“). Atrodo sutvarkiau šį klausimą.

Kitas dalykas, kurį pastebėjau — blogas komentarų formatavimas, kai jame yra didelių žodžių be tarpų (tarkim pora šimtų ‘a’ raidžių). Ateityje padarysiu, kad žodžius skaidys jei jie bus per didelio ilgio (nebent tai URL… čia dar reikės pakrapštyt galvą).