Praktická matematika

Ivan Nový

Re:Praktická matematika
« Odpověď #45 kdy: 22. 09. 2017, 11:00:11 »
Pohled programátora na matematiku by měl být stejný, jako pohled fyzika na matematiku, tedy měl by ji znát tak, aby ji mohl používat. Do přílišných detailů zabíhat nemusí. Programy většinou neřeší tolik abstraktní záležitosti, aby jejich mentální vizualizace byla na překážku, a proto je dobré, aby programátor měl vytvořenu vizuální představu matematického aparátu, aby ho mohl používat.
V tomto ohledu to má fyzik horší, matika pro teorii relativity nebo kvantovou fyziku je dost hardcore.

Jen počkejte s rozvojem AI a DL se to zhorší i tady, ale zkoumání učení neurálních sítí povede i k novým metodám v učení lidí, nebo názoru na to, co matematika je. Tady nás čekají ještě velká překvapení.

Ale zase například toto: https://www.youtube.com/watch?v=kYB8IZa5AuE


Aoidhghean

Re:Praktická matematika
« Odpověď #46 kdy: 22. 09. 2017, 11:00:30 »
Tieto haskelizmy v jave nie su potrebne.
Java stejny problem resi pomoci interfaces. Jestli je to horsi nebo lepsi reseni, o tom by se dalo hadat roky ;)
Interfacy v Javě jsou ale dost primitivní.

Re:Praktická matematika
« Odpověď #47 kdy: 22. 09. 2017, 11:03:59 »
S type classes to nijak přímo nesouvisí
Podle me to teda zatracene souvisi. Musis mit nejakej nastroj, kterym definujes, jake vlastnosti struktura musi mit, aby nad ni sel flatMap udelat. A tim nastrojem, ktery umozni kyzenou obecnost, jsou typeclasses :) Bez nich muzes flatMap fakt jenom overloadovat. Nebo bys mohl pouzit interfaces, ale to bych to API asi ani videt nechtel ;)

Re:Praktická matematika
« Odpověď #48 kdy: 22. 09. 2017, 11:04:47 »
FlatMap to je tedy věda :-)

fl = reduce(lambda x,y: x + y, map(funct, list))
A jaky typ ma ten map, reduce a to +? :)

Aoidhghean

Re:Praktická matematika
« Odpověď #49 kdy: 22. 09. 2017, 11:07:27 »
S type classes to nijak přímo nesouvisí
Podle me to teda zatracene souvisi. Musis mit nejakej nastroj, kterym definujes, jake vlastnosti struktura musi mit, aby nad ni sel flatMap udelat. A tim nastrojem, ktery umozni kyzenou obecnost, jsou typeclasses :) Bez nich muzes flatMap fakt jenom overloadovat. Nebo bys mohl pouzit interfaces, ale to bych to API asi ani videt nechtel ;)
Ve Swiftu jsou na to protokoly, viz Generics manifesto. Bude to zajímavé, až se jim to povede naimplementovat.


Aoidhghean

Re:Praktická matematika
« Odpověď #50 kdy: 22. 09. 2017, 11:11:04 »
FlatMap to je tedy věda :-)

fl = reduce(lambda x,y: x + y, map(funct, list))
A jaky typ ma ten map, reduce a to +? :)
To je něco pro tebe, viď? :P Teď nám řekneš, že k pochopení reduce není nutné chápat katamorfismy  ;D

Ivan Nový

Re:Praktická matematika
« Odpověď #51 kdy: 22. 09. 2017, 11:20:04 »
FlatMap to je tedy věda :-)

fl = reduce(lambda x,y: x + y, map(funct, list))
A jaky typ ma ten map, reduce a to +? :)

No dobře tak tedy názorněji, typy řešit nemusím,
Kód: [Vybrat]
fl = reduce(lambda x, y: x + y, map(split, ["bily modry", "cerveny zluty", "jantarový karmínový rubínový"]), [])
nebo pak třeba zjištění na jaká začáteční písmena slova v seznamu začínají:
Kód: [Vybrat]
fl = set(reduce(lambda x, y: x + y, map(lambda z: z[0].upper(), z.split()], ["bily modry", "cerveny zluty", "jantarový karmínový rubínový"]), []))

