Keďže považujem programovanie za veľmi tvorivú činnosť, prekvapuje ma, že nič o tomto aspekte nepočujem. Analýze problémov sa venuje minimálne množstvo času. Predpokladal by som, že sa začne vývojovými diagramami, ukážkami ako previesť problém zo života do matematicko-logickej postupnosti. Že sa poukáže na to, ako dokáže dobrá analýza X-násobne urýchliť výpočet, ako ani najrýchlejší počítač nedokáže vyriešiť koncovku šachovej partie, ktorá je aj pre priemerného šachistu evidentná, ak nemá k dispozícii tabuľky koncových pozícií.
Problém je trochu jinde. Ne převést problém ze života do matematicko-logickej postupnosti, ale do takové posloupnosti úkonů čí akcí, která bude nadále dávat podobný smysl a splní ten účel, který se očekává. Jinak, většina úloh je banálních. (Dobře, chce to navrhnout databázi aspoň trochu správně, a všeobecně, nebýt idiot, ale málokdy jsem se setkal s tím, že vymyslet, jak něco naprogramovat, by byl problém. Problém je, jak to správně navrhnout z hlediska firemního (nebo lidského) workflow.)
Začína sa inštaláciou voľajakého megamonštra (dosaďte si IDE podľa ľubovôle) a po obligátnom "hello world" nasledujú nijako nesúvisiace ukážky kódu v tom-ktorom jazyku. Triedenia, výpisy, súborový systém..... všetko bez toho PREČO?
A potom dostane študent voľajakú úlohu, ktorá bola už 1k krát na internete či inde riešená (s malou obmenou, v inom jazyku), veď nech si minuloročný druháci zarobia na pivečko.
Pokud studenti nebudou umět tyhle základy (a oni je zatím neumí), tak nemá smysl zabývat se nějakým smysluplným projektem. Známému jsem pomáhal s nějakými OS na FIT, myslím, že ve druhém semestru. Byla to podle mého názoru né úplně jednoduchá úloha typu producent - konzument. No a prostě když to neumí, tak si to musí natrénovat. Ani v prváku na FEL CVUT jsem před těmi 20 lety neměl v programování semestrálku, která by se dala někde najít (ikdyž s obměnami). A nebyla úplně nezanedbatelná. Nadruhou stranu, nevidím nic špatného na opakování podobných úloh.
Nerozumiem tomu. Ak ide naozaj o to pripraviť ľudí pre prax, trval by som na tímových projektoch, kde sa jeden študent môže prejaviť ako grafik, iný ako schopný analytik, tretí ako výkonný kóder, štvrtý dorobí dokumentáciu..... Tak ako v živote, každý má silnejšie a slabšie stránky a podstatné je to dať dokopy.
To bys ale musel dát dohromady lidi z víc škol nebo aspoň víc oborů. U nás byly týmové projekty v:
Softwarové inženýrství I a II, Mikropočítače, Počítačová grafika nevím kolik, asi jich bylo víc, ale teď si nevzpomenu.
Ak ste dočítali až sem gratulujem. Tu sú moje otázky:
- Možete mi napísať akou genézou programovania ste prešli?
Hodně ve zkratce. Atari Basic, Assembler 6502, Turbo Pascal, (Turbo/Borland) C, C++, trošku toho assembleru 8086 a 8051 (velice trošku), pak GCC+Emacs+CVS, pak první zaměstnání C++, Win32, Visual Studio 6, Visual Source Safe (bad joke), pak druhé zaměstnání a znovu Emacs a YCP/Yast + CVS + autobuild (+autotest) systém distribuovaný v několika zemích, myslím, že tady někte byl taky přechod na vim, pak třetí zaměstnání, VIM, java (+ servlets + jsp), perforce ale práce v týmu velikosti 1, pak čtvrté zaměstnání (zase sám v týmu), Visual Studio 6, C++, SVN, javascript na serveru (asp zase bad joke), Python+wxPython na klientské aplikace, Python Pylons a později Pyramid na weby.
- V ktorej etape je podľa vás podstatný výber jazyka?
Nikdy
- V ktorej etape je podľa vás podstatné zapojenie a využívanie kooperácie a CVS?
Včera. Version control se hodí i pro nevývojáře, vpodstatě komukoliv, ale nikdo jiný než vývojáři to nebude schopen používat. Dá se to pochopit rychle, ale je zapotřebí mít toho šéfa.
- V ktorej etape je podľa vás podstatný výber IDE?
Není důležité. Člověk vůbec musí prvně přijít na to, jestli IDE ano nebo ne, a jestli ano, tak je pak skoro jedno jaké, a jestli ne tak je to taky jedno.
- Zažili ste / trvali vyučujúci na voľajakej "štábnej kultúre" kódu? Na komentovaní, na dodržiavaní konvencií pri pomenovávaní?
Ano, ale vlastně jen v té grafice (Žára).
- Viete si predstaviť / zažili ste na školách využívanie niečoho ako codenvy, čo by viacej tlačilo na tímovosť, nevyžadovalo silný hardware na strojoch študentov (furt čítam že pre programovanie treba SSD s 8+ GB RAM)? Používajú školy niečo takéto?
Nedovedu si představit projekt, na který bych potřeboval výpočetně silný stroj. Pokud budu dělat úlohu z paralelních systémů, budu mít nástroje, jak to testovat na svém slabém notebooku, a občas vyzkoušet na skutečném železe. Ale cloud IDE? WTF?!?
- Majú študenti prístup ku voľajakým výpočtovým farmám (povedzme 128 jadrová pračka v pivnici) na ktorých si môžu spúšťať svoje projekty a testovať "multiprocesorovosť"?
My jsme měli, sice ve formě emulátoru, ale fungovalo to dostatečně. Upřímě, kolik studentů to využije? 1 ze 100? Věřím, že ten se k tomu dostane. My jsme se hlavně naučili, že tyhle věci jsou o něčem jiném.
- Viete si predstaviť / zažili ste na školách prácu hoci aj v konzole (ssh na školský server, vim alebo niečo iné, git)?
Haha, vim na sériovém terminálu k Unixu? No nic, tenkrát se ještě používal telnet.
- Viete si predstaviť / zažili ste na školách niečo ako, že na jednom predmete sa niečo postaví (hardware), na druhom sa to naprogramuje, na treťom sa spraví dokumentácia/manuál/propagačný materiál/web/marketing/prezentácia?
Nedovedu. Bylo by trochu blbý v předmětu B trpět za chyby, které udělal někdo jiný v předmětu A.
- Viete si predstaviť / zažili ste na školách orientáciu na tímovú prácu? Výuku toho ako bude človek neskôr v praxi pracovať?
Problém bude sehnat vedoucího týmu. Když se zamyslím nad tím, jak to bylo za nás, tak pár lidí bych do týmu sehnal, ale vedoucího blbě. Malý týmový projekty byly. Občas bylo i něco v tom smyslu, že se udělalo něco, co se pak použilo na něco dalšího (jako knihovna nebo tak).