Je PHP špatný a zavrženíhodný jazyk?

Kategorie:

Já osobně si myslím, že ne. Je to programovací jazyk jako každý jiný a špatné světlo na něj vrhají především začínající programátoři v PHP, kteří se bez potřebných znalostí a zkušeností pouští do velkých projektů. Pokud se to děje ve firmě, kde mají po ruce zkušeného kolegu, který jim koriguje chyby a přitom se od něj učí postupy, je to OK, ale pokud se pustí rychle do světa komerčního vývoje, je to průšvih.

PHP je v tom celkem nevině, špatná aplikace se dá napsat v libovolném programovacím jazyce, dokonce je pravdou, že ani sebelepší a sebegeniálnější návrh programovacího jazyka nedokáže zaručit, že aplikace v něm napsané budou bezchybné. Někdy budou chyby patrné hned (špatná práce s pamětí v C/C++), jindy se projeví třeba až od určitého zatížení v provozu, přičemž ta druhá varianta je obvykle podstatně dražší.

Reklama

Tím základním kamenem při psaní jakéhokoliv programu jsou algoritmy a dnes i správný návrh databáze. Programovací jazyk jako takový je jen vyjadřovacím prostředkem, pravda i ten umí situaci notně komplikovat, protože psát GUI v čistém jazyce C bude opravdu nepříjemné, zatímco Javovský Swing se píše skoro sám .

PHP nepovažuji za vhodný první jazyk, protože nenutí programátora k nějaké struktuře kódu a má dost konstrukcí, které sice dělají co člověk potřebuje, ale pokud jim alespoň trochu nerozumí, hrozí to průšvihem. Za ideální první programovací jazyk považuji Python, který je také dynamický, takže odpadá cyklus napsání->kompilace->spuštění, ale vynucuje syntaktická pravidla a většina vývojářů je schopná v něm rychle psát programy, jen s referenční příručkou otevřenou v prohlížeči.

PHP má nespornou výhodu ve velmi snadném deploymentu aplikací, v 99% případů stačí jen změnit připojení na databázi a případně upravit nastavení absolutních cest, pokud jste jako já opustili nepohodlí (nebo spíše občas zmatečnost) relativní adresace. Občas lze zakopnout o nepřítomnost některých funkcí, které administrátoři z bezpečnostních důvodů vypnuli, ale to je řešitelné, tím že si vývojář napřed ověří dokumentaci z hostingu, kde bude aplikace umístěna.

To že PHP vývojáře k ničemu nenutí a že lze aplikaci v PHP vcelku zprasit, přesto bude nějakým způsobem fungovat, je kamenem úrazu, díky němu se programátor, který jako první zvolil PHP, nemusí nikdy dostat dále. Potom je „radost“ po takovémto vývojáři převzít projekt, protože zákazník chce změnit/přidat funkčnost, ale původní autor je už nedostižný (třeba proto, že dostudoval, živí jej něco jiného a na programování už prostě nemá čas). Slovo radost bylo myšlené ironicky, protože téměř vždy takovéto převzetí projektu znamená jeho kompletní přepsání, jakákoliv úprava zprasených zdrojových kódů je naprosto vyloučená.

Bohužel snadnost zprovoznění webových aplikací v PHP, masivní dostupnost hostingu pro PHP i poptávka po webech a webových aplikací láká mnoho začátečníků. Dovede si někdo představit, že by program pro mikrokontroler psal člověk, který před 14 dny poprvé otevřel učebnici jazyka C? A přesně toto se kolem webových aplikací děje, protože začátečník (obvykle student, ale tím se jich nechci nijak dotknout) bude dělat za cenu, která pomalu ani nedokáže zaplatit elektřinu pro jeho pracoviště.

Na jazyk PHP čtu hodně nadávek, ale myslím si, že řada z nich je naprosto neoprávněných. Ano má prapodivně vedený vývoj, který občas nemá snad ani náznak koncepce a není rychlý, jako konkurence kde se překládá do byte-code, ale pro většinu webových aplikací je dostatečný. V PHP se dají napsat i opravdu veliké projekty, je to celé jen o přístupu a vědomostech o programování, jako takovém, ve volbě PHP jako jazyka problém nevidím.

Komentáře

