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

Jak se naučit přemýšlet jako programátor?
« kdy: 04. 07. 2022, 21:59:33 »
Ako sa naucit rozmyslat, aby som mohol programovat? Pravidla programovania a syntax konkretneho programovacieho jazyka nauci konkretna kniha.

Problem ale je, ako sa naucit rozmyslat? Nauci to niektora kniha na trhu? Ak ano aka? Mozem povedat, ze ked niekto vynika v matematike/fyzike na základnej a strednej skole je automaticke, ze rozmyslat vie a programovat sa nauci?

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.

Dik za rady. Budte prosim konstruktivni a piste len ti, co viete a chcete poradit. Nerad by som citala obsiahle komentare mimo temu.
« Poslední změna: 10. 07. 2022, 22:46:18 od Petr Krčmář »


RDa

  • *****
  • 2 465
    • Zobrazit profil
    • E-mail
Re:Ako sa naucit rozmyslat?
« Odpověď #1 kdy: 04. 07. 2022, 22:15:10 »
K programovani potrebujete pocitac a nejake vyvojove prostredi.. a pro zacatecniky se nabizi infantilni Robot Karel z osumdesatek, nebo nejaka vizualni skladacka (LEGO Mindstorm) - jestli jde o dite na pocatku zakladky.

Jinak co hledate je "jak se naucit algoritmizaci" a ono se to naucit podle me neda - na to je treba mit talent. 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.

RDa

  • *****
  • 2 465
    • Zobrazit profil
    • E-mail
Re:Ako sa naucit rozmyslat?
« Odpověď #2 kdy: 04. 07. 2022, 22:16:35 »
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 :-)

Re:Ako sa naucit rozmyslat?
« Odpověď #3 kdy: 04. 07. 2022, 22:55:38 »
Pc hry:
- spacechem
- factorio

Knihy (hutné, ale se spoustou přemýšlivých úloh pro čtenáře):
- Kapitoly z diskrétní matematiky
- Průvodce labyrintem algoritmů

Nejlépe samozřejmě zapsat se na výšku - třeba na tzv celoživotní vzdělávání, kde člověk může studovat dle svých preferencí za drobný poplatek.

(Všechna doporučení jsou na broušení obecných problem-solving skillů.)

Citace
a ono se to naucit podle me neda - na to je treba mit talent
Bullshit. Alespoň to buď nazývejme otevřeně inteligencí (kterou se učit opravdu moc nedá), nebo magií (ať je alespoň otevřeně zřejmé že nevíme o čem mluvíme a nemáme ambici to pochopit). Ale i nehledě na inteligenci udělá deliberate-practice obrovský rozdíl.

Citace
Jinak co hledate je "jak se naucit algoritmizaci"
Nemyslím si. Myslím si, že to co se hledá je ještě o úroveň obecnější než jen algoritmizace.
« Poslední změna: 04. 07. 2022, 22:59:27 od waldir »

Re:Ako sa naucit rozmyslat?
« Odpověď #4 kdy: 04. 07. 2022, 23:11:27 »
Citace
Mozem povedat, ze ked niekto vynika v matematike/fyzike na základnej a strednej skole je automaticke, ze rozmyslat vie a programovat sa nauci?
Z mojí zkušenosti ne, alespoň co se týče matematiky. Informatika/programování může být o aplikaci matematiky, ale řeší se tam (často) i přízemní věci, např. že máme konečný výpočetní výkon, paměť prostor na disku atd. Ale myslím si, že tam jistá korelace bude (dobrý vztah k matematice/fyzice => větší pravděpodobnost, že programování půjde také).

Za mě je spíš lepší vymyslet si aplikaci/projekt, kterou by syn chtěl naprogramovat, naučit se syntax rozumně vhodného programovacího jazyka (klidně z knížky, tam budou i základy algoritmizace) a zkusit programovat. Klidně za cenu toho, že výsledek bude neefektivní/ošklivý. Tím zjistíte, zda-li má to správné analytické myšlení (tzn. dokáže s prostředky, které mu dává daný jazyk poskládat výsledek).

Znát různé algoritmy se vyplatí podle mě až trochu později, protože zajišťují efektivnější/lepší výsledek a není třeba nad vším tolik přemýšlet a znovuvynalézat to, co již existuje.

Ale samotná znalost algoritmů nestačí, je třeba mít schopnost je i upravit/poskládat na míru konkrétnímu zadání, což se podle mě nedá úplně naučit, jen do jisté míry (ale i ta může být dostatečná, není nutné programovat jaderný reaktor).


