Pipedija - tautosaka, gandai, kliedesiai ir jokios tiesos! Durniausia wiki enciklopedija durnapedija!


Perl

Iš Pipedijos - durniausios enciklopedijos.
Jump to navigation Jump to search
Kupranugaris tapo Perl kalbos logotipu kažkaip netyčia, kai tokia O'Reilly leidykla tiesiog išleido knygą apie šią programavimo kalbą ir paprasčiausiai uždėjo ant viršelio kokį papuola gyvūną, nes turėjo tokį įprotį - gyvūnus ant knygų viršelių dėti. Tai šitaip Perl ir susisiejo su kupranugariais, nes tą kartą leidyklai randomu papuolė kupranugaris.

Perl - tokia truputį nenormali programavimo kalba, kurią sukūrė koksai tai užkietėjęs kalbininkas ir biškį spėjęs nuo kompų kvankštelti kompiuterastas - toksai Larry Wall. Tasai gi sugalvojo, kad visos programavimo kalbos yra blogos, nes nuo žmonių vartojamų vienu dalyku skiriasi - neturi konteksto. Todėl vis nuolat reikia nurodinėti kažką, kai išties tai kompiuteris ir pats galėtų susiprasti, apie ką kalbama.

Tai užtat ir gavosi keista kalba tokia, kur galima programuoti, nenaudojant visokių kintamųjų, nes jų kaip ir nereikia. Nes ir taip viskas savaime tenai aišku turi būt, iš konteksto.

Be kita ko, Perl yra laikoma ta programavimo kalba, apie kurią yra parašytas geriausias ever programavimo vadovėlis žmonijos istorijoje - tai ta pati legendinė Kupranugario knyga, išleista O'Reilly leidykloje, kurios dėka ir pats Perl išpopuliarėjo. Taigi, kokia čia kalba bebūtų, mokymuisi ji yra labai maloni. Nors ir neturinti jokios ateities, deja.

Šiais laikais daugelis tų, kas kadaise naudodavo Perl, dabar persimetė ant Python. Nors šioji kalba ne mažiau durna, negu Perl, tačiau durna į visiškai atvirkščią pusę - pvz., sintaksėje yra tiek priekabi, kad netgi prie tarpų skaičiaus kabinėjasi. Užtat tada programeriams viskas atrodo apibrėžčiau, o todėl - ir geriau.

Vietoje nepavykusios Perl 6 versijos dabar atsirado Raku kalba, bet ji tokia pati nepavykusi, kaip ir Perl, nes išties ir yra ne kas kita, kaip nepasisekusi ir pervadinta Perl 6 kalba.


Hello World Perl kalba

Taigi paprastu atveju labai jau viskas paprasta:

print "Hello World\n";


Perl kalbos atsiradimo istorija

Perl kalbos istorija yra daug įdomesnė, nei kitų programavimo kalbų, tačiau savo vingiais nusako ir pačios kalbos nesąmones bei privalumus. Itin ryškus šios kalbos akcentas - tai bandymas perkelti į programavimą paprastų šnekamųjų kalbų kūrimo ir vystymo principus.

Pati Perl kalbos pradžia

Perl prasidėjo nuo to, kad Larry Wall sugalvojo daryti kažkokius skriptus kokiai tai įmonei. Tiksliau, pasižadėjo suprogramuoti kokią tai elektroninio pašto prenumeravimo ir naujienų siuntinėjimo sistemą, skirtą UNIX tinklams. Bet kai pradėjo daryti, tai paaiškėjo, kad shell skriptais visko padaryti nesigauna, netgi naudojant ir visokias papildomas priemones, kaip kad grep ar awk. Tai ėmė ir pradėjo rašyti nuosavą programavimo kalbą, kuri turėtų tas savybes, kurių ir reikia. Kaip sako legenda, susikurti nuosavą kalbą ir jau ja parašyti visą tą laiškų siuntinėjimo softą truko pakankamai trumpai, kad užsakymas gautųsi įvykdytas.

