Straipsnis skirtas tiems, kurie galvoja apie „viliojantį programavimo pasaulį“ ir norėtų pradėti mokytis programuoti… pasitelkiant PHP.
Nežiūrint to, kad PHP šiuo metu yra bene populiariausia tinklapių programavimo kalba, ir to, kad šį straipsnį skaitote PHP ir MySQL programuotojų tinklarštyje, aš nerekomenduoju pradėti mokytis programuoti naudojant PHP. Tai yra ne tik mano nuomonė ir argumentų tam yra gana daug.
Taip, PHP yra lengva, lanksti, populiari…, bet nepamirškime, kad mokymosi programuoti procese yra labai svarbu turėti galimybę nuosekliai, žingsnelis po žingsnelio, aiškiai ir vienareikšmiškai susipažinti su programavimo technologija, suprasti, kas yra tipai, kintamieji, kaip veikia programa ir jos struktūros, kaip sukonstruoti uždavinių sprendimo algoritmus. Su PHP tą padaryti yra kur kas sunkiau neturint pakankamo žinių bagažo bei patirties lyginant su kitom, ypač mokymuisi specialiai skirtom, programavimo kalbom.
Norą pradėti mokytis programuoti panaudojant PHP aš prilyginčiau norui, gyvenant Lietuvoje, išmokti japonų kalbos dar nemokant dorai kalbėti lietuviškai, tarkim vaikui būnant 2-3 metų amžiaus. O kodėl – pabandysiu išdėstyti pora svarbių argumentų.
Taip par noriu atkreipti dėmesį, kad rašau apie žmones, kurie dar visai nemoka programuoti.
Sudėtinga infrastruktūra
Norint su PHP parašyti „Sveikas pasauli!“ tipo programą tuo stiliumi, kuriuo veikia tipinis tinklapis mums reikės: PHP interpretatoriaus, web serverio, naršyklės. Veikiančios programos demonstravimas, nusiunčiant ją draugui, jau yra sudėtingas. Praktiškai kiekviena PHP pradžiamokslio knyga prasideda nuo to, kaip į savo kompiuterį įsidiegti ir kaip suderinti PHP, Apache ir MySQL. Manau, kad iš pradžių žmonėms sunku pradėti nuo kliento-serverio architektūros. Ne be reikalo mokyklose senais laikais programuoti mokindavo dirbant su Turbo Pascal’iu, kur programavimo kalbos interpretatorius yra iš karto sujungtas su redaktoriumi bei derintuvu ir vieno mygtuko paspaudimu galima pamatyti programos rezultatus, dokumentaciją; sukompiliuota programa veiks kitame kompiuteryje be jokių papildomų pastangų, diegimo ar derinimo. Tuo tarpu pradedant dirbti su PHP atsiranda labai daug pašalinių veiklų, kurias turi atlikti ir perprasti „mokinys“. Dažnai pradedantieji ištisas valandas ir dienas leidžia prie darbinės aplinkos derinimo ir bandymo suprasti, kodėl naršklėje nemato savo programos rezultatų. Teisingumo dėlei reikia paminėti, kad yra gaminami ir platinami patogūs pradiniai programų paketai skirti lengvai įdiegti visas reikalingas darbui su PHP programas, bet vistiek yra susiduriama su eile blaškančių ir pradžiai tikrai nereikalingų dalykų mokymosi procese.
Teisingumo dėlei taip par reikia paminėti, kad minimalistiniui programos paleidimui užtenka vien tik PHP interpretatoriaus, bet ar daug knygų pradedantiesiems prasideda nuo „php -f hello_world.php“ paaiškinimo?
Negriežta sintaksė ir tipai
Kad ir kaip ten bebūtų, kintamųjų tipų suvokimas ir supratimas yra svarbus programavimo aspektas. PHP leidžia per daug liberaliai interpretuoti kintamųjų reikšmes, todėl rezultate turime aibę iš to sekančių problemų, kai yra nesuvokiama, kuo skiriasi 0, „0“ ir 0x0.
Problema čia ta, kad PHP kalboje:
- Nėra griežto reikalavimo deklaruoti kintamuosius;
- Nėra griežto reikalavimo konvertuoti kintamųjų tipus;
- Nėra vieningos standartinės bibliotekos funkcijų pavadinimų sistemos;
Alternatyvios kalbose, minėtame Pascal’yje, C/C++, Java ar k.t. reikalavimas deklaruoti moko disciplinos, neblaško ir leidžia kiekvienoje programos vietoje tiksliai žinoti kokio tipo yra kintamasis.
Nevieninga standartinių funkcijų vardinimo sistema taip pat papildomai painioja pradedančiuosius ir rodo blogą pavyzdį. Beveik visi vieningai sutinka, kad derėtų naudoti viena funkcijų ir kintamųjų vardinimo metodika, kai tuo tarpu PHP viduje to nesilaikoma, pvz.: htmlentities() ir html_entity_decode().
Sudėtingas duomenų saugojimas
Nepaslatis, kad didžioji dalis tinklapių duomenis saugo MySQL duomenų bazėse. Nepaslaptis ir tai, kad pradedantysis programuotojas internete labai greitai gaus pasiūlyma „pamiršti tekstinius failus“ ir „pradėti naudoti MySQL“. Rezulatatas – papildomi klausimai, neaiškumai, keista ir nauja SQL sintaksė, MySQL serverio diegimas ir derinimas, nauji ir neaiškūs klaidų pranešimai.
PHP neturi tipizuotų failų. Taip, kintamuosius (kad ir kokie jie bebūtų) galima paversti į eilutės tipo objektus ir tada juos nesunkiai saugoti failuose. Tačiau čia vėl pradedančiajam yra nevienareiškmiai suvokiamas dalykas, greitai susiduriamama su tokio funkcionalumo ribojimais. Pvz.: duomenys paprastai nuskaitomi vienos operacijos pagalba – nėra galimybės slankioti failo rodyklės ir duomenis nuskaityti/rašyti pasirinktinai. Visi bandymai imituoti tipizuotų failų veiklą veda prie per daug sudėtingos ir nepatikimos sistemos.
Koks tinkamiausias redaktorius?
PHP kalbai redaktorių ar integruotų redagavimo sistemų (IDE) yra nemažai ir gerų, tačiau nepaslaptis, kad dauguma savo pirmąjį PHP scenarijų parašė su Notepad’u. Ko pasekoje labai greitai susidūrė su netikėtai atsiradusiomis „šiukšlėmis“ (ar „jeroglifais“) naršyklės lange. Sekantis pradedančiojo programuotojų žingsnis tampa ilga ir varginanti „geriausios redagavimo aplinkos“ paieška. Problema tame, kad šiuo metu dar nėra tokio integruoto ir pilno paketo, kurį pradedančiajam būtų galima lengvai parsisiųsti, įsidiegti ir naudoti. Egzsituoja bandymai tokius sukurti, bet nėra daugumos pripažinto ir palaikomo standarto. O jeigu yra, gal kas nors komentaruose galėtų pasidalinti?
Apibendrinimas
Reikia atskirti du dalykus: „mokėjimą programuoti“ ir „mokėjimą programuoti su PHP“. Aš asmeniškai smerkiu bandymus mokytis programuoti su PHP dar nemokant programuoti aplamai. Ir labai rekomenduoju pradėti nuo: Free Pascal. Manau, kad ilguoju periodu tai būtų naudinga tiek pačiam programuotojui tiek PHP bendruomenėms taupant visų taip brangiai vertinamą laiką.
Nepaklausę draugiško patarimo tikriausiai turės ieškoti informacijos apie: PHP, MySQL(ar alternatyvas), SQL, Apache, Firebug, HTML, Javascript, Jquery(ar alternatyvas), CSS ir t.t.
Taip pat noriu priminti, kad straipsnyje yra išsakyta mano asmeninė nuomonė. Egzistuoja ir daugiau argumentų už ir prieš minėtą temą.
Sėkmės renkantis programavimo kalbas!
Temos ateičiai:
- Darbinė PHP programavimo aplinka: LAMP/WAMP, redaktoriai, derintuvai, IDE;
- Klaidų valdymas ir apdorojimas PHP aplinkoje;
Atgalinis pranešimas: Nuo PHP prie C++, pirmoji programa | Blog.MySQL.Lt