Dvaja profesori z New York University sa v obšírnejšej rozprave zaoberali problémom, ktorý trápi mnohých zamestnávateľov v IT priemysle: programátorské schopnosti nových absolventov počítačových vied sa postupne znižujú. Podľa nich za to môžu úvodné kurzy Javy a skriptovacích jazykov.
Za posledných niekoľko rokov si Dr. Robert B.K. Dewar a Dr. Edmond Schonberg z NYU všimli niekoľko negatívnych trendov pri vzdelávaní nových mozgov v odboroch zameraných na programovanie. V prvom rade sa v jednotlivých študijných programoch pre študentov znižujú požiadavky na matematické vzdelanie. Vývoj programovacích schopností vo viacerých jazykoch potom študentov učí automaticky používať veľké knižnice a špeciálne balíky s kódom, akoby programovali z predpripraveného receptu[kuchárskej knihy]. Výsledným negatívom pre softvérový priemysel je nedostatočná zručnosť, najmä pre bezpečnostné a ochranné účely, ktorá je navyše prakticky na úrovni toho, čo ponúka outsourcingový priemysel. Skrátene sa to dá povedať tak, že vysoké školy (zo zamerania dvoch profesorov vyplýva, že teda najmä školy v USA) trénujú ľahko nahraditeľných IT profesionálov. Problémy so stupňom programátorskej vyspelosti absolventov už navyše naznačujú aj zamestnávatelia.
Programátori generácie Y
Problémom je údajne najmä to, že v posledných rokoch sa začala vo vyučovaní programovania presadzovať Java - ako prvý programovací jazyk, s ktorým sa študenti zoznamujú na začiatku svojho štúdia. Výber Javy za základ štúdia programovania totiž podľa dvoch profesorov priamo oslabuje programovacie schopnosti študentov, čo sa potom odráža na ich výkone v kurzoch ohľadom systémov a architektúry. Navrhujú preto vzdelávanie študentov podporiť skorým predstavením formálnych metód na začiatku štúdia, kde zároveň programovacie jazyky majú centrálnu úlohu pri vzdelávaní nových IT odborníkov.
V rámci formálnych techník by sa vzdelávanie študentov okrem iného malo zamerať na techniky, ktoré sa medzičasom vyvinuli dosť na to, aby mohli byť používané v rozsiahlych systémoch a dokážu výrazne prispievať ku spoľahlivosti týchto systémov. Ďalším formálnym prístupom, kde by študenti mohli mať lepšie vzdelanie, sú konkrétne princípy paralelného a distribuovaného programovania (menovite "model checking and linear temporal logic for the design of concurrent systems"). Poslednou odporúčanou oblasťou v rámci vzdelávania budúcich programátorov je štúdium robenia algoritmov počítajúcich s pohyblivou desatinnou čiarkou. Príliš často sa totiž vyučujúci zamerajú na MatLab a inak celú túto oblasť odignorujú (na NYU ohľadom tejto oblasti kedysi existoval povinný kurz, dnes je však len voliteľný a tak si ho vyberie príliš málo študentov).
Problémy s Javou
Java sa stala v poslednej dobe v USA najviac používaným jazykom, študenti sa mu venujú hlavne pri prvom oboznamovaní sa s princípmi programovania. Stalo sa tak azda následkom zníženia dopytu po vzdelaní počítačových programátorov medzi maturujúcimi stredoškolákmi; Java má spraviť programovanie väčšou zábavou a hlavne ho zjednodušiť. Profesori z NYU však varujú, že tento prístup má pre študentov výrazne negatívne následky. V prvom rade sa sa študentom ťažko píšu programy, ktoré nemajú žiadne grafické rozhranie; ďalej nemajú pochopenie pre vzťah medzi zdrojovým kódom a tým, čo hardvér dokáže skutočne spraviť. Nakoniec, vôbec nerozumejú sémantike ukazovateľov (resp. smerníkov), takže majú neskôr problémy s C pri systémovom programovaní.
Java totiž oproti bežnému programovaniu, kedy sú komplexné formálne procesy redukované na malú skupinu primitívnych operácií, núti programátora prehľadávať balíky (packages) a hľadať triedu (class), ktorá robí približne to, čo potrebuje. Ako to trieda "robí" však nie je dôležité. Výsledkom takéhoto vyučovania je študent, ktorý vie zostaviť jednoduchý program, ale nevie programovať. Ďalším problémom takýchto "neprogramátorov" je, že si neuvedomujú, aké požiadavky môže ich program na počítač klásť, keďže nevedia, čo bude pri volaniach spustené.
Z podobných dôvodov sa profesorom nepáči, že na školách je v prvých ročníkoch príliš veľká popularita skriptovacích jazykov (Javascript, PHP, Atlas); budúci programátori sa pomocou týchto jazykov nedokážu naučiť robenie algoritmov a rozboru výkonu. Ich učením sa programátori zároveň učia programovaciemu štýlu pokus-omyl, resp. "skúsime spustiť a uvidíme, čo to spraví".
Pre programátorov je napriek všetkým nevýhodám Java dôležitá, ale nie ako jazyk, ktorý sa učia celkom prvý. Je to hlavne kvôli porozumeniu paralelného/súbežného programovania a "sebareflexie" programu, kedy program dokáže preskúmať vlastný stav, ako aj zisťovať a meniť svoje správanie v dynamicky meniacom sa prostredí.
Skutoční programátori vedia programovať v ktoromkoľvek jazyku
Profesori z NYU si myslia, že kompetentný programátor vie programovať vo viacerých jazykoch a zároveň vie používať v rôznych jazykoch rôzne zvyklosti a "mentálne nástroje" (ako napr. určitý programovací štýl), ktoré si nacvičil pri konkrétnom jednom jazyku. Preto je podľa nich dôležité, aby programátori ovládali jazyky C, C++, Lisp a Ada. Profesori nakoniec nezavrhujú ani Javu, pre dôvody, ktoré sú popísané vyššie.
C musia programátori ovládať preto, lebo je to "strojovo orientovaný" jazyk na nízkej úrovni. Študenti študujúci tento jazyk pri ňom jasne pochopia vzťah medzi softvérom a hardvérom. C++ je dôležitý, pretože odhaľuje základné koncepty moderného vývoja softvéru. Zároveň pracuje bez "zberu odpadu" (bez automatickej správy pamäti), iba s konštruktormi a deštruktormi. Lisp je dôležitý, pretože učí programátorov funkcionálnemu programovaniu a referenčnej transparentnosti -- aj napriek tomu, že imperatívne programovanie je oproti Lisp viac intuitívne. Poznanie Lisp je mimochodom skvelou prípravou pre prácu so spracovávaním jazyka (language processing). Nakoniec Ada, hoci nie je jedným z najrozšírenejších jazykov, je profesormi z NYU považovaná za "programovací jazyk par excellence". Je to preto, lebo mnoho princípov a metód využívaných programátormi pri programovaní je vstavaných do špecifických čŕt tohto jazyka. Zo všetkého spomenieme len napríklad to, že Ada ponúka bezpečné princípy písania paralelných algoritmov už 30 rokov, kým programátori súčasnosti sa tomu v prenesenom zmysle "ešte len
začínajú učiť".
Programovacie jazyky nie sú všetkým
Dôležité je aj univerzitné vzdelanie získané popri samotných vedomostiach programovania v jednotlivých programovacích jazykoch. Študenti musia vedieť "používať matematiku" a poznať nástroje na tvorenie rozsiahlych a spoľahlivých programov, ako sme už spomínali vyššie v tomto článku. Dôraz je tu kladený najmä na spoľahlivosť programovaného softvéru, imúnneho nielen voči vlastným chybám, ale aj kyberteroristickým útokom z vonku. Dnešní programátori totiž vychádzajú zo škôl do "nového sveta", ktorý je diametrálne odlišný od toho, ktorý tu bol pred dvadsiatimi rokmi.
Zdroj: www.stsc.hill.af.mil
Súvisiace články: