Jak si rozšiřujete své vědomosti?

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #90 kdy: 15. 04. 2016, 13:34:26 »
A kdo ho má většího, Mirek* nebo zboj?
O to vůbec nejde, já s klidem uznávám, že ho Zboj má většího ;) Každopádně to máme asi konečně prozatímně vyřešeno a už nebude potřeba se k tomu vracet jinak než konstruktivně :)

Ale chtěl bych se vrátit k tomu, že člověk potřebuje znát teorii kategorií, aby mohl programovat v Haskellu. Nejenom, že to není pravda, ale v jistým smyslu může být ta znalost i vyloženě zhoubná (ne pro toho člověka, ale pro jeho okolí). Výborně to vystihuje tenhle článek: https://blog.jle.im/entry/io-monad-considered-harmful.html - a speciálně dobrá je tahle pasáž:

Citace
But having a list like [1,2,3] has nothing to do with monads. Calling every list “the list monad”, or calling every situation where a list would be useful a situation where “you want the List monad” is misleading, false, and just leads to more confusion.

[...]

Even more wrong but you couldn’t really get more wrong in the first place: Use the list monoid and filter even over a list from one to one hundred.

Nakolik to můžu posoudit, IO je z hlediska typů a algebry totéž jako List. A kdyby někdo řekl, že k práci s listy potřebuje člověk znát CT, poslali bysme ho nejspíš přímou cestou do...          psychiatrické léčebny? :)
nemůžu si pomoct, ale ten článek je fakticky chybný

Citace
There is nothing that has to do with monads at all in printing a string.
a co když chci řetězec načíst a vypsat?

a analogie se seznamem je úplně mimo
Jo, ten článek je dost mimo. Ale na druhou stranu je pravda, že ve FP je monáda kde co, takže by to slovo šlo použít k popisu mnoha věcí, čímž ztrácí účinek (zvlášť když se tak blbě vysvětluje). Ne nadarmo se teorii kategorií říká "abstract nonsense".


Re:Jak si rozšiřujete své vědomosti?
« Odpověď #91 kdy: 15. 04. 2016, 13:44:14 »
Sčítání na celých číslech není grupa?
Není. Grupa je nějaká množina spolu s nějakou operací, jež splňuje nějaké axiomy.
Ach jo. A já jsem myslel, že se začneme bavit jako lidi :( Teď už fakt rýpeš jenom tak ze sportu, že jo? Přiznej se :)

Myslím, že kdo chce chápat a pojem grupa zná, ten v pohodě chápe, a není potřeba vypisovat "uspořádaná dvojice (Z,+), kde Z jsou celá čísla a + je operace sčítání definovaná [následuje definice sčítání], je grupa, přičemž grupa je definována [následuje definice grupy]".

Tím jsme opět u přesnosti vyjadřování, ani do toho nebudu tahat matiku, protože v případě definic by mělo být přesné vyjadřování normou všude
Je škoda, že se stejným svatým zápalem nepožaduješ po v-ovi přesnou definici monády a neprotestuješ proti termínu "IO monáda", který je o řád nepřesnější než pojem "sčítání na celých číslech".

Bylo by to užitečné, protože bys aspoň sáhodlouze vypsal to, co jsem napsal jenom ve zkratce. Krásně by pak bylo vidět, jak nesmyslné je tvrzení "v Haskellu se io dělá pomocí monády".

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #92 kdy: 15. 04. 2016, 13:53:13 »
Sčítání na celých číslech není grupa?
Není. Grupa je nějaká množina spolu s nějakou operací, jež splňuje nějaké axiomy.
Ach jo. A já jsem myslel, že se začneme bavit jako lidi :( Teď už fakt rýpeš jenom tak ze sportu, že jo? Přiznej se :)

Myslím, že kdo chce chápat a pojem grupa zná, ten v pohodě chápe, a není potřeba vypisovat "uspořádaná dvojice (Z,+), kde Z jsou celá čísla a + je operace sčítání definovaná [následuje definice sčítání], je grupa, přičemž grupa je definována [následuje definice grupy]".

Tím jsme opět u přesnosti vyjadřování, ani do toho nebudu tahat matiku, protože v případě definic by mělo být přesné vyjadřování normou všude
Je škoda, že se stejným svatým zápalem nepožaduješ po v-ovi přesnou definici monády a neprotestuješ proti termínu "IO monáda", který je o řád nepřesnější než pojem "sčítání na celých číslech".

Bylo by to užitečné, protože bys aspoň sáhodlouze vypsal to, co jsem napsal jenom ve zkratce. Krásně by pak bylo vidět, jak nesmyslné je tvrzení "v Haskellu se io dělá pomocí monády".

1) U definic jde ale hlavně o ty, co nějaký pojem neznají. Kdybys někomu neznalému vysvětloval grupy na příkladu a řekl, že sčítání na celých číslech je grupa, tak ho zmateš. Čili bavme se ne jako lidi (co to má vlastně vůbec znamenat?), ale jako matematici nebo computer scientists.

2) Tahle diskuze mě nijak zvlášť nezajímá a definici monády člověk najde na Wikipedii a milionech blogů.

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #93 kdy: 15. 04. 2016, 13:59:53 »
1) U definic jde ale hlavně o ty, co nějaký pojem neznají. Kdybys někomu neznalému vysvětloval grupy na příkladu a řekl, že sčítání na celých číslech je grupa, tak ho zmateš.
Bingo! A to je presne pointa toho clanku a duvod, proc jsem ho zminil: pokud nekdo tvrdi, ze clovek potrebuje pochopit monady k tomu, aby mohl naprogramovat io v Haskellu, tak je to stejne nesmyslne, jako tvrdit, ze clovek musi pochopit grupy k tomu, aby mohl scitat cela cisla. Pokud to udelas, "tak ho zmateš"(cit zboj) - presne! A o tom je prave ten clanek.

Čili bavme se ne jako lidi (co to má vlastně vůbec znamenat?), ale jako matematici nebo computer scientists.
Grupu jsem pouzil jako priklad, o kterem jsem predpokladal, ze jeji definici kazdy zna, nebo si ji snadno najde. Nebavime se o definici grupy a nevim, proc bych ji mel definovat.

v

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #94 kdy: 15. 04. 2016, 14:00:26 »
Jo, ten článek je dost mimo. Ale na druhou stranu je pravda, že ve FP je monáda kde co, takže by to slovo šlo použít k popisu mnoha věcí, čímž ztrácí účinek (zvlášť když se tak blbě vysvětluje). Ne nadarmo se teorii kategorií říká "abstract nonsense".
souhlasím, mi právě strašně lezou na nervy lidi, kteří v tom chtějí dělat ještě větší zmatek (např. zaváděním nové terminologie)


Re:Jak si rozšiřujete své vědomosti?
« Odpověď #95 kdy: 15. 04. 2016, 14:05:14 »
souhlasím, mi právě strašně lezou na nervy lidi, kteří v tom chtějí dělat ještě větší zmatek (např. zaváděním nové terminologie)
A proc teda nenapises konkretne, co je tam spatne? Jakou "novou terminologii"? "IO akce"? Jako treba tady: https://wiki.haskell.org/IO_inside#IO_actions_as_values ? Nebo?

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #96 kdy: 15. 04. 2016, 14:05:56 »
Jo, ten článek je dost mimo. Ale na druhou stranu je pravda, že ve FP je monáda kde co, takže by to slovo šlo použít k popisu mnoha věcí, čímž ztrácí účinek (zvlášť když se tak blbě vysvětluje). Ne nadarmo se teorii kategorií říká "abstract nonsense".
souhlasím, mi právě strašně lezou na nervy lidi, kteří v tom chtějí dělat ještě větší zmatek (např. zaváděním nové terminologie)
Tak to dopadá, když do toho kafrají lidi, co tomu nerozumí. Začnou kritizovat zavedenou (a logickou) terminologii, vymyslí si nová pojmenování a tím z toho vznikne guláš. A pak ještě ten svůj guláš (bez znalosti oné zavedené terminologie) obhajují jako lepší nebo přirozenější. To je, jako kdybych Angličanům tvrdil, ať zruší všechny složené časy, protože jsou nesmyslné a ke všemu stačí simple past.

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #97 kdy: 15. 04. 2016, 14:08:54 »
Začnou kritizovat zavedenou (a logickou) terminologii,
Zboji, ted zase kritizujes pro pkritiku, nebo opravdu nechapes pointu toho clanku?! (tomu se mi nechce verit) Ten clanek prece nekritizuje zavedenou terminologii, ani nenavrhuje zadnou jinou, ale kritizuje zpusob vysvetlovani a pouzivani dobre definovanych pojmu tam, kde jsou uplne irelevantni ("dva integery sectete pomoci plus-grupy").

