Gratuluju. Trefil ses do dvou z asi tak tri veci, na co se ta VS matika da realne pouzit
Tak dalsia vec je grafika (transformance matice)
Ano, to je ta třetí A když už jsme u té grafiky (kterou jsem nikdy moc neprogramoval, takže možná budu mimo mísu): nebude na drtivou většinu aplikací stačit, když si člověk úplně bez znalostí lingebry přečte nějaký tutoriál ve stylu "když ten objekt potřebuješ rotovat, vynásob to tímhle a když posunout, tak tímhle"? Nebo nebude dokonce úplně stačit něco ve stylu "jasně, znám funkci rotate(obj,30)" ?
Nevyhoda toho je, ze sa v nejakej ucebnici nauci 1 vec a nebude mat problem s tym, aby to pre dosiahnutie 1 000 000 aplikacii zavolal 1 000 000x po sebe (vsak by to fungovalo, aj ked mozno pomaly). Kdezto clovek, ktory o to zavadil by si napriklad maticu diagonalizoval na papier, a jednoducho by to spravil na nieco ako O(log n) maticovych nasobeni. A aj maticove nasobenie (aj ked teraz uz sa to robi na GPU a ludia sa o to nemusia starat) - clovek "nepostihnuty" VS by tam skor nehladal zlozitost a spravil by to v case n^3 (vazne, koho pred VS napadlo, ze toto ide spravit aj rychlejsie?); kdezto vysokoskolak nema problem spravit "z fleku" v case n^2.8... a pri pohladani aj lepsie.
Podobne je to aj pri postupnych aplikaciach roznych matic, ked sa postupnost opakuje. Clovek z VS urcite vie nieco o asociativite - ja som pred VS bral nasobenie matic len ako nejaku "magiu", z ktorej vypadne pri dobre zadanych maticiach pozadovane cislo - netusil som, ze by to malo fungovat aj asociativne a tak sa da nieco "predpocitat" a ulozit.
Složitost počítáš do matematiky?
To som ciastocne poplietol s odpovedou k VS.
Ciastocne sa to da pocitat aj do matiky, hlavne niektore vyjadrenia zlozitosti u narocnejsich algoritmov ako "tento cyklus v cykle prebehne n-krat, vonkajsi cyklus tiez n-krat, takze mame O(n^2)".
A zase: to, co je ze složitosti opravdu použitelné, se podle mě může samouk naučit tak za měsíc. Prostě si přečte, že existuje 5 nebo kolik tříd a podle jakých znaků poznám kód jednotlivých tříd (např. "prochází pole jednou" vs. "prochází pole n-krát, kde n závisí na délce pole").
To nie je len o tom, ze existuje niekolko tried. V praxi je to aj o tom, ze clovek pride k problemu napr. "predpocitam si vsetko" => O(n), "nepredpocitam si nic" => O(n). Tak uz clovek mozno trochu znaly zlozitosti to spravi takto, aj ked by tam bola pre cloveka poznaceneho pocitanim zlozitosti na VS moznost "predpocitam si nieco" => O(sqrt(n)).
Take knihy na naucenie za mesiac mozno existuju, ale podla mna maju za nasledok este viac skody ako uzitku. Ja som sa stretol s tym, ze bol 1TB dat a bolo treba spocitat, kolkokrat sa tam nachadza aky bajt. A niekto rychlo vzdelany (mozno aj s VS) rychlo implementoval sort s tym, ze potom uz to bude rychlo len na 1 priechod :-/. Ja som sa tiez stretol s odporucanim "ked vas nic nenapadne, pouzite sort a ono to nejak pojde" - akurat je skoda, ze taketo univerzalne rady niekedy nie su najefektivnejsie.
Moc rád bych viděl výsledky takovéhodle průzkumu: vezmu si skupinu vysokoškoláků, kteří jsou deset let v praxi, a dám jim test z Haskellu
Nehovorim, ze si to bude niekto pamatat - akurat si myslim, ze programovanie v Haskelli, (LISPe) a Prologu pozitivne ovplyvni programovanie napriklad v C a to podla mna zostane, aj ked clovek tieto jazyky zabudne.