Programátorské schopnosti absolventov klesajú, problémom je

Java v prvaku spravny krok?

Ano
3
43%
Nie
4
57%
 
Celkom hlasov : 7
<<

guest126

Príspevky: 272

Registrovaný: Štv Jan 10, 2008 1:18 pm

Bydlisko: beyond the rim

Poslať Štv Jan 17, 2008 2:20 pm

Programátorské schopnosti absolventov klesajú, problémom je

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 funkčnému 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.
<<

bwpow

Príspevky: 634

Registrovaný: Str Nov 22, 2006 11:19 am

Bydlisko: Košice

Poslať Štv Jan 17, 2008 3:02 pm

V takychto pripadoch je zakladom slusnosti uviest odkaz na zdroj.
Inak s clankom suhlasim.
Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity
<<

alef0

Site Admin

Príspevky: 621

Registrovaný: Štv Nov 16, 2006 8:57 am

Poslať Štv Jan 17, 2008 5:17 pm

Odporucam do pozornosti tiez prilahly flamewar na TheServerSide a odkaz na prapovodny zdroj.

Hlavne preto, ze bulvarny nadpis je zalozeny na bulvarnom nadpise na SlashDote, ktory cituje originalny clanok.

Inak sa debata a clanok redukuju na klasicky problem "Ktory jazyk zvolit do prveho semestra?" o ktorom sa popisalo uz tony a tony studii a ziadna sa neukazala ako spasitelska.

Da sa len polemizovat o tom, co zvolit do prveho semestra, ako zacat (ci zdola nahor alebo zhora nadol) - kazdy styl ma svoje vyhody a nevyhody. A to zavisi od toho, pre koho sa vychovavaju odbornici - alebo ci pre potreby IT, ci pre potreby akademickeho sveta.

Je otazkou, nakolko su autori ovplyvneni, pretoze obaja su zo spolocnosti AdaCore (vid reklamny blok Why Ada matters) :-).
Naposledy upravil alef0 dňa Štv Jan 17, 2008 5:43 pm, celkovo upravené 1
Lorem ipsum dolor sit amet.
<<

guest126

Príspevky: 272

Registrovaný: Štv Jan 10, 2008 1:18 pm

Bydlisko: beyond the rim

Poslať Štv Jan 17, 2008 5:41 pm

bwpow píše:V takychto pripadoch je zakladom slusnosti uviest odkaz na zdroj.
Inak s clankom suhlasim.


Dakujem za upornenie a uvernenie zdroja.

Btw, odkaz na ten link mi poslal clovek, guru v jave a linuxe, ze on o tom hovori cely cas. Robi aj pohovory a prejde u neho kazdy 50 uchadzac...

Pre celkove pochopenie programovania, spolupraca HW & SW, sprava pamate, by som na odbore Informatika navrhovala zacat naozaj s C.

Citujem spominaneho cloveka:
Kazdopadne ked to riesi doma vo volnom case nejaky ekonom nech si pouziva co chce. Programator by to mal poznat od piky


Co by imho absolvent informatiky mal absolvovat, aspon zakladny semester v C. Potom nejaky objektovy jazyk, C++, Java, C# aby vedel aj objektovo + potom vsetkom nejaky algoritmicky semester. Myslim, ze to je pre studenta slusny zaklad a motivacia. Ked chce, tak sa v tom"namaka". Ked nie tak nie. Opat si dovolim trvdit, informatik bez toho nie je informatik. A samozrejme nejake TVY, automaty siete, databazy a mozno este par veci. Nech ma prehlad a vie co ho bavi.

Na margo nazorov bwpow. Ma pravdu, tie kredity su nezmysel vo svojej podstate. Maju vyhodu iba v tom, ze student moze ist do dalsieho studia aj ked nespravil jeden predmet. Lebo ak ma TVY 4 kredity a Tabulkove kalkulatory 4 kredity tak ... Ale lepsie s nimi ako bez nich. Na druhej strane poznam aj cloveka matika, ktory si dal namiesto Teorie mnozin s Bukovskym Tabulkove kalkulatory zo Studenovskym. Ale to uz je vec osobnych prioryt.
<<

