Programování v kostce

Programování je poměrně široká oblast, která zažila boom hlavně během pandemie. Pokusím je shrnout a kdyžtak k nim přidat nějaký svý rady.

O čem je programování?

O tom, jak převést řešení problému do co nejefektivnější podoby pro počítač, aby ho vyřešil. Záleží, v jakém rozsahu chcete programování porozumět, ale tak či tak si pravděpodobně nevystačíte jen s programováním samotným. Bude výhodné si osvojit i např. elektrotechniku, jelikož hlavně jazyky nižší úrovně jsou silně ovlivněné tím, jak funguje hardware.

Základní dělení: Praktická vs technická zaměření

Hodně se odvíjí od toho, jakým směrem se chcete vydat. Pokud vás zajímá spíš praktická stránka programování, kdy s málem můžete dělat divy, budete se spíš ubírat směrem vysokoúrovňových jazyků. Mezi praktické směry patří např. web development, automatizace, vytváření různých skriptů atp.

Mezi praktickým a technickým uplatněním se nachází např. vývoj výkonově kritických aplikací, které jsou obvykle naprogramované v C/++ nebo v podobných nízkoúrovňových jazycích. Sice si tady nevystačíte s "pouhou myšlenkou a drivem", ale zároveň není až tak těžké po určité době svůj nápad realizovat. Často si vystačíte pouze se znalostí algoritmů atp. a se základní znalostí principů počítače. Sem lze zařadit např. programování webových prohlížečů nebo grafických programů.

Pro některá uplatnění je ale potřeba obsáhnout programování komplexně. Např. vývoj her je náročný, je k němu potřeba spoustu znalostí a vytrvalosti. Není výjimkou, že si herní studia vyvíjí svůj vlastní engine. Vývoj enginu vyžaduje dobré znalosti vysokoškolské matematiky, jelikož každá část, od propočítávání pohybu a pozic bodů až po převedení do 2D obrazu, musí operovat jen v rámci čísel. Náročný je také vývoj operačního systému, jelikož je těsně navázaný na hardware.

Hobby vs práce

Proč (ne)programovat?

Pro

Proti

Mýty vs realita programování

Mýtus: Programování je jednoduchý

Hodně lidí je v přesvědčení, že programování je intuitivní. A mají i pravdu, začátky v programování bývají intuitivní, hlavně s vysokoúrovňovými jazyky, jako je např. Python. To stejné se dá říct o dělání her v herních enginech, které cílí na jednoduchost.

Realita: Programování je těžký

Brzy ale tyhle "růžové brýle" opadnou a člověk se začně topit. Čím hlouběji totiž člověk jde, tím méně intuitivní programování je. Jinak by tomu snad ani nemohlo být. Člověk nemůže očekávat, že naprogramovat stroj, který pracuje na binárním podkladu, bude jednoduché.

V celém programování platí obvykle nepřímá úměra obtížnosti a moci. Čím méně toho má člověk na starost, tím má menší moc nad počítačem. Aby mohl člověk využít plný potenciál hardwaru, potřebuje k tomu spoustu znalostí ohledně jeho fungování. Potřebuje vědět, jak nejlépe abstrahovat komplexní myšlenku do sady jednoduchých příkazů, kterým počítač rozumí. Pro spoustu oblastí je výkonový faktor víceméně irelevantní, žijeme už v době "výpočetního blahobytu", kdy si můžeme dovolit oželit výkon na úkor jednoduchosti, ale všechny tyto technologie staví pořád na podobných principech jako počítače v 80. letech. Neodpustím si srovnání s tím, jak se vyvíjí společnost. V dnešní době je spoustu lidí ve vyspělých zemích distancovaná od "tvrdé práce", ale pořád tu jsou lidé, kteří tuto tvrdou práci musí dělat.

Mýtus: Programování je o hlavně o vytváření programů, her, webových stránek atp.

Je taky poměrně rozšířené přesvědčení, že hlavní náplň programování je vytváření nového. Programování nových funkcí, učení se nového, tu a tam se něco rozbije, ale v hlavní režii zůstává tvoření.

Realita: Programování je většinu času vytváření konceptu, hledání chyb a údržba kódu

Další mýtus, který se sice drží o něco déle, než první, ale i tak se brzo hodně lidí zbaví "iluzí". Je to jako láska: nejdřív se zamilujete a všechno je fajn, ale po chvíli si začnete všímat stinných stránek a následně propadnete větší či menší depce. Po téhle fázi to buď vzdáte, nebo pokračujete dál, a začnete se postupně učit, až se při troše štěstí naučíte doopravdy programovat. A jak možná víte, většina času v dlouhodobém vztahu není nijak vzrušující, spíš se snažíte ho udržet, opravovat a občas se zadaří i něco navíc. Stejně funguje i programování. Většinu času nevytváříte nové a zajímavé věci, ale investujete do toho, aby byl kód spolehlivý a pracovalo se s ním dobře, protože ho v praxi nemůžete celý zahodit a napsat ho znovu. V určité fázi je to už neudržitelné.

Oblasti

High-level <-> low-level spektrum

High level

Low level

Obojí

Související dovednosti

Konkrétní oblasti