Lidi často říkají, že programování je pro ně složité nebo těžké a za pět minut mluví o svých názorech třeba na podnikání, management, politiku, školství nebo průmysl. Vždycky mi to přijde strašně podezřelé, protože to je přeci naopak. Programování přeci všechno oholí až na dřeň, až na samou podstatu řešeného problému, separuje jeho aspekty a dovoluje se na ně soustředit bez šumu chaotické provázanosti praktické reality. Když nedokážou pracovat s problémem v jeho ryzí podobě, jak si mohou myslet,
@calavera v některých případech to může být jen jazyková bariera - programování své specifické jazyky má, a to že ho ti lkidi neovládají, neznamená, že nejsou schopní myslet nějak logicky, strukturovaně..
Na druhou stranu jo, názory na ledacos typu politika a podnikání člověk může plácat i od boku lépe, než názory na exaktní věci, kde ho lépe nachytáš na švestkách že jen plácá
že problému rozumí v celé jeho praktické komplexnosti, to je přeci mnohem těžší! Podezřelé to je proto, že vysvětlení je nasnadě. Je možné, že problému ve skutečnosti nerozumí vůbec, jen to paradoxně kvůli propletenosti a nejednoznačnosti reality není očividné. Na rozdíl od programování, kde chyba v modelu problému vede k velkým těžkostem ve vyjadřování nebo dokonce k chybě skutečné, když těžkosti ve vyjadřování nejsou pochopeny jako alarmující zpětná vazba.
@calavera já myslím, že jsi na to kápnul. A nejsi první, kdo si to myslí https://cs.wikipedia.org/wiki/Dunning%C5%AFv%E2%80%93Kruger%C5%AFv_efekt
@calavera Pokud o programování neví vůbec nic, mají nějaký respekt. Jakmile už něco málo ví - třeba s pomocí AI už neví udělali, nebo sami napatlali v JavaScriptu, už žádnou rozdávat rozumy 😅
@calavera Ono ale není programování jako programování...
Jsou tu algoritmy. Tuhle jsem pomáhal s řešením zápočtových úloh pro první semestr na nejmenované VŠ jako konzultant na Python - a zjistil jsem, že těch algoritmů dám dohromady tak s bídou každý desátý. Úlohy vedoucí na rekurzi speciálně moc nedávám, protože v každodenním životě se spíš řeší připojit se na nějaké API a pokud tam vůbec je dál nějaký algoritmus, tak sečíst, maximálně vydělit spoustu čísel. O tom umět Python ten zápočet moc není (i když nutné je to taky).
Jsou tu optimalizace. Umím v C, ale je mi to vlastně houby platné. De-facto jsem akorát expert 60 let starý assembler pro PDP-11, nic jiného. Moje zkušenosti jsou dostačující, aby člověk pochopil, proč Rust vyžaduje některé věci dělat nějak... ale nejsou dostačující, abych se ve svém věku v naučil Rustu plynně programovat (jako dobře... musel bych nejdřív začít a pak by to po kouscích možná šlo...)
Je tu skriptování, a pak jsou tu databáze. Programování bez algoritmu, kde ale naopak chybí některá základní funkčnost, takže je někdy člověk nucen vymýšlet algoritmus kvůli něčemu, co vyšší jazyk nabídne jako službu (tohle platí spíš pro skriptování, SQL je kapitola stojící trochu mimo všechny kategorie... strašně snadné dokud člověk nezačne řešit, jaké sloupce tabulky mají být indexované, aby dotazy na větší balík dat netrvaly věčnost... )
Nakonec většina "programování" mi přijde, že je dnes lepení kódu z obrovského katalogu hotových design patterns a knihovních funkcích, algoritmy se řeší jen občas (prostě se použijí zabalené hotové). To ale znamená, že k programování se dostanou velmi různí lidé s velmi různými talenty a specializacemi a občas mají problém se domluvit.
Jako "oholení problému až na dřeň" bych to neviděl. Pro jednoho je řešením sehnat si hotovou knihovnu a jen k ní nastudovat API, někdo jiný to chce od začátku napsat celé sám, protože to umí vymyslet...
@xChaos oceňuju tak dlouhou odpověď, ale je to takový soubor detailů na který nedokážu souhrně odpovědět. Jednoduchost programování o které mluvím si představ tak, že 1 a 1 jsou 2 bez ohledu na to, jestli je procesor starý morous co nemá rád lidi a radši by byl na chatě, ale musí chodit do práce, protože hodně prohrál na automatech a odeslaný bit 1 je i na příjmu 1 bez ohledu na to, že ho přenáší elektron s nemocnou maminkou, který ho potřebuje stopit na zaplacení doktorů pro ní.
@calavera ale já ty nižší vrstvy a jejich determinismus chápu, ale právě mluvím, že takto dnes pojem "programování" už chápe hodně málo lidí. K čemu mi dnes je, že jsem kdysi (snad) intuitivně pochopil základy assembleru pro Z-80? Znalost staré egyptštiny by mi dnes asi byla užitečnější...
Daleko častěji dnes narazíš na to, že nějaké zadání řeší 3 různé obskurní knihovny (v Pythonu, v nějakém javascript frameworku, whatever) a ty si vybíráš, která z nich tvůj problém řeší nejlíp. A musíš okoukat, jak se to volá a co to vrací, ale pořád je to rychlejší a v podstatě jistější, než to vymýšlet sám... akorát to vlastně už není "programování". Spíš nějaká recyklace, či co.
Nejdivnější bug, který jsem v poslední době řešil (já už jich teda pravda moc neřeším, ale do důchodu daleko) byl, že v nějaké verzi Pythonu 3 zčistajasna změnili název jednoho standardně dodávaného modulu z takových těch VelkýchPísmen na normální malá písmena (která tam měla být od začátku). V tohle se dnes změnilo "programování": je z toho podivná směs byrokracie, údržbářství a hnidopišství.
@calavera V podstatě v každém oboru je potřeba znát stavební kameny problémů.
Lidi znají minimálně základy svého mateřského jazyka. Což ale neznamená, že znají základy jiných jazyků, včetně těch programovacích.