8 komentářů: „Je PHP špatný a zavrženíhodný jazyk?“

  1. Dalibor avatar
    Dalibor

    Když jsem potřeboval udělat svoji firemní databázi a nechtěl jsem používat MS Access, hledal jsem radu, jak to udělat co nejjednodušeji. Vůbec jsem neměl ani potuchy o programování. Někdo mi poradil právě PHP (+ MySQL), koupil jsem si pár knížek, strávil s nimi jednu dovolenou a byl jsem docela spokojen. Nevím, jak pro profesionála, ale pro laika, který si udělá svůj jednodušší informační systém je to program docela vhodný. Je z laického hlediska logický a funguje podle představ. 🙂 Jsem rád, že něco takového existuje.

  2. MaReK Olšavský avatar

    Dalibor: Jedna věc je napsat něco pro „vlastní potřebu“ a druhá je, pokud neumíš pořádně programovat, ale snažíš se to prodat. Ta skupina neznalců bohužel vrhá velmi špatné světlo na jazyk, protože pak slýchám, že kdo dělá v PHP je neznalec programování. Já jsem začínal na naprosto odlišné úrovni a PHP byl jen další jazyk, další lopata.
    Čím déle se programování věnuji, tím více vidím, že pro většinu běžných jazyků mi stačí dokumentace a jsem schopen psát relativně rychle. Po 5 letech jsem se vrátil k Javě, trochu tápu v některých částech, ale logika je pořád stejná a kód mi přibývá jen o málo pomaleji, než ve VisualStudiu, za nímž sedím v práci. Jde o pochopení struktury zápisu a pak mít jen dokumentaci ke knihovnám pro databázi, gui, …

  3. Dalibor avatar
    Dalibor

    Je to tak, pokud chce člověk programovat za peníze, musí o tom mnohem víc vědět. Fakt je, že pokud se jazykem (nebo jazyky) intenzivněji zabývá, může se naučit rychle. Také si myslím, že v PHP se dá udělat dobrá aplikace, ale právě zdánlivá jednoduchost jazyka svádí k tomu, aby se do toho pustil každý ..

  4. PANTHER avatar
    PANTHER

    Zaujímavý článok. Ja osobne som sa doteraz s ohováraním PHP nejako extra nestretol (pokiaľ vynechám seba, keď som nevedel nájsť chybu vo vlastnom scripte), ale drahých „programátorov“ som stretol už niekoľko. Ja ich proste nechápem, ako môžu niekomu predať „aplikáciu“, ktorá je deravá ako … za také nehorázne peniaze.

    Prečo by PHP nemohol byť prvý jazyk? Je síce pravda, že pre začiatočníka nie je najľahší, ale pokiaľ sa do toho už dostane, tak to ide jedna radosť. Ja osobne som volil po XHTML a CSS hneď PHP (boli tam aj krepotiny z JavaScript-u, ale to je pre mňa low-level jazyk). Uznávam, zo začiatku som mal problémy … hlavne s tým, že som nevedel pochopiť, ako niektoré aplikácie môže fungovať. Nuž, prax urobí svoje; podľa mňa netreba priveľmi strkať hlavu do teórie, ale sústrediť sa hlavne na prax. Ono je to celé o tom – previesť svoje myšlienky do kódu.

    A späť k amatérom. Snažím sa čo najviac využívať free/open-source zdroje, ktoré aj podporujem; PHP je moje hobby (vzhľadom na môj vek), preto scriptujem len keď ma „kopne múza“ a za žiadne svoje projekty som si ešte nikdy nevypýtal ani korunu (/euro). Nesmierne by som sa hanbil, keby som pre niekoho (za peniaze) vytvoril aplikáciu, ktorá by nebola dostatočne zabezpečená a ktorá by kvôli tomu mohla byť neskôr aj zneužitá.

  5. goldenfish avatar
    goldenfish

    cau Marku,

    PHP je a i neni. Neni urcite pro lidi, co delaji neco mensiho. Rychle bez vetsiho ohledu na budoucnost a kvalitu maji neco produkovat.
    Python je vysvobozenim pro PHP-eckare (sam v nem musim neco lehce ted bastlit).
    Jenomze, jak dorustas, tak potrebujes jine veci. Nezajima Te, o kolik radku napises vice a ani nemeris pocet napsanych radku. Zacnes se hrabat v projektech, co maji 1-10MB zdrojaku. Potrebujes IDE.
    Pokud neco ojebes v kodu, protoze Ti to jazyk dovoli, tak za to potom tvrde zaplatis. On taky malokdo pocita, ze v projektu jsou nejake chyby a ty potom za behu opravujes, i kdyz je po hlavni fakturaci. Nepotrebujes objevovat algoritmy nebo navrhove vzory. Potrebujes jazyk, ktery ma podporu-knihovny a ktery se nemeni ze dne na den.
    V tu chvili zjistujes, ze ty skvele a rychle napsane skriptiky Ti jsou k nicemu a ne-li, ze se vyvoj zastavi. Zjistis, ze nekonkurujes cenou 50Kc/hod, ale ze pod 150Kc/hod uz nedelas a ze Tvuj prinos je
    v tom, ze to vubec naprogramujes a ze to chodi.
    Ono nejde ani o idealni jazyk, ale spise o optimalni.
    Osobne radeji kodim objektove a k tomu par veci delam deklarativne. A idealni je pro me v tomto Java. Je sice fajn, ze vetsina lidi, co se prezentuje na webu, dela PHP a Python, ale v praxi je to o necem jinem.

  6. goldenfish avatar
    goldenfish

    Jinak Marku prakticky priklad. Jedna z velkych brzd Linuxsoftu co se tyce vyvoje se jmenuje PHP. Jo, psal jsem to a ne podle standartu a modernich postupu a tak. A v PHP ani nijak excelentne neprogramuj. V praxi zjistuju, ze jsem si na PHP pekne nabil tlamu. A i kdybych se PHP doucil, tak se dany problem nevyresi. Bude to kulhat opet na jednu nohu misto na dve ted.

  7. rob avatar
    rob

    PHP vek skoncil, nastal cas Javy. Nekdo bude donekonecna namitat, ze java je pomala a nabira zbytecne moc balastu, ale zkuste si napsat neco vetsiho v PHP. Zesilite 🙂

    1. MaReK Olšavský avatar

      Rob: Nemyslím si, že zešílíte, primární je jak píšete a jazyk je velmi sekundární záležitost. I v javě se dá psát neskutečně prasecky. Bude pro Vás překvapující, že Facebook je v PHP? Pokud jej použijete jako dynamický jazyk pro weby, jde o dobrou volbu, které velmi nahrává snadnost volby webhostingu (tam Java zrovna dost ztrácí), na desktopové aplikace jsou jiné platformy/jazyky. Rozumný programátor volí nástroj adekvátní tomu co dělá, sportovní auto si také nekoupíte místo rodiného kombi.