Ik pa laikam interneta plašumos uzvirmo sarunas par to vai PHP ir slikts vai labs. Parasti gan vairāk par to cik PHP ir slikts. Kā arī PHP programmētāji tiek uzskatīti par iesācējiem, tirliņiem skriptu bērnu līmenī, pati valoda tiek uzskatīta par kaut kādu aizvēsturisku šablonu salipināšanas valodu. Un visbiežāk pretī tiek celti tādi zvēri kā Python un citi. Varētu iesaitēt uz n-tajām diskusijām, bet gan jau tie, kuriem šis jautājums interesē, tāpat zinās kur informāciju meklēt. Nedaudz novēloti, bet arī es gribu izteikt savu viedokli šajā jautājumā. Tomēr 7 gadus programmēju ar PHP un uzskatu, ka pa šiem gadiem ir izveidojies visai objektīvs viedoklis par valodu kā tādu.

Uzreiz gribu pateikt, ka es tagad nesākšu pelt vai cildināt citas valodas – nav man tādu zināšanu, lai varētu izvērtēt kas ir labs un kas nav labs.

Jā – savulaik mēs varējām uztvert PHP kā līmi, lai salipinātu dažādus HTML gabalus kopā, kā arī nedaudz apstrādātu lietotāja pieprasijumus un šo to padarīt ar datu bāzēm/failiem. Ja paskatīsimies vecākas PHP grāmatas redzēsim ka PHP savulaik pat tika mācīts nepareizi (no šodienas skatpunkta). Bet tās bija tā laika prasības pret valodu, kuras šī valoda arī apmierināja.

Gāja laiks, prasības mainījās. PHP kļuva iespējām bagātāks. Kas šajā laikā radās kā blakusprodukts? Nekonsistence funkciju parametros, dažādas backward compability lietas (t.i. – saderības vārdā ilgi jo ilgi tiek atbalstītas nejēdzības) un citi brīnumi. Turklāt tas kā PHP ir veidots (piemēram, brīva lēkāšana starp dažādiem datu tipiem utt.) dod iespēju taisīt dažādas nejēdzības tur, kur tām nevajadzētu būt. Kā arī PHP aizņemās dažādas lietas no citām programmēšanas valodām, kas rada visai izteiktu PHP specifisku – lieta X, kas izskatās pēc Y no valodas Z īsti neuzvedās kā Y, bet kā Y līdzinieks ar piedevu K. Bet tas nav nedz labi, nedz slikti – tāds ir PHP.

Un tādu – kā augstāk aprakstīts – PHP redz daudzi jo daudzi pārbēdzēji, daudzi iesācēji, daudzi tie, kas vispār ar PHP īsti nav tā kārtīgi strādājuši. Es nesen parakņājos pa PHP forumiem un jautājumu dēļiem (lasi SO) – tur ir kaudzēm PHP jautājumu. Turklāt no iesācēju tēmas. Un kā jums šķiet, kā izskatās viņu kods? Gluži tā kā pirms 6 gadiem mācīts grāmatās, kuras jau sen vajadzēja sadedzināt. Pamatīgs spageti, vienā failā kopā pieprasījumi datu bāzei, datu apstrāde, kurā pa vidu iemiksēti HTML fragmenti utt. utml. Protams, kaut ko tādu redzot, nevar rasties labs viedoklis par PHP. Un problēma ir tāda, ka daudzi PHP programmētāji tā arī nekad pāri šim līmenim netiek. Viņi ikdienā strādā/uztur tādu spageti un tādu paši arī ražo. Ja es būtu palicis šādā līmenī vai arī ja man ikdienā būtu jāstrādā ar kaut ko tādu, gan jau arī aizmuktu un lamātu PHP.

Bet. Ziniet ko – tā ir tīri programmētāja vaina. PHP ir ērts, labs, funkcionāls rīks, ja to māk pareizi lietot. Gluži tāpat kā C4. Ērta un stabila sprāgstviela, bet nepareizi lietota var uzlaist gaisā arī ne to ko plānots. Un ja kāds darbojoties ar C4 sevi uzlaistu gaisā, ko vainotu – C4 vai personu? Te arī mana atbilde. Vajag izaugt pietiekoši tālu un tad PHP vairs nebūs kā skabarga vienā vietā, bet kārtīgs rīks.

Es ar PHP esmu taisījis gan lapas ar dažām koda rindām, gan tādas kuras strādā uz daudziem serveriem un tās darbina miljoniem lietotāju. Ir iespējams ar PHP taisīt lielus projektus. Ir iespējams nodalīt atbildības sfēras. Ir iespējams taisīt testējamu kodu (testē pēc tam kaut vai ar PHPUnit vai Selenium). Ja šķiet, ka PHP dod parāk lielu brīvību un ir bail ka pats vai komandas biedri novirzīsies no kāda standarta – uzliekam CodeSniffer, sadefinējam noteikumus un nebūs nepareizu konstrukciju kodā. Ar snifferi kods var būt ļoti strikti konstruēts. Un ar laiku dažādi PHP stiķi un niķi jau kļūst zināmi. Gadās pa kādam WTF momentam, bet atļaušos uzskatīt ka tas tā ir katrā valodā. Ja kāds atļaujās teikt, ka ar PHP nevar taisīt kvalitatīvu produktu, tad, piedodiet, bet šis cilvēks vienkārši nav tik tālu izaudzis, lai saprastu ka kļūdās. Iespējams, ka citās valodās var visu vēl smukāk uztaisīt, neesmu eksperts, lai to zinātu. Bet ir skaidrs, ka arī ar PHP to var izdarīt. Turklāt ātri. Turklāt gala produkts ir viegli piemērojams lietošanai pie lielām slodzēm. Ja kāds uzskata citādāk, satiksimies pie alus vai kafijas un pastāstīšu kāpēc tu kļūdies.

Par sevi varu teikt, ka savulaik par PHP esmu lamājies, bet sen jau ir skaidrs, ka no PHP atteikties nedomāju. Protams, zināšanu paplašināšanai gan jau nedaudz apgūšu arī Python un citas valodas. Taču neredzu nevienu iemeslu kādēļ lai es tuvākajos gados atteiktos no PHP. Turklāt lieli projekti jau nav vairs tikai PHP. Tas komplekss pasākums – PHP, datu bāzes (relāciju un NoSQL), JS (klienta un servera pusē) utt., utjp. Un PHP kā starpnieks starp visiem šiem ir labs.

Kopsavilkums: Ar PHP viegli taisīt drazu; daudzi drazu ir taisījuši, taisa un taisīs; PHP ir piemērots lieliem projektiem un tie kas uzskata ka nav piemērots, jūs maldāties (viss ko jūs varat apgalvot ir tas, ka jūs vai jūsu komandas biedri nemācēja PHP pareizi pielietot); iespējams ka valoda X ir elegantāka par PHP, bet tas nenozīmē ka pareizi pielietots PHP ir slikts.

P.S. Ja kāds komentāros sāks ielaisties bezjēdzīgā trololo, es neiesaistīšos.

flattr this!


23 Comments

  1. Sandis
    Posted 03.05.2012 at 00:58 | Permalink

    Tēma nodrāzta no spaļa līdz asmenim. Tratatatatāāā

    • Posted 03.05.2012 at 01:04 | Permalink

      Protams. Bet tagad man vismaz ir vieta uz kuru norādīt, kad gribēšu kādam izteikt savu viedokli pie nākamā ranta, kurš noteikti sekos.

  2. Edgars
    Posted 03.05.2012 at 08:15 | Permalink

    Cerams, šis nav bezjēdzīgs trololo.

    Oriģinālais rants jau nenoliedz, ka ar PHP var taisīt labus produktus – http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/, bet gan lielākoties norāda uz to pašu, ko tu saki – “nekonsistence funkciju parametros, dažādas backward compability lietas (t.i. – saderības vārdā ilgi jo ilgi tiek atbalstītas nejēdzības) un citi brīnumi” un uzskaita gļukus.

    Un tā rezumē ir, ka PHP nevajag taisīt projektus, jo ir taču citas, labākas valodas ko lietot, kam arī lielākoties piekrītu (PHP ir gan viena stiprā puse – muļķu viegla projekta palaišana uz servera).

    P.S.
    “Gadās pa kādam WTF momentam, bet atļaušos uzskatīt ka tas tā ir katrā valodā.” – citās valodās tomēr ir mazāk šo momentu. Tā intereses pēc, kuras valodas vēl bez PHP pārzini?

    • Posted 03.05.2012 at 16:07 | Permalink

      Tur tā lieta, ka nepiekrītu ka nevajag taisīt. Es neesmu vēl saskāries ar nevienu lietu, kuru PHP nevarētu norealizēt (paturot prātā atbildības sfēras, kuras šai valodai ir jārisina). Daudzas no uzskaitītajām lietām ir problēma iesācējiem, bet ne pieredzējušiem cilvēkiem. Es pats pirms aptuveni 4 gadiem rakstīju (šajā blogā, vari pameklēt), ka programmējot PHP cilvēks var sabojāt programmēšanas stilu un ka tā nav labākā izvēle pirmajai valodai. Bet, ja ir atbilstošas zināšanas, tad tā nav nekāda problēma. Un daudzi mīnusi ir viegli novēršami jau IDEs līmenī (funkciju parametru secība utt.), kā arī tādas lietas kā mainīgo tipi un typecast ir nevis liels mīnuss, bet pluss, ja saprot kas tur notiek.

      Par – ‘P.S.’ – rakstā pāris reizes uzsvēru ka citas valodas nepārzinu (nedz Ruby, nedz Python, nedz Perl, nedz kādu citu). Tas ir vairāk pieņēmums no sērijas, ka programmēšanas valodas, gluži tāpat kā jebkura cita programma mēdz saturēt kļūdas, kuru rezultātā rodas WTF momenti.

      • Edgars
        Posted 03.05.2012 at 16:50 | Permalink

        Ok, pārformulēšu.

        Nevajag mācīties PHP un tajā taisīt kaut ko jaunu.

        Ja vienīgais, ko zini un ar to pelni $ ir PHP, tad jau nekas daudz neatliek. Un tad jau arī to jēgu mainīt grūtāk saredzēt.

        • Posted 03.05.2012 at 17:06 | Permalink

          Šis formulējums ir ļoti tuvu tam, kam es varētu piekrist. T.i. – ja tagad kāds jauns tips sēž un neko no PHP nezinot domā – mācīties vai nemācīties PHP, tad varu teikt tā: a) Ja ir kāda pieredzējusi persona kas var no A līdz Z iemācīt, tad nav nekāda vaina un var mācīties (t.i. – nedrīkst ļaut personai nokļūt spageti pasaulē un ir jāiemāca tās PHP specifikas kuras ir tiešas “typecast” un citu joku rezultāts”; b) Ja tādas personas nav un tips pats studēs pa grāmatām, manuāļiem, koda piemēriem, forumiem utt., tad PHP nav un nevar būt labākā izvēle pirmajai valodai;

          Un par to ‘nekas daudz neatliek’. Varētu jau saņemties un iemācīties to pašu Python, bet nav īsti jēgas lai mainītu “skaistuma” dēļ. T.i. – ja es esmu labs šajā laukā, tad kādēļ man to visu mest zemē, lai sāktu no (teju) nulles? Nav tam īsti pamatojuma. Un normālas kvalifikācijas PHP programmētājs jau sen vairs nav tikai plika PHP programmētājs – viņš ir persona kas orientējas protokolos, orientējas OS, orientējas klienta puses lietās (CSS/HTML/JS), orientējas kešošanas stratēģijās, kādā key-value datu glabātuvē, automatizētos testos, slodzes balansēšanās un skeilošanā utt. Kā redzams PHP ir daļa no arsenāla. Kāpēc lai to mestu nost, ja viņa smuki dara to ko vajag. Pilnīgi iespējams, ka Python var izdarīt lietas labāk, bet man pietiek. Analoģija būtu – man ir kaut kāds Asus dators, kurš labi pilda savu darbu, reizēm Windows uz viņa uztaisa kādu brīnumu, bet vai tādēļ man viņu tagad mainīt pret Mac, nu nezinu gan.

          Kaut kā tā.

          • cuu508
            Posted 03.05.2012 at 19:04 | Permalink

            “Kā redzams PHP ir daļa no arsenāla. Kāpēc lai to mestu nost, ja viņa smuki dara to ko vajag”

            Aizmirst prasmes nebūtu prātīgi, bet pamēģināt citas valodas, bibliotēkas un paradigmas ir vērts gan. Kā saka, kad tavs vienīgais darbarīks ir āmurs, viss izskatās pēc naglas. Visu smuki dara, jā, bet citreiz ar, teiksim, urbi var sanākt vieglāk, ātrāk un akurātāk :-)

  3. Posted 03.05.2012 at 09:39 | Permalink

    Ja nepārzini nevienu citu valodu, tad kāda jēga kaut ko salīdzināt, analizēt un aizstāvēt?
    Pastrādā ar ruby/python pāris gadus un tad parunāsim :)

    • Posted 03.05.2012 at 15:59 | Permalink

      Lasīji vai ar acīm pārskrēji pāri? Es neko nesalīdzināju.
      Un tava loģika ir – “tas nekas ka garšo skābais krējums, paēd majonēzi un gan jau krējumu vairs neēdīsi”? Vari neatbildēt, jo jūtu ka šeit būs kārtīgs trololo un nav jēgas tālāk neko diskutēt.

      • Posted 03.05.2012 at 21:42 | Permalink

        Kā tu zini, ka tev garšo krējums, ja neesi ēdis majonēzi?

        PHP, protams, var lietot šad tad, bet kaut kam nopietnam es neieteiktu.

        Programmētājs nav tas, kurš pārzina visas trulas PHP sortēšanas funkcijas, bet tas, kurš prot ražot kvalitatīvu kodu. Un ar PHP to darīt ir grūti.

        Ar kvalitatīvu es saprotu tādu kodu, kuru var viegli modificēt, mainīt, attīstīt un papildināt.

  4. Uģis
    Posted 03.05.2012 at 13:47 | Permalink

    Tieši šodien uzpeldēja lūk, šāds raksts par PHP slikto uzbūvi. Ja nu, kāds PHP nīdējs arī grib uz kaut ko atsaukties

    • Posted 03.05.2012 at 16:01 | Permalink

      Šis ir tieši tas raksts, kura dēļ pēdējās nedēļās daudzos forumos, blogos utt. panesās sarunas par “fujīgo” PHP. Ne pirmais, ne pēdējais. Bet jā – viens no labākajiem savā lauciņā.

  5. Mr.Key
    Posted 03.05.2012 at 19:53 | Permalink

    Komiski, ka saite uz to jocīgo rakstu ielikta divreiz – acīmredzot, kāds raksts, tādi fani-komentētāji. (Nav pieklājīgi ielikt saiti, par kuru cits jau ir runājis, nepieminot, ka tā jau bijusi pieminēta diskusijā).

    • Posted 03.05.2012 at 19:56 | Permalink

      Nav tik traki. Man visi komentāri iet caur moderēšanu. Tā jau vairākus gadus (paldies troļļiem). Un šajā gadījumā bija tā, ka moderēšanā bija kādi 3 komentāri, 2 no kuriem bija ar saiti.

  6. PiRX
    Posted 03.05.2012 at 22:56 | Permalink

    Pastāv uzskats, ka labai programmēšanas valodai (ekosistēmai), programmētājs būtu jāvirzā uz tā saucamo “pit of success”. T.i., būtu jābūt tā, konstruētai, lai programmētājam “neienāktu prātā”, rakstīt sliktu/nepareizu kodu.

    Spriežot pēc manas pieredzes ar PHP un Tevis rakstītā – PHP neved programmētāju uz “pit of success”, ergo PHP nevar uzskatīt par labu programmēšanas valodu.

  7. Posted 04.05.2012 at 01:31 | Permalink

    Agrāk darbojos ar pārsvarā ar PHP, bet pēdējā laikā apgūstu Ruby on Rails. Endij, iesaku paskatīties, kas tas ir par zvēru. Tu raksti: “Tas komplekss pasākums – PHP, datu bāzes (relāciju un NoSQL), JS (klienta un servera pusē) utt., utjp. Un PHP kā starpnieks starp visiem šiem ir labs.”. Redzi Ruby on Rails kā strapnieks starp šiem visiem (izņemot PHP) ir daudz piemērotāks. To kodu, kuru agrāk rakstīju PHP varbūt mēnesi, RoR es tagad varētu dažās dienās saveidot. Un izskatās, ka RoR ved programmētāju uz “pit of success”.

    Neteikšu, ka esmu pieredzējis RoR programmētājs, bet redzu, ka daudzas labās prakses lietas, kuru sūri grūti apguvu programmējot PHP bieži vien ar mēģinājumu un kļūdu metodi, ir iekļautas RoR by default.

    • G
      Posted 05.05.2012 at 20:35 | Permalink

      Kas tā par funkcionalitāti, kuru ar PHP jāraksta mēnesi, bet ar RoR var tikt galā dažās dienās? Nav arī korekti salīdzināt PHP ar RoR, jo PHP ir plika programmēšanas valoda, bet RoR – freimworks.

      • Posted 05.05.2012 at 23:43 | Permalink

        Jebkas ar sarežģītāku datu struktūru. Konkrēti biju domājis kādu sistēmu, kur dati glabājās ap 30 tabulās datubāzē, turklāt atkarīgi viens no otra. Dati jāattēlo, jārediģē, jādzēš un jāatlasa.

        Zinu, ka PHP ir valoda, bet RoR freimworks (ietvars?), bet šajā gadījumā biju domājis drīzāk salīdzināt Endija piesaukto “komplekso pasākumu” ar RoR.

        • Posted 06.05.2012 at 19:13 | Permalink

          Jāpiekrīt G – salīdzināt RoR ar PHP nav īsti korekti. PHP pusē ir daudz ietvaru – atliek izvēlēties sev piemērotāko (ja vien projekta specifika atļauj izmantot kādu no esošajiem ietvariem). Bet ar ietvariem arī ir jābūt uzmanīgiem. Lielas noslodzes projektos var sanākt labu laiku veltīt ietvara pielāgšanai konkrētajai situācijai. Bet nu tas jau cits stāsts.

  8. Posted 04.05.2012 at 11:42 | Permalink

    Papēti agile toolkit. Tas paceļ php izmantošanu jaunā līmenī

  9. Lauma
    Posted 29.05.2012 at 01:39 | Permalink

    Man neliekas pareizi, ka Tu spried par PHP labumu, ja nezini/neesi nopietni lietojis citas valodas. Jo neviena valoda jau nav apbsolūti slikta, vienkārši dažas valodas ir ērtākas par citām, un ja Tu nevienu citu nezini, tad Tu nevari būt pieredzējis, ka lieta, kas Tev PHP liekas tīri ērta, kādā citā valodā ir vēl daudz ērtāka, un ja Tu šo citu valodu iemācītos, Tu, atgriežoties pie PHP izjustu kaut nelielu diskofortu par ērtību samazinājumu, ko tagad neizjūti. Mūsdienās ir ļoti daudz vienkārši strādājošu lietu, tāpēc svarīgi ir izvēlēties ērtākās, nevis ņemt pirmo, kas gadās pa ceļam.

    • Posted 29.05.2012 at 14:13 | Permalink

      Nepiekrītu. Es par PHP labumu varu spriest, gluži tāpat kā par sliktumu un abas lietas esmu izvērsis plašāk (skatīt rakstu). Es nevaru spriest par to cik labs vai slikts ir PHP attiecībā pret citām valodām un to arī nedaru. Ilustrācijai atkal pārtika. Ja es ēdu šokolādes saldējumu – es zinu vai tas ir labs vai nav labs. Es nevaru zināt cik tas ir labs salīdzinot ar, piemēram, pistāciju saldējumu, ja pēdējo neesmu ēdis. Vai arī varam ilustrēt ar auto. Es braucu ar KIA Ceed un uzskatu ka tas ir labs auto. Protams, tam ir savas nepilnības, bet es zinu arī par tā plusiem. Un es par to varu spriest pat neskatoties uz to, ka neesmu nopietni braukājis ar BMW vai Jaguar. Iespējams, ka pēc BMW man uz savu Ceed vairs negribēsies virsū skatīties, bet šobrīd pie Ceed esmu pieradis un tas savus tiešos uzdevumus veic godam. Kaut kā tā. Ja tas kādam nav saprotams, tad nedomāju ka ir jēga ieslīgt tālākās diskusijās.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>