Ale je fajn znát vlastnosti konstruktů, které člověk použije často jen intuitivně a ad hoc.
 

Aoidhghean

Re:Praktická matematika
« Odpověď #52 kdy: 22. 09. 2017, 11:26:08 »
FlatMap to je tedy věda :-)

fl = reduce(lambda x,y: x + y, map(funct, list))
A jaky typ ma ten map, reduce a to +? :)

No dobře tak tedy názorněji, typy řešit nemusím,
Kód: [Vybrat]
fl = reduce(lambda x, y: x + y, map(split, ["bily modry", "cerveny zluty", "jantarový karmínový rubínový"]), [])
nebo pak třeba zjištění na jaká začáteční písmena slova v seznamu začínají:
Kód: [Vybrat]
fl = set(reduce(lambda x, y: x + y, map(lambda z: z[0].upper(), z.split()], ["bily modry", "cerveny zluty", "jantarový karmínový rubínový"]), []))

Ale je fajn znát vlastnosti konstruktů, které člověk použije často jen intuitivně a ad hoc.
Myslím, že join.map je lehce názornější.

Ivan Nový

Re:Praktická matematika
« Odpověď #53 kdy: 22. 09. 2017, 11:30:48 »
FlatMap to je tedy věda :-)

fl = reduce(lambda x,y: x + y, map(funct, list))
A jaky typ ma ten map, reduce a to +? :)
To je něco pro tebe, viď? :P Teď nám řekneš, že k pochopení reduce není nutné chápat katamorfismy  ;D

To je výhoda funkcionálního programování, máte úplný soubor funkcí map, filter, reduce, a co z nich postavíte, to je na vás. Že z nich jde postavit "cokoliv", vyplývá z té úplnosti. Nic okolo vlastně znát nemusíte. Ale znát to není na škodu, protože pak vaše konstrukty budou elegantnější. Mozek se těmi znalostmi naučí myslet v těchto kategoriích. Ale ten mozek to naučíte stejně, jen když budete ty funkce používat.

A tento způsob je budoucnost IT, vymýšlet se budou učící algoritmy vedoucí na správná řešení, co bude uvnitř, zůstane nepoznáno.

Ivan Nový

Re:Praktická matematika
« Odpověď #54 kdy: 22. 09. 2017, 11:34:11 »
@Aoidhghean

To jistě, ale chtěl jsem ukázat, že flatMap používá i povrchní uživatel Pythonu, který objevil funkce filter, map, reduce, aniž by o tom věděl.

Aoidhghean

Re:Praktická matematika
« Odpověď #55 kdy: 22. 09. 2017, 11:39:08 »
FlatMap to je tedy věda :-)

fl = reduce(lambda x,y: x + y, map(funct, list))
A jaky typ ma ten map, reduce a to +? :)
To je něco pro tebe, viď? :P Teď nám řekneš, že k pochopení reduce není nutné chápat katamorfismy  ;D

To je výhoda funkcionálního programování, máte úplný soubor funkcí map, filter, reduce, a co z nich postavíte, to je na vás. Že z nich jde postavit "cokoliv", vyplývá z té úplnosti. Nic okolo vlastně znát nemusíte. Ale znát to není na škodu, protože pak vaše konstrukty budou elegantnější. Mozek se těmi znalostmi naučí myslet v těchto kategoriích. Ale ten mozek to naučíte stejně, jen když budete ty funkce používat.
Takhle to nejspíš myslel i Mirek, že člověk - když není zbytí - tak nějak samospásem dojde ke kategoriím a spol., aniž by o tom věděl. Akorát reduce je zoufale omezené, už jen seznamy lze zpracovávat zleva či zprava s různými výsledky.

Aoidhghean