alef0

Site Admin

Príspevky: 621

Registrovaný: Štv Nov 16, 2006 8:57 am

Poslať Štv Jan 17, 2008 7:16 pm

Btw, odkaz na ten link mi poslal clovek, guru v jave a linuxe, ze on o tom hovori cely cas. Robi aj pohovory a prejde u neho kazdy 50 uchadzac...

O com "tom"?

Na margo nazorov bwpow. Ma pravdu, tie kredity su nezmysel vo svojej podstate. Maju vyhodu iba v tom, ze student moze ist do dalsieho studia aj ked nespravil jeden predmet. Lebo ak ma TVY 4 kredity a Tabulkove kalkulatory 4 kredity tak ... Ale lepsie s nimi ako bez nich. Na druhej strane poznam aj cloveka matika, ktory si dal namiesto Teorie mnozin s Bukovskym Tabulkove kalkulatory zo Studenovskym. Ale to uz je vec osobnych prioryt.

Prosim prosim, toto si rieste v inej teme.
Lorem ipsum dolor sit amet.
<<

guest126

Príspevky: 272

Registrovaný: Štv Jan 10, 2008 1:18 pm

Bydlisko: beyond the rim

Poslať Štv Jan 17, 2008 9:11 pm

alef0 píše:
Btw, odkaz na ten link mi poslal clovek, guru v jave a linuxe, ze on o tom hovori cely cas. Robi aj pohovory a prejde u neho kazdy 50 uchadzac...


O com "tom"?
O tom, co sa pise v tom clanku. Ze 98% programoatov nie si programatori ale citujem: "Pojedaci kolacov".
<<

alef0

Site Admin

Príspevky: 621

Registrovaný: Štv Nov 16, 2006 8:57 am

Poslať Štv Jan 17, 2008 9:25 pm

Neviem, ci som ochotny suhlasit a uverit takym pausalnym tvrdeniam a toboz vytahovat percenta z brucha. Rad by som vedel, kto to bol a preco si za takym nazorom stoji.

Programatorov su hordy a je tazke rozlisit, kto je kto. Je niekto, kto ovlada Spring, JSF a Hibernate a netusi, co je smernik a heapsort, mensi koder ako niekto, kto dokaze vyrabat drivery k Linuxu, ale jeho kodu rozumie len on a traja dalsi ludia?

IT je dostatocne velke, aby pojalo i jednych, i druhych, i code monkeys i precitenych expertov, ktorych mena rezonuju v komunite.

Nastastie.
Lorem ipsum dolor sit amet.
<<

guest126

Príspevky: 272

Registrovaný: Štv Jan 10, 2008 1:18 pm

Bydlisko: beyond the rim

Poslať Pia Jan 18, 2008 3:12 am

Ok. Suhlasim. Ale predsa Java,Spring, JSF ci Hybernate, na to nepotrebuje vysku. Nepotrebuje analyzu, ci TVY ani automaty. A ked nevie co je heapsort a smernik tak asi ani nema. Myslim, ze na to mu kludne staci kniha, cas, comp, net a anglina (a kazdonne veci ako strava,aspon infuzia, opak stravy, mozno by sa dalo aj bez hygieny... ). A za pol roka je macher.

Ja len hovorim, ze ak sa uz uci programovanie na vysokej skole na odbore informatika, nech sa uci poriadne tvrdo surovo a s nahladom do piky. Imho, programovanie da pozovat za silnu cast informatiky, ved kvoli tomu mame TVY ci automaty a .... Hm, ucit high level jazyk hned od zaciatku sa mi vidi trochu neblahe pre informatika. Neviem ako sa teraz u nas uci java, ale urcite si nepredstavujem informatika ako objekt nepoznajuci pointer.

