Jak se naučit přemýšlet jako programátor?

Re:Ako sa naucit rozmyslat?
« Odpověď #15 kdy: 19. 07. 2022, 18:38:55 »
Jinak co hledate je "jak se naucit algoritmizaci" a ono se to naucit podle me neda - na to je treba mit talent.

pokud algoritmizaci myslite aplikaci algoritmu na konkretni ulohy, to se naucit da, studiem a resenim uloh napriklad z programatorskych olympiad. Problem je, ze predmety a knihy s nazvem "algoritmy" tohle vetsinou neuci.

i IQ testy se daji do znacne miry natrenovat.

Jsou na to na vysoke sice predmety, ale to mate jako s vytvarnou vychovou - kdyz nemate talent, umelecky malir z vas nebude. Nehledne na pocet absolvovanych kurzu a nactenych teorii.

tohle platilo mozna v devatenactem stoleti, pred vznikem moderniho "umeni".


Re:Jak se naučit přemýšlet jako programátor?
« Odpověď #16 kdy: 19. 07. 2022, 19:09:20 »
Jestli jde o The Art of Computer Programming od Donalda Knutha, tak to by v tomhle případě byly fakt vyhozené peníze.

Re:Ako sa naucit rozmyslat?
« Odpověď #17 kdy: 19. 07. 2022, 20:06:08 »
Jsou na to na vysoke sice predmety, ale to mate jako s vytvarnou vychovou - kdyz nemate talent, umelecky malir z vas nebude. Nehledne na pocet absolvovanych kurzu a nactenych teorii.

tohle platilo mozna v devatenactem stoleti, pred vznikem moderniho "umeni".

Umění vs. řemeslo - hodně se toho dá naučit resp. natrénovat (včetně toho, co bude většina lidí už považovat za projev vrozeného talentu).

Re:Ako sa naucit rozmyslat?
« Odpověď #18 kdy: 19. 07. 2022, 20:26:36 »
Jsou na to na vysoke sice predmety, ale to mate jako s vytvarnou vychovou - kdyz nemate talent, umelecky malir z vas nebude. Nehledne na pocet absolvovanych kurzu a nactenych teorii.

tohle platilo mozna v devatenactem stoleti, pred vznikem moderniho "umeni".

Umění vs. řemeslo - hodně se toho dá naučit resp. natrénovat (včetně toho, co bude většina lidí už považovat za projev vrozeného talentu).

nektere formy moderniho umeni nevyzaduji ani ovladnuti remesla ani talent. Klicova je propagace.

naopak, u nevkusneho dila mohou intelektualni snobove predstirat, ze na nem vidi neco co ostatni ne.

Re:Jak se naučit přemýšlet jako programátor?
« Odpověď #19 kdy: 20. 07. 2022, 11:31:37 »
Ja bych  pridal jeste jednu vlastnost, kterou ma podle me perspektivni programator. Podle me programator musi byt liny.

Co tim myslim:
Priklad 1) Pisu, pisu kod a vsechno krasne funguje. Za tyden nekdo prijde a rekne, ze chce neco podobneho. V tu chvili spatny programator vezme puvodni kod, udela Ctrl+C a Ctrl+V, prepise X radku a prohlasi za hotovo. Dobry programator se podiva na puvodni kod a zkusi ho upravit tak, aby vyhovoval obema s minimalni upravou.

Priklad 2) Sef mi rekne: V pondeli prekopiruj soubor X ze slozky Y do slozky Z. Tak to udelam. Dalsi tyden prijde, ze je to potreba udelat znova. Spatny programator jde a tupe prekopiruje soubor znova. Dobry programator si udela program, ktery se automaticky kazdy pondeli spusti a o usetreny cas si prodlouzi obed.
Souhlasím se tebou, ale nevím, jestli "líný" je zrovna nejpřiléhavější označení, protože oba ty "špatný" příklady zrovna obnášejí míň práce než ty "správný" :-) (copy-paste je jednodušší a rychlejší než refaktor a zkopírovat soubor je rychlejší než psát skript) Spíš něco jako "líný v dlouhodobým horizontu"?


Re:Jak se naučit přemýšlet jako programátor?
« Odpověď #20 kdy: 20. 07. 2022, 12:31:40 »
Cele toto vlakno mi pride akoby sa niekto chcel naucit jazdit na bicykli a namiesto toho aby na neho sadnul a zacal sa ucit metodou pokus - omyl (pád), tak sa snazi na internete najst knihu ktoru si precita a bude z neho dalsi Sagan.

Na programovanie treba mat spravne vlohy,
-treba mat celkovo logicke myslenie (byt schopny riesit problemy, nie googlit kazdu sprostost, pretoze na internete je kopa blbich rieseni),
-treba chapat matematike (ak ma niekto na zakladke problem s matikou a prelieza nou so 4kami, tak z neho nikdy programator nebude),
-treba mat aj nejake slusnejsie IQ (nechcem sa nikoho dotknut, ale clovek s dvojcifernym IQ sa bude pri programovani fakt trapit uz na skole, nie to este v robote),
-treba byt zvedavy (skola ti da sice zaklady programovania, ale treba sa neustale vzdelavat, a tim nemyslim len ucit sa nove jazyky a frameworky, ale hladat do hlbky preco nieco funguje ako to funguje, dost to nasledne pomaha pri hladani optimalneho riesenia a pomaha to pri vyhybani sa pascam ktore clovek bez toho nebude poznat).

Re:Jak se naučit přemýšlet jako programátor?
« Odpověď #21 kdy: 20. 07. 2022, 14:10:58 »
Bez do kramu, kup chleba a kdyz budou mit rohliky tak jich vem deset.

Dobry den, mate rohliky ?
Ano
Tak prosim deset chlebu.

Re:Ako sa naucit rozmyslat?
« Odpověď #22 kdy: 21. 07. 2022, 10:04:54 »
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.