Pokud chceš programovat, nemusíš znát věci důležité pro správu IT, jako jsou třeba základy elektrikařiny nebo správa operačních systémů, ale může se ti víc hodit dobře umět ZÁKLADY MATEMATIKY.
A to já bych s klidem řekl, že se programátorovi víc hodí ta správa systému - musí se totiž perfektně orientovat v tom, jak fungují dynamické knihovny a linkování obecně, musí vědět, co udělat pro to, aby mohl naprogramovat démona (tj. znát všechny ty startovací skripty apod.), musí vědět, na které porty se může bindovat jenom root, musí znát sockety atd. atd.
Na druhou stranu bych moc rád viděl
konkrétní příklad
konkrétního kódu, k jehož naprogramování potřebuju matematiku stejně nutně jako v předchozím případě znalost OS.
Jasně, pokud chci programovat 3D engine, musím mít v malíčku lingebru. To ale není potřeba pro to vlastní programování, to je vlastnost té řešené domény. Stejně tak když budu programovat účetní software, musím znát legislativu ohledně účetnictví - to ale přeci pro pánakrále není potřeba pro to vlastní kódování!
Jediný, co podle mě má opravdu smysl, jsou některý části diskrétní matiky - grafy, základy kombinatoriky, naprosté minimum z teorie typů + slušná znalost matematické logiky (např. proto, abych věděl, že vlastně Prolog je založenej na jakési normální formě apod.).
O té slavné složitosti si myslím, že ji normální programátor nepotřebuje buď vůbec (v reálu stejně hrají roli jiné věci, jako např. rozdíl mezi rychlostí disku, paměti a registrů), nebo mu stačí naprosto základní znalosti:
1. vědět, jaké třídy složitosti existují
2. vědět, že je nějaká složitost prostorová a časová
3. umět pro konkrétní (krátký) kód tu třídu určit (což jsou v podstatě kupecké počty typu "kolikrát se mi provede tahle smyčka?")
Stejný základní znalosti se hodí z těch formálů - tj. spíš do šířky než do hloubky:
1. Chomskeho hierarchie
2. jaké třídy mají jaké vlastnosti
3. jak silný stroj potřebuji pro kterou třídu
4. (tohle považuju za zdaleka nejdůležitější) jaké nástroje (tj. software!) použít, pokud chci vytvořit parser jazyka té které třídy
Nic víc si fakt nedovedu představit, že by programátor NUTNĚ potřeboval. Naprosto zbytečný mi pro programátora přijde znát jakékoli důkazy. Ty si možná může dělat pro zajímavost jen tak na okraj, když už má zkouklé všechny díly TBBT a zrovna není do čeho jinýho píchnout.
Docela by mě zajímalo, jestli někdo umé uvést nějaké KONKRÉTNÍ příklady, co by normální programátor NUTNĚ musel znát nad rámec toho co jsem napsal. Ale opravdu konkrétní a reálné věci. Výštěky typu "internetový vyhledávač" fakt neberu.