Re:Praktická matematika
« Odpověď #56 kdy: 22. 09. 2017, 11:42:21 »
kde se probere složitější algebra, ale styl výuky bude záživný, k věci a s praktickými příklady nejlépe navozenými do praxe (statistika, ekonomie, AI, programování, neuronové sítě atd...).
[...]
Neporadili byste něco typu aplikovaná matematika?
Malinko jsme odbočili, takže zpět k tématu: doporučuji Diskrétní matematiku od Matouška a Nešetřila a návazně Matematické struktury od Pultra, obě knihy jsou čtivé a s příklady.

mrazík

Re:Praktická matematika
« Odpověď #57 kdy: 22. 09. 2017, 11:44:59 »
V tomto ohledu to má fyzik horší, matika pro teorii relativity nebo kvantovou fyziku je dost hardcore.
Na první pohled. Když se podíváte na přednášky prof. Kulhánka na http://www.vsprednasky.cz/ zjistíte, že je to opět jen prosté počítání nad poněkud složitějšími objekty. Ovšem způsob, jakým tohle vysvětluje matematik (něco je i na té stránce) je pro praktika, ať je to fyzik nebo programátor k uzoufání nudný, protože leze do detailů, které v praxi můžou (a z velké části také jsou) být nepodstatné. Jenže to nikdy nelze říct dopředu. Nechci tím říct, že počítání v obecné relativitě je trivialita - skutečné výpočty jsou opravdu hodně pracné, ale pokud vám to fyzik, který tu matematiku dobře zná, předem proseje a oddělí fyzikální zrno od matematických plev, dá se to pochopit. Je dost možné, že tuto v zásadě pedagogickou práci jakou výborně provedl p. Kulhánek v několika oborech fyziky, už někdo udělal i pro některé obory informatiky. Určitě v angličtině, snad se do toho pustí i nějací odvážlivci u nás. Poptávka asi bude, jak je vidět z diskuze.

Re:Praktická matematika
« Odpověď #58 kdy: 22. 09. 2017, 11:50:38 »
No dobře tak tedy názorněji, typy řešit nemusím,
Nechtel jsem to videt nazorneji, ja vim, co a jak to dela. Ale teprve az se zacne bavit o typech, dojdeme k tomu, ze vetsina "beznych" jazyku to takhle obecne neumoznuje - protoze proste nemaji dostatecne obecny typovy system. Takze to "nic na tom neni" plati jenom tehdy, kdyz plati "vrazim tam plus a ono uz se mi to nejak secte". On ten flatMap totiz muze fungovat treba i na funkcich urciteho typu a to uz by se ti v pythonu dost blbe ilustrovalo :) Ze to jde na seznamech jednoduse, vime vsichni.

Takhle to nejspíš myslel i Mirek, že člověk - když není zbytí - tak nějak samospásem dojde ke kategoriím a spol., aniž by o tom věděl.
Obvykle zavadejici tvrzeni, na ktere odpovim obvyklym zpusobem: je to asi tak stejne pravdive jako tvrzeni, ze ucetni, ktera scita cisla v Excellu, dojde samospadem ke grupam, aniz by o tom vedela :)

Re:Praktická matematika
« Odpověď #59 kdy: 22. 09. 2017, 11:54:55 »
doporučuji Diskrétní matematiku od Matouška a Nešetřila
Souhlas, to je skvela kniha, ktera by mela byt pro informatiky povinnou cetbou :)

ale pokud vám to fyzik, který tu matematiku dobře zná, předem proseje a oddělí fyzikální zrno od matematických plev, dá se to pochopit.
Presne's uderil hrebicek na hlavicku: pokud ucitel dobre vi, o cem mluvi, a zaroven vi, co budou studenti v praxi delat, a zaroven ma chut jim to vysvetlit tak, aby to co nejlip pochopili, tak to jde jak po masle.

Problem je, ze u  spousty nasich ucitelu plati jenom prvni bod. Druhy malo kdy. A u tretiho plati nezridka primo opak: ucitel ma zadani podat to co nejsloziteji (at uz proto, aby zhoubne "oddelil zrno od plev", nebo proto, aby vypadal dulezite). Polehcujici okolnost je, ze to zhusta neni uplne chyba primo ucitele, ale spis systemu jako celku...
« Poslední změna: 22. 09. 2017, 11:56:28 od Mirek Prýmek »