Otazka je, kto je informatik. Ja si ho predstavujem ako cloveka (naozaj ako cloveka, ziaden robot ani opica :)), ktory ma prehlad o veciach, slusny zaklad matematiky, vie citat vedecke clanky, pozna programovanie z nahladom do vsetkych utrob, pozna veci ako TVY, pozna sietove vrsty a protokoly (teda nerobi mu problem navrhnut a spravit LAN), databazy, ako funguje operacny system a jeho adminstracia, samozrejme linux...(inac predmet OSY u nas je na ....) a vie nakodit nejaku webovu stranku. Podla zaujmu moze poznat neuronky, kryptologiu ci grafiku a nejake dalsie advacned veci. Z programovania vie o com je C, ako sa v nom robi a ma v nom odkodene nejake systemove veci, vie citat assembler, a pozna aj high level jazyk ako Java, C#... . Samozrejme z poznanim zakladnych algoritmov. A v niektorej z tych veci je expert. Tak si ja predstavujem informatika s titulom. Preto som isla na vysoku skolu, odbor informatika. Keby som chcela vediet iba to a to, tak by som sa v tom poriadne nacvicila a ostatne veci by ma nezaujimali, ziadna ciastocna rekurzia atd...
Teoretickeho informatika si predstavujem ako matematika, ktory vie z informatiky to, co potrebuje.

Moje predstavy a asi znacne lisia od reality :) Napr. medik skonci vysku, tak vie medicinu a v niecom ma atestaciu. Skonci informatik u nas, tak ja vidim otazku. Vie nieco???

Nech ked skonci clovek informatiku, nech ma pocit ze nieco naozaj vie. Ja osobne, mam pocit ze neviem nic. 3 semestre analyzy, par matik bokom, ale nie som maticka a netrufam si povedat: "Viem matematiku alebo viem Teoriu mnozin". Ak niekto skoci grafy tak grafy. Studujem dlhsie informatiku, paz + nejaka java, netrufam si povedat ze viem programovat. Databazy, ok mam prehlad. Siete s JJ stoja za to. Pri OSY si ani netrufnem povedat, ze som ten predmet absolvala. Som rada ze som mala matiku aj volitelnu. TVY mi dalo strasne vela. Vtedy som prvy krat mala pocit, ze naozaj uz mam naznak nejakeho poznania. Ale to programko a OSY takmer nic. Odkodila som skoru kazdu domacu, ale naznak poznania, niecoho noveho neprisiel, netrufam si povedat ze mam nejaky prehlad o programovani. Na OSY som sa tesila, no radsej bez komentara. Pravdepodobne skoncim u nas informatiku, ale netrufnem si povedat, ze som informaticka :(
<<

alef0

Site Admin

Príspevky: 621

Registrovaný: Štv Nov 16, 2006 8:57 am

Poslať Pia Jan 18, 2008 6:16 am

Pokial viem, tak medik potrebuje a) prax b) atestacie. Neviem, ci absolvovaneho medika rovno poslu operovat (opravte ma ak sa mylim). A na atestacie je potrebny netrivialny cas po skonceni skoly.

Pravnici po skonceni skoly tiez robia adjunktov a az potom nejakej dobe (3 roky?) advokatov a spol.

Ano, je otazka, kto je to informatik. Tiez suhlasim s tym, ze informatik by mal mat prehlad o Computer Science. Takze ako vravis, mal by mat zaklad matematiky, poznat zakladne metody a, pouzijem vulgarne slovo, paradigmy - cize nejaku zakladnu sadu algoritmov, automaty, Turingove stroje, principy a nahlady na programovanie a podobne a podla lubovole sa specializovat na rozumnu oblast. A mal by byt flexibilny a schopny sa adaptovat - cize ak mu niekto da za ulohu zostudovat [vlozte-neoblubenu-vec], tak by to mal zvladnut.

Z praktickych veci je to uz na povazenie. I tam su veci, na ktore vysoku skolu netreba - SQL v databazach vie nastudovat kazdy, administraciu operacneho systemu tiez, o nakodeni webstranky uz ani nehovorim. V kazdej z tychto oblasti sa daju najst vseobecne principy, ktore platia bez ohladu na konkretnu technologiu (napr. relacna algebra a SQL; alebo navrhove vzory pouzivane pri vyvoji; alebo principy OS)

