PHP fuj un pē vai tomēr nē?

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.