Slozitost PHP a vyuka ve skole

Obrázek uživatele conscript89@jabber.cz
Vložil conscript89@jab..., Čt, 2007-09-06 14:47 :: | |

Dnes nam bylo ve skole zkracene vysvetleno proc se nebudeme ve ctvrtem rocniku na stredni skole ucit PHP. Bylo nam receno, ze je PHP tezke a ze neni dobre se ucit programovat na skriptovacim jazyku. Druhe oduvodneni je pravdive, na druhou stranu je ale potreba rict, ze dnesnim trendem tyto jazyky jsou a vykonem se pomalu blizi k jazykum kompilovanym. Nebudu rozebirat tento druhy argument, ale trosku popisu situaci kolem toho prvniho.

Je PHP opravdu tezke? Odpoved zni, ano, ano a ne. Trosku neobvykla, ale z meho pohledu to tak je.

Prvni duvod je ten, ze dovoluje vsemozne a tak lze napsat jedna akce tisici zpusoby (drtiva vetsina bude nehezka) a tak se stava vysledny kod casto neprehledny, nebo chybovy. Dalsi vec ktera je s timto spojena je to, ze PHP za behu nehledi na to o jaky datovy typ se jedna (pokud se sami nezeptame). Muze se tak stat ze do promenne ulozite retezec „0“, k tomuto retezci prictete cislo 5 a najednou dostanete jako vysledek cislo 5 aniz by PHP jakkoliv protestovalo. Zacatecnikovi se to muze zdat jako vyhoda, ale zbehly programator poznamena, ze tato zdanliva vyhoda vede do horoucich pekel. Pokud chce programator PHP napsat „bezpecny“ kod, musi prakticky v kazdem kroku kdy se promenna preda funkci (metode) kontrolovat jakeho je datoveho typu, jinak uzivatel aplikace dostane nehezkou chybovou hlasku, ktera je pro nej nic nerikajici a ani jej nezajima, chce totiz fungujici aplikaci.

Druhy duvod proc je PHP slozite je zase slozene ze dvou podduvodu. Prvnim je vysoky pocet funkci v samotnem zakladnim PHP. To vede k tomu, ze se nektere funkce mirne prekryvaji (napr. array_key_exists, isset) a take to ze jsou nektere deprecated (zavrzene), coz souvisi s dalsim problemem. Pokud pisete aplikaci v PHP5 s tim ze pouzivate veci novejsi nez z PHP3, nemuzete pocitat s tim, ze vam kod bude fungovat v novejsich verzich PHP (napr. 6). Jedine u ceho ma programator jistotu jsou vlastni vytvorene funkce a ty zakladni. Pokud pise objektove (jako ja), tak nevi jak se zmeni konstrukce jazyka a to, jestli jim napsany kod bude za rok fungovat. Pro tento posledni problem je PHP hodne kritizovano a me samotneho do budoucna odrazuje. Budoucnost vidim v Pythonu a jeho modulu do apache mod_python, nebo mod_wsgi.

A ted se konecne dostavam k tomu proc PHP neni slozite. Tim duvodem je temer dokonale resena dokumentace a popis funkci. K vetsine funkci jsou prilozeny i komentare jinych uzivatelu (programatoru), kteri pisi treba vlastni implementace techto funkci, jinak je rozsiruji, nebo vysvetluji nejasne oblasti. Je pravda, ze tato dokumentace v nekterych ohledech nekde pokulhava, ale porad patri mezi ty nejlepsi co jsem dodnes videl. Pokud se zajemce o PHP nauci pracovat se zakladnimi datovymi typy, nebude mu po chvili delat problem vyznat se ve funkcich v dokumentaci (bez ni to u PHP opravdu nejde) a najit tu co potrebuje.

Ja chtel na skole PHP hlavne protoze ho uz umim a tak bych se mohl flakat (coz vicemene muzu i u pascalu), ale to ze nebude mi nijak moc nevadi. Jen nevim co se budeme ucit jeste v tom pascalu (objecpascalu, Delphi, Lazarus) aby to ostatni pochopili. Ja sam o nej nemam moc zajem kdyz jsem zameren na *nixovou platformu.