Taigi, gavosi tokia skriptinimo kalba, kuri labai paprasta, turinti lengvai aprašomus ciklus, visokius kintamuosius, o šiaip tai panaši į kažkokį kratinį iš tų pačių shell skriptų (su kintamaisiais pagal nutylėjimą), iš awk gautų teksto apdirbimo galimybių, o taip pat dar ir didele dalimi C kalbos sintaksės, kad būtų galima kokius nors ciklus daryti ir panašiai. Ir dar papildomai, kad mažiau reiktų rūpintis klaidomis, buvo įvestas dar ir šioks toks automatinis programavimo klaidų apdirbimas, kad netgi jei programuotojas kur ir suklys, tai kad programa visvien veiktų.

O dar, kad būtų geriau programuoti Perl, tai į jį buvo pridėta visokių regekspų, kad viską jais būtų galima daryti. Todėl visi dabar ir daro viską regekspais, o todėl programos pasidaro panašios į kringelių kratinius, kur nei sintaksės nėra, nei kintamieji aiškūs, o tik priberta kažkokių neaiškių simbolių.


Perl kalbos vystymasis

Kadangi žmonės šneka įvairiai, tai paskui dar tasai pats Larry Wall sugalvojo, kad tai kalbai nereikia jokios tenai sintaksės, taip kad turi viskas veikti ir tuo atveju, jei kažkas užrašys panašiai, kaip Basic, Pascal ar C kalboje, ar netgi išvis jei užrašys kaip nors kreivai ir klaidingai. Tai rezultate dabar neretai būna, kad koks nors ilgametis Perl programuotojas bando perskaityt kokio nors kito ilgamečio Perl programuotojo programą ir nieko nesupranta, kas ten parašyta. O dar kai prisideda tie kontekstai su nutylėjimais, tai ir išvis gaunasi bardakas.

Visgi nors ir bardakas, bet kartu atsirado ir vienas pliusas: jei moki programuoti bent viena kokia nors programavimo kalba, pereiti prie Perl yra nepaprastai lengva - kartais tiek lengva, kad atrodo, jog programuoji praktiškai ta pačia kalba, kokią jau mokėjai, tik su nedideliais skirtumais. Išties gi čia yra vėlyvesnių Perl versijų, ypač Perl 5 savybė.


Perl nesąmonės, susidūrus su rimto programavimo reikalais

Kadangi Larry Wall buvo neabejotinas humanitaras, tai jisai visiškai nesuprato tokio seno ir gerai įsitvirtinusio koncepto - masyvų, todėl nutarė, kad vietoje jų turi būti hešai, t.y., asociatyviniai masyvai. Beje, gana ilgą laiką tie hešai buvo vienas iš geresnių Perl privalumų, bet paskui jie ėmė rastis ir kitose programavimo kalbose.

O paskui kažkodėl Perl kūrėjai kartu su tuo pačiu Larry Wall nutarė, kad masyvų ir nereikia, ir negalima turėti, nes atseit viską daro hešai. Kai paskui kiti ėmė aiškinti, kad su hešais neįmanoma netgi teoriškai daryti to, ką gali daryti daugiamačiai masyvai, tai paskui Larry Wall su savo šalininkais nusprendė, kad jie to nesupranta, o jei nesupranta, tai to ir nereikia. Todėl pareiškė, kad daugiamačiai masyvai yra išsigalvojimas ir nesąmonė.

Larry Wall čia padarė vieną iš lemtingų klaidų, dėl kurių prarado daugybę potencialių naudotojų: galvodamas, kad hešai yra patogesni, nes paprastesni, jis nesuprato, kad kartais reikia ne patogumo, o griežtos ir apibrėžtos tvarkos, kuri ir būdinga masyvams. T.y., duodamas patogius hešus, atėmė reikalingus masyvus. Tai reiškė, kad daugybės programų nesigavo numigruoti į Perl, nesigavo daugybės projektų ir taip toliau.

