Hlavní navigace

Je PHP jazyk pro amatéry?

4. 1. 2009 17:33 (aktualizováno) | Martin Jonáš

Často se setkávám s názorem, že PHP je méněcenný jazyk pro amatéry. Jazyk pro programátory, kteří nemají na opravdové jazyky jako je Java, C a podobně. Je v tomto názoru něco pravdy? Je opravdu PHP méněcenným jazykem?

V PHP pracuji už několik let. Poslední dva roky jako hlavní vývojář rozsáhlého systému Ariadne3.0 ve firmě LifeWeb. Podle mých zkušeností má PHP celou řadu výhod i nevýhod. Pokusím se tady shrnout ty hlavní.

Výhoda: Snadné zprovoznění aplikace

Oproti jiným jazykům je v PHP velice jednoduché zprovoznit existující aplikaci na novém serveru. Stačí pouze nahrát zdrojové soubory a případně upravit nastaveníé připojení k databázi a podobně. Také úprava existující aplikace za provozu je velmi snadná – stačí změnit zdrojové soubory. Jediný potenciální problém se kterým jsme se setkali je odlišnost verzí. Oproti Javě a podobným jazykům je nasazení aplikace opravdu jednoduché.

EDIT: Dle názorů pod článkem se zdá pravděpodobné, že tato moje negativní zkušenost s Javou je spíše způsobena použitým Servlet containerem Tomcat.

EDIT: Úpravou aplikace za provozu mám na mysli především její vývoj a ladění.

Výhoda: Asociativní pole

PHP má velice zajímavě řešené ukládání složitějších strukturovaných dat v podobě asocitivních polí. Jejich univerzálnost a především snadnost použití mi často v jiných jazycích chybí. V mnoha případech je práce s tímto typem dat v PHP mnohem příjemnější než v ostatních jazycích, kde je často nutné řešit velké množství činností okolo, které odvádějí pozornost od samotného řešeného problému.

EDIT: V mnoha jiných dynamickýcj jazycích je práce s daty srovnatelně jednoduchá. Například uvedu Python.

Nevýhoda: Nekoncepčnost jazyka

Jednou z hlavních nevýhod PHP vidím v jeho poněkud neukázněném vývoji. Jednotlivé funkce nedodržují společnou koncepci. Nejvíce do očí bijícím příkladem je pojemnování funkcí, kde je používána celá řada stylů jako například jméno_funkce i JménoFunkce. Podobné funkce mají často odlišné pořadí parametrů a podobně. Jde o zřejmý protiklad knihoven v Javě, u nichž je na první pohled patrné, že byly vytvářeny s rozmyslem a podle společných zásad.

Výhoda: Množství knihoven pro nejčastěji používané činnosti

V PHP je již v základu pokryta velká škála činností, na které se při vývoji webových aplikací nejčastěji narazí. Často se mi v jiných jazycích stalo, že jsem narazil na složitý problém jehož řešením jsem strávil i několik hodin, a který by se v PHP dal vyřešit několika řádky kódu. Nejde ani tak o šíři dostupných knihoven jako o to že přesně vystihují to co je často třeba.

Nevýhoda: PHP nenutí psát kvalitní kód

PHP po programátorovi nevyžaduje, aby jeho kód byl kvalitní. Umožňuje velkou škálu "špinavých triků, které mnozí s oblibou využívají. Výsledný kód je pak ale mnohdy až nečitelný (nepříjemná zkušenost s několika externími PHP programátory). Zejména pro začátečníky myslím není PHP příliš vhodné, protože je nijak nevede k vytvoření správných programátorských návyků.

Výhoda: Hosting

Jednou z největších výhod PHP je jeho široká podpora na hostingových serverech. Oproti jiným možnostem serverového scriptování je PHP jednoznačně nejrozšířenější.

Nevýhoda: Výkon

Jednou z hlavních nevýhod PHP pro vysoce zatěžované aplikace je jeho výkon. PHP je interpretovaný jazyk a je tedy překládáno vždy znovu pro každý příchozí požadavek (existuje ale několik optimalizátorů, které podporují ukládání přeloženého byte-code – ovšem podle našich testů ani tak není nárůst výkonu příliš patrný). Hlavním problémem, alespoň z mého pohledu je, že neexistuje žádný jednoduchý způsob jak sdílet data mezi jednotlivými požadavky. Dochází pak k situaci, kdy jsou stejná data zbytečně dotazována a zpracovávána současně několika příchozími požadavky současně.

EDIT: Nevýhoda: OOP

PHP sice nabízí možnost objektově orientovaného programování, ale jeho možnosti zdaleka nedosahují možností čistě objektových jazyků.

To je prozatím vše na co jsem si vzpomněl. Pokud přidáte nějaké vlastní postřehy budu rád a začlením je do tohoto výčtu.

A závěr?

Podle mého názoru je PHP mladý jazyk s velkým potenciálem. Musí ale překonat celou řadu dětských nemocí (nekoncepční vývoj, nejednotnost, …) než se bude moci srovnávat například s Javou. Přesto myslím že je na správné cestě a jeho samotná koncepce je velice dobrá. Právě vyvíjené PHP6 nás může příjemně překvapit. PHP se nehodí pro každou aplikaci, ale myslím, že rozhodně má širokou škálu využití. Především podle mě nezáleží ani tak na samotné jazyku ale především na programátorovi a jeho schopnostech jazyk správně využít.

EDIT: Protože se zdá, že jsem se nevjádřil zcela jasně ještě něco dodám. Dle mého názoru je PHP jazyk se spoustou chyb a v současném stavu rozhodně není srovnatelný s jazyky jako je Java, Python  a podobně. tyto jazyky jsou na mnohme vyšší úrovni. Podle mého názoru je ale koncepce na které je PHP postaveno poměrně rozumná a pro řadu aplikací výhodná – především menší projekty.