Syn si chce kupit seriu knih The art of programming. Myslite, ze je to dobra investicia a nieco ho ta kniha nauci? Pytam sa preto, ze je to vacsia investicia a bola by som nerada, ak by zapadali prachom na policke.
Jestli vas trapi jen tohle, tak si nejaky dil pujcte na prazdniny v knihovne :-)
Tesat. Hele je to třicet let, ale mě knihovna formovala dost zásadně. Já bych doporučil zřídit průkazku do knihovny. V dnešní době tam budou spíš všelijaké návody ke komerčním produktům co zrovna letí... mezi vykopávkami bych namátkou zmínil s odpuštěním Kernighan+Ritchie C. Tuším u nás kdysi vyšel slovenský překlad. Je tam hezky vysvětlená stavba toho jazyka. I tak je to někde od prostředka, já začínal s páječkou a po pár základech v Basicu mě daleko víc zajímal x86 assembler... A zrovna ta
Knuthova encyklopedie je zřejmě vážně dost hutná - řekl bych nepříliš záživná třeba i pro vysokoškoláka. Našel jsem někde válet vzorovou kapitlou. Řekněme pokud už člověk má za sebou začátky v nějakém programovacím jazyce a něco si přečetl, a má určitou toleranci vůči vědátorskému slohu, může být zajímavé, přečíst si, co k tomu na mnoha stovkách stran sepsal pan profesor.
Jasně že se programovací knížky nedají číst od začátku do konce jako beletrie. A člověk nemusí/nemůže hned pečlivě zkoušet všechny příklady. Středoškolák to taky nemůže všecko pobrat na první dobrou. Navíc v knížkách v "pokročilých" kapitolách bývají spíš všelijaké speciality a slepé vývojové větve, "vata". Člověk musí umět "přeskakovat pasáže, kterým zatím nerozumím" (protože nejsem tak daleko, nebo protože je autor odflákl, nebo mě to prostě nezajímá). Popravdě hodně důležitá schopnost je "řídké čtení" = být schopen najít kapitolu/pasáž, která mě zajímá, kus si přečíst, mrknout se letmo kolem co je ještě zajímavého k vidění, a pravděpodobně knihu odložit. Vyhledávání klíčových slov v elektronických textech to zvedá ještě o level jinam :-) Najít jehlu v kupce sena - najít kýženou jednu větu nebo položku v tabulce v několika desítkách / stovkách stran nějakého manuálu... Orientovat se v textu, který je vycpaný vatou, a hledat v něm sladká tajemství, často mezi řádky...
Člověk nemuže přečíst všechno. Znám jednoho, který o sobě tvrdí, že má nutkavou potřebu, když už začne číst knihu nebo nějaký návod, přečíst ho úplně do konce (údajně porucha autistického spektra) a je hrozně naštvanej, když se příjemně plynoucí čtení zvrhne v nesrozumitelnou haťmatilku...
K vlastnímu programátorskému hraní schází samoukovi při školní docházce témata. Cíl - co vlastně programátorsky pojednat, jakou úlohu vyřešit. Příklady z učebnice jsou dobré a zajímavé spíš v naprostých začátcích. Tohle se obrátí naruby, jakmile si člověk najde práci :-)
Ohledně postesků starých borců "nekopírovat každou blbost z examplů na internetu" - jasně, člověk se musí naučit používat vlastní mozek, kriticky posuzovat cizí příklady. Ale i tady má nezastupitelnou úlohu pokus/omyl. Něco se dočtete z knížek, nebo Vás před tím varují ve škole, ale ve spoustě věcí si člověk musí čumák namočit sám :-) a začít od cizího examplu je jako rychlý start docela dobré. Jasně, hned tam vidíte blbosti, neošetřené větve a chyby po návratu hnihovních funkcí apod.
Kromě toho, velká část prográtorské činnosti spočívá v práci s hotovými knihovnami / API a tady je Vám často dobrý každý zdroj, který dokážete najít: hrubé základy najdete v referenční příručce / manuálu, pak najdete pár tutorialů a výukových examplů, a když nic jiného nepomůže, ponoříte se do zdrojáků softwaru, který s použitím té knihovny už napsal někdo druhý. Případně do zdrojáků samotné knihovny, pokud jsou k dispozici.
Takže moje doporučení: dopřát to mladému všechno dohromady. Knihovna, vlastní počítač (nebo dva), internet. Pokud nemá staršího kámoše/mentora tak ať si zřídí účet tady na rootu. "Programovacích jazyků" a prostředí je k dispozici fůra zadarmo. Ať se pustí vlastní cestou. Obor "IT" je hrozně široký. A nezanedbávat "nepočítačové" činnosti. Nenutit do vrcholového sportu apod., ať si volný čas řeší po svém, ale ať se trochu vyvětrá / přijde na jiné myšlenky / mezi živé lidi.