v

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #98 kdy: 15. 04. 2016, 14:11:47 »
("dva integery sectete pomoci plus-grupy").
ne, nesečtete, uděláto to pomocí operace "sčítání"
IO akce zřetězíte pomocí funkce třídy Monad zvané lidově "bind" a teď viz můj první dnešní příspěvěk

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #99 kdy: 15. 04. 2016, 14:13:48 »
Začnou kritizovat zavedenou (a logickou) terminologii,
Zboji, ted zase kritizujes pro pkritiku, nebo opravdu nechapes pointu toho clanku?! (tomu se mi nechce verit) Ten clanek prece nekritizuje zavedenou terminologii, ani nenavrhuje zadnou jinou, ale kritizuje zpusob vysvetlovani a pouzivani dobre definovanych pojmu tam, kde jsou uplne irelevantni ("dva integery sectete pomoci plus-grupy").
Nechápu, k čemu tak dlouhý článek, když se ta "pointa" dá vyjádřit jednou větou. Jinak monády se taky dají vysvětlit velice jednoduše.

v

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #100 kdy: 15. 04. 2016, 14:18:37 »
monády se taky dají vysvětlit velice jednoduše.
tak ukažte :)

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #101 kdy: 15. 04. 2016, 14:20:19 »
("dva integery sectete pomoci plus-grupy").
ne, nesečtete, uděláto to pomocí operace "sčítání"
IO akce zřetězíte pomocí funkce třídy Monad zvané lidově "bind" a teď viz můj první dnešní příspěvěk
No dyt to rikam propanajana, ne?!

"abyste mohli udelat IO, musite pochopit monady" ~ "abyste mohli  scitat integery, musite pochopit grupy"

"jak vypisu retezec? Pomoci IO Monady!" ~ "Jak sectu dva integery? Pomoci Int Grupy!"

"ukažte jak bez využití funkcí třídy monáda načtet[e] a vypíšete řetězec" ~ "ukazte, jak bez vyuziti tridy grupa sectu integery"

"k programovani v haskellu je potreba znat teorii kategorii" ~ "k scitani integeru je potreba znat abstraktni algebru"



uff, ja uz na to asi nemam silu...

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #102 kdy: 15. 04. 2016, 14:26:42 »
"ukažte jak bez využití funkcí třídy monáda načtet[e] a vypíšete řetězec" ~ "ukazte, jak bez vyuziti tridy grupa sectu integery"
- a na tomhle to je videt uplne ze vseho nejlip. Zadnou tridu Monad totiz vubec nepotrebuju. Potrebuju jenom ty operace, ktere vytvari IO akce, retezi je, poslou je do runtimu. Zadna trida Monad vubec nemusi existovat, k io ji vubec nepotrebuju.



zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #103 kdy: 15. 04. 2016, 14:28:11 »
("dva integery sectete pomoci plus-grupy").
ne, nesečtete, uděláto to pomocí operace "sčítání"
IO akce zřetězíte pomocí funkce třídy Monad zvané lidově "bind" a teď viz můj první dnešní příspěvěk
No dyt to rikam propanajana, ne?!

"abyste mohli udelat IO, musite pochopit monady" ~ "abyste mohli  scitat integery, musite pochopit grupy"

"jak vypisu retezec? Pomoci IO Monady!" ~ "Jak sectu dva integery? Pomoci Int Grupy!"

"ukažte jak bez využití funkcí třídy monáda načtet[e] a vypíšete řetězec" ~ "ukazte, jak bez vyuziti tridy grupa sectu integery"

"k programovani v haskellu je potreba znat teorii kategorii" ~ "k scitani integeru je potreba znat abstraktni algebru"



uff, ja uz na to asi nemam silu...
Si z toho asi děláš ř*ť (?)... Teda beru to, cos teď napsal, jako (pokus o) vtip, ale odpovím vážně: Když sčítám dvě celá čísla, tak ta grupa tam implicitně je, jen o ní nemusím mluvit (a třeba ani vědět). Ale když to vím, nepřekvapí mě, že úplně stejný objekt - grupa - se používá třeba v kvantových výpočtech (jen nad jinou množinou, ať mě zase nechytáš za slovo). Prostě abstrakce je mnohdy užitečná (když zjistím, že dva na první pohled nesouvisející objekty jsou grupa, můžu s nimi najednou pracovat stejně, podobně jako když dva různé objekty jsou monáda, tak na ně můžu použít stejný (generický) algoritmus). Jediná otázka je, jak hluboko chce člověk v té abstrakci jít.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #104 kdy: 15. 04. 2016, 14:32:00 »
monády se taky dají vysvětlit velice jednoduše.
tak ukažte :)
Právě hledám ten článek, na který jsem nedávno narazil, kde to je.