Re:Ako sa naucit rozmyslat?
« Odpověď #5 kdy: 04. 07. 2022, 23:20:17 »
Případně vzhledem k věku asi nejlépe korespondenční semináře - třeba KSP ( https://ksp.mff.cuni.cz/ )...

A k The art of programming - zkusil bych fakt knihovnu - dle https://www.knihovny.cz/Record/mzk.MZK01-001261154 existuje po jednom výtisku v Praze, Brně a Olomouci. Jestli to je fakticky čtivá kniha a nebo nudná encyklopedie netuším.

(Ty knihy co doporučuji výše jsou fajn, ale je potřeba mít vůli a zájem se jima prokousat.)

olok

Re:Ako sa naucit rozmyslat?
« Odpověď #6 kdy: 05. 07. 2022, 00:00:58 »
Osobně bych spíše doporučil najít nějaké "doučování", tak aby si sám vymyslel co chce dělat, a následně ho někdo nasměrovával a radil, hlavně tedy pokud se zasekne a nebude vědět kam už dál.

Kniha (respektive knihy), bych řekl, že na začátek může být moc velké tempo, nebo naopak příliš malé a přeci jen, knížky nejsou tak záživné a kolikrát učí i hrozné detaily, které do začátku nejsou tak zásadní (alespoň z mého úhlu pohledu).

Ideálně si myslím, že sám se tomu bude věnovat týdně třeba 3-5 hodin, kdy on sám bude chtít a pak například s nějakým učitelem/kamarádem třeba 2-4 hodiny, pokud má trochu lepší chápání, tak jednoduché aplikace bude zvládat už do pár měsíců :)

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Ako sa naucit rozmyslat?
« Odpověď #7 kdy: 05. 07. 2022, 00:19:58 »
Případně vzhledem k věku asi nejlépe korespondenční semináře - třeba KSP [...]
vek syna nevidim, ale uvahou pokud nick tazatelky obsahuje jeji rok narozeni, tak synovy bude 30let? ;-)

Ink

  • *****
  • 654
    • Zobrazit profil
    • E-mail
Re:Ako sa naucit rozmyslat?
« Odpověď #8 kdy: 05. 07. 2022, 12:25:56 »
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.

Pokud je to The Art of Computer Programing od Knutha, ať ušetří čas a peníze. Rozhodně to není literatura pro začínajícího programátora v roce 2022.