O tom su vsetky velke spory na forach a pod - ci sa maju vychovavat informatici alebo vyvojari a co to vlastne informatik je. Firmy bedakaju, ze absolventi su nepripraveni pre prax, v ktorej im je Turingov stroj na velke nic. A na druhej strane specializovane firmy ako zmienena AdaCore horekuju, ze absolventi neovladaju principy programovania. A naopak - ak sa nasadi tvrda informatika, tak kopa ludi s jakotom pouteka, lebo prepadnu hroznemu omylu, ze informatika je o kresleni textur do hier a pisani wordovskych dokumentov. A na druhej strane, ak sa vyrobi takmer rydzo prakticky orientovany kurz, tak niekto iny zacne lamentovat, ze sa skola zvrhava na inzinierinu. Kde je pravda? Netrufam si odhadnut.

Otazka, co vie informatik po skonceni skoly, mi pride trochu bulvarna. Ak predpokladame optimalneho absolventa UINF, tak ten toho vie dost z toho, co sa spominalo vyssie.

Netreba vsak podlahnut velkemu omylu, ktory sa siri na inych forach (vid legendarny clanok o tom, aka hrozna skola je EUBA), ze "skola ma nenaucila nic". Doraz je na tom, ako je clovek sam iniciativny a ako sa k tomu sam aktivne postavi. Je rozdiel absolvovat predmet programovaia a ocakavat, ze za tych 26 hodin cvik sa v nom automagicky zjavi schopnost programovat; alebo povazovat tie cvika za nieco co cloveku ukaze cestu.
Ak clovek chce a je aktivny, dozvie sa toho dost vela (a najvacsia zabava pride az casom, po druhaku.)
Lorem ipsum dolor sit amet.
<<

bwpow

Príspevky: 634

Registrovaný: Str Nov 22, 2006 11:19 am

Bydlisko: Košice

Poslať Pia Jan 18, 2008 11:26 am

Myslim, ze vsetky tieto spory by boli vyriesene, ak by sa umoznilo studentovi vybrat si predmety, ktore chce absolvovat. Boli by studenti, ktori by sa zamerali cisto na prax a po skonceni by boli dobri v tom. A potom, ked by sa zamestnali napriklad v Siemense, tak by tam vedenie krutilo hlavou a hovorilo si: "Damn, ti UPJSkari su fakt makaci." A druhi by sa zasa vybrali cisto teoretickou cestou (ano, poznam aj takych) a ti by sa zamestnali v nejakom vyskumnom ustave a vedenie by si tam hovorilo: "Damn, ti UPJSkari su fakt makaci." A boli by aj taki, ktori by si vybrali skladbu predmetov podobnu tej dnesnej. A vsetci by boli stastni. Je to win-win strategia pre kazdeho. Na hodinach TVY by urcite sedelo menej studentov ako teraz, no aspon by sa im Bukovsky mohol viac venovat a hlavne by tam sedeli studenti, ktorych to bavi.

A este na zaver pridam nazor, cim by sa mala zacinat vyuka programovania. Podla mna by to mal byt Lisp. To je ten spravny jazyk na nastartovanie mozgu.
Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity
<<

guest126

Príspevky: 272

Registrovaný: Štv Jan 10, 2008 1:18 pm

Bydlisko: beyond the rim

Poslať Pon Jan 21, 2008 6:58 pm

Len taka recnicka otazka. Chceme sa odlisovat od FEI ci FIIT, toto nas s nou nahodu nezblizuje? Ma to este nieco s teoriou? Nie je to cista prax?

Späť na Pripomienky k predmetom

Kto je on-line

Užívatelia prezerajúci fórum: Žiadny registrovaný užívateľ nie je prítomný a 1 hosť

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software.
Slovenský preklad.