Todėl dabar Perl yra kalba, kuria neįmanoma programuoti nieko įdomesnio, nes nėra normalių masyvų, o programos daro neaišku ką, o kai kas nors kokią programą parašo, tai daugiau nei vienas žmogus jos perskaityti nesugeba, nes kiekvienas nuosavą sintaksę naudoja, o kintamųjų nenaudoja, o dar prikaišioja visur regekspų, su kuriais netgi matematines operacijas atlikinėja.


Perl vykstymasis ir bėdos

Rimčiau žvelgiant į Perl istoriją, joje galim atrasti labai gerų pamokų, susijusių ir su programavimu, ir su projektų valdymu, ir su vėlesniu projektų ir paslaugų palaikymu.

Perl yra vienintelė tokia programavimo kalba pasaulyje, kuri rašyta ne pradžioje sukuriant specifikaciją, o pagal ją jau darant transliatorių, o atvirkščiai - Larry Wall, o paskui ir kiti jo draugeliai tiesiog kaip papuola programavo interpretatorių, o pagal tą jau ir gaudavosi kažkas, kas veikė. Ir jei ko prireikdavo papildomai, tai nesukdami galvos, papildomai ir dasiprogramuodavo, neretai nieko dokumentacijoje nepaminėdami. Per daugelį metų gavosi tokia kalba, kad netgi ir jos pačios kūrėjai nelabai gerai žino jos gramatiką.

Vietoje konkrečios specifikacijos visada būdavo sakoma, kad jei jau taip reikia, tai esą pasižiūrėk į Perl interpretatoriaus kodą ir sužinosi. Tai taip visi ir darydavo.

Pats Larry Wall šitą Perl savybe laikė labai gera, nes esą taip Perl išties ir panašėja į tikras žmonių kalbas - vystosi visaip, savaime, randantis visokiems dialektams, jiems jungiantis ir taip toliau. Vėlyvesnėse Perl versijose, kaip kad Perl 5, būtent ta savybė ir buvo plečiama - kad kuo įvairiau galima būtų viską daryti, kuo daugiau skirtingų būdų. Rezultatas, deja, gavosi toksai, kad kalba tapo nesuvaldoma. Vėliau vykę bandymai sukurti naują Perl versiją - Perl 6 - baigėsi faktine nesėkme ir naujos, programavimo kalbos atsiradimu. Taip atsirado tokia Raku kalba, kuri, iš esmės, yra daugiau mažiau tas pats Perl 6, bet ir toliau kažkoks nedadirbtas.

Taigi, kažkuriais atžvilgiais galim tarti, kad Perl yra pats baisiausias pavyzdys, kaip blogas Agile metodų taikymas pradžioje atrodo, kad duoda gerus rezultatus, bet paskui viską sužlugdo. Įsitikinimas, kad reikia ne dokumentuoti, o daryti ir kad daryti reikia greitai, o ne planuoti ir kad nereikia didžiulių planavimo etapų ir kitos projektų valdymo veiklos pradžioje atrodė geru, kol Perl buvo visiškai nauja kalba. Paskui tai tapo visiško Perl žlugimo priežastimi.


Reziume apie Perl

Durniai jie visi.

Na, gal visgi nors ir durniai, bet reikia pasakyti, kad turi truputį humoro, nes nors ir patys nežino, ką daro, ale bent jau kalbą pavadino ne šiaip sau, o kaip santrumpą iš "Pathologically Eclectic Rubbish Lister", kame yra labai daug tiesos. Beje, tai oficialus Perl kalbos pavadinimo iššifravimas.

Upd.: sako, kad jau atsirado tei daugiamačiai masyvai Perl kalboje, nes galų gale prabaladojo smegenis tiems humanitarams visokie tiksliukai. Tačiau per ilgai trukusias kovas ir pasipriešinimus visų tų Perl programuojančių žmonių kiekis labai spėjo sumažėti, dauguma gi persimetė ant visokių kitų kalbų, kaip kad PHP, Java ir panašių. Nes kurių galų kankintis su humanitarais, bandant jiems išaiškinti, kuo masyvas skiriasi nuo hešo, kai galima tiesiog programuoti normalia kalba ir nesikankinti su jokiais humanitarais?