Re:Ako sa naucit rozmyslat?
« Odpověď #9 kdy: 05. 07. 2022, 16:41:56 »
Tak třeba tady je, jak se to dělat nemá:
https://forum.zive.cz/viewtopic.php?f=922&t=1320923
Tenhle se snažil naučit AutoCAD:
https://forum.zive.cz/viewtopic.php?f=959&t=1208415
A tenhle se chtěl přeškolit na návrháře elektroniky:
http://www.ebastlirna.cz/modules.php?name=Forums&file=viewtopic&t=100841
 :(
BTW: Jak starý je syn a jakou školu dělá?

Re:Ako sa naucit rozmyslat?
« Odpověď #10 kdy: 05. 07. 2022, 22:53:58 »
To je dobrá otázka. Ako sa naučiť rozmýšľať, to neviem, ale ako sa naučiť rozmýšľať o písaní softvéru je celkom dobre popísané v knihe How to Design Programs - https://htdp.org/. Už som to tu písal (a určite to ešte niekoľkokrát napíšem), podľa mňa je to asi najlepšia kniha pre začínajúcich programátorov. A to asi preto, lebo neučí písať programy, ale navrhovať ich a rozmýšľať o nich. Rozhodne odporúčam prečítať si aspoň úvod, tam je to pekne vysvetlené - čo, ako a prečo.

Kniha je písana vyslovene na výuku, je v nej použitých niekoľko programovacích jazykov, alebo možno skôr niekoľko úrovní programovacieho jazyka z jednej rodiny, a znalosti sa dajú jednoducho preklopiť do skutočného jazyka z tej rodiny jazykov.

Trochu neštandardné je, že popisuje funkcionálny prístup k programovaniu, ale v tejto dobe sa k tomu aj tak značne vraciame, lebo je to jednoducho vzhľadom na aktuálne dostupné platformy výhodné, pretože, veľmi zjednodušene povedané, sa pri tom musíme starať o menej vecí a tým sa o napísanom programe ľahšie rozmýšľa, a okrem toho, tieto princípy vo veľkom prenikajú aj do iných jazykov, tak to nie je žiadna nevýhoda.

A čo sa toho rozmýšľania týka, tak kniha sprevádza cez niekoľko úrovní problémov, ktoré sa v programárorskej praxi vyskytujú a popisuje ako ich riešiť a to jednotným spôsobom, pričom centrálnom myšlienkou je podľa mňa receptúra návrhu, podľa ktorej sa dá postupovať a ktorá sa pre jednotlivé zvyšujúce sa náročnosti trochu rozširuje aj s nejakou základnou šablónou pre funkcie.

No a čo sa týka náväznosti na matematiku, tak tým vlastne autori začínajú, keď ako minimum, ktoré asi každý pozná, odkazujú na aritmetiku s číslami, a potom ju vlastne rozširujú na "aritmetiku textov" a "aritmetiku obrázkov", potom pridajú funkciu, atď.

Re:Jak se naučit přemýšlet jako programátor?
« Odpověď #11 kdy: 19. 07. 2022, 11:49:19 »
Ako sa naucit rozmyslat, aby som mohol programovat? Pravidla programovania a syntax konkretneho programovacieho jazyka nauci konkretna kniha.

Problem ale je, ako sa naucit rozmyslat? Nauci to niektora kniha na trhu? Ak ano aka? Mozem povedat, ze ked niekto vynika v matematike/fyzike na základnej a strednej skole je automaticke, ze rozmyslat vie a programovat sa nauci?

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.

Dik za rady. Budte prosim konstruktivni a piste len ti, co viete a chcete poradit. Nerad by som citala obsiahle komentare mimo temu.

Dobry den,

spravne, najskor sa treba naucit potrebnut techniku. To nauci nejaka kniha.

Co pre vas znamena rozmyslat ako programator? Pre mna to znamena vediet pochopit nejaky problem. Ako toho dosiahnem? Naucit sa rozdelit problem na male, trivialne zvladnutelne problemy. Tomu sa hovori dekompozicia. A opacne, vediet z tychto rieseni malych problemov poskladat uceleny program je kompozicia.

Co na to clovek potrebuje je dobra cvicebnica (zial, neviem odporucat nejaku konkretnu) a chut programovat. Alternativne, ak to synatora fakt bavi, moze si sam vymyslat a pisat programy. Najskor male, potom vacsie. Odporucal by som zacat s "paper and pencil" hrami, lebo to je celkom zabava. Napr. zacat s hodom kostkou, papier-kamen-noznice, hangman, tic-tac-toe, pacman. Proste ide o to ziskat dostatok praxe, z ktorej pochopi principy.

Osobne by som "Art of Programming" nekupoval.

Re:Jak se naučit přemýšlet jako programátor?
« Odpověď #12 kdy: 19. 07. 2022, 12:31:45 »
Knihy aj škola sú v podstate dobré odporúčania, ale veľká časť schopnosti "myslieť ako programátor" znamená vedieť "myslieť ako nepriateľ".

T.j. po tom, čo človek vymyslí algoritmus na riešenie úlohy je potrebné prepnúť do módu "a teraz potrebujem vymyslieť vstup, na ktorom môj algoritmus nefunguje". Časom sa človek naučí tieto bežné chyby vidieť dopredu, čo sa odrazí na návrhoch budúcich algoritmov (atď).

Aspoň teda čo si pamätám, tak veľká časť cvičení z programovania v 1. ročníku VŠ sa niesla v duchu
  • vymyslite algoritmus na ...
  • niekto napíše svoje riešenie na tabuľu
  • Cvičiaci: "A teraz príde nepriateľ a zadá vášmu algoritmu na vstupe XYZ"

A ako správne píšeš, syntax konkrétneho jazyka je na tomto nezávislá (aj keď je pravdou, že rôzne druhy jazykov budú viac alebo menej náchylné na iné typy chýb). V prvom rade je ale potrebné naučiť sa minimalizovať/predvídať chyby v dizajne, v druhom samozrejme aj naučiť sa napísať v danom jazyku presne to, čo chcem, aby sa dialo.

none_

Re:Jak se naučit přemýšlet jako programátor?
« Odpověď #13 kdy: 19. 07. 2022, 14:38:40 »
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.

Re:Jak se naučit přemýšlet jako programátor?
« Odpověď #14 kdy: 19. 07. 2022, 18:37:25 »
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.

Dobrý programátor musí být taky dostatečně zvídavý a zapálený, takže ochotný nejprve několik obědů obětovat  :)