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

v

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #105 kdy: 15. 04. 2016, 14:42:34 »
"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.
řeč je o haskellu...
btw připomělo mi to problémy některých lidí s ukazateli v cčku


Re:Jak si rozšiřujete své vědomosti?
« Odpověď #106 kdy: 15. 04. 2016, 14:43:07 »

Super, uz se blizime k pointe!

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.

Když provadim retezeni IO operaci, tak ta monada 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 - monada - se používá třeba v retezeni listu (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 monada, můžu s nimi najednou pracovat stejně, [...], tak na ně můžu použít stejný (generický) algoritmus). Jediná otázka je, jak hluboko chce člověk v té abstrakci jít.

...a tramtadada! Pointa je....

K tomu, abych nekomu vysvetlil, jak se v Haskellu dela IO, nepotrebuju slovo "Monada" vubec pouzit. Ani ho nebudu nijak opisovat. Proste mu ukazu par operaci, kde jedna vytvari IO akci "nacti", jina provadi retezeni IO akci a dalsi vytvari IO akci "vypis".

Ergo... K tomu, abych v Haskellu programoval, nutne pojem Monada vubec nemusim znat, stejne jako ho nemusim znat, kdyz v Javascriptu pouzivam promisy nebo listy (oboje to "jsou monady"*). A uz vubec nepotrebuju znat pojmy funktor, prirozena transformace a bla bla bla.



* ne zboji, sorry, formalne presne to fakt vypisovat nebudu

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #107 kdy: 15. 04. 2016, 14:45:30 »
btw připomělo mi to problémy některých lidí s ukazateli v cčku
Jenze s pouzitim monadovych operaci nikdo zadny problem nema. I ten nejprostsi javascriptar dokaze promisy bez problemu pouzivat. To, s cim maji lidi problem, je (pro ne) nestravitelne obecny a matouci zpusob vysvetlovani. Coz presne rika ten "zcela mylny" clanek.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #108 kdy: 15. 04. 2016, 14:47:50 »

Super, uz se blizime k pointe!

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.

Když provadim retezeni IO operaci, tak ta monada 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 - monada - se používá třeba v retezeni listu (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 monada, můžu s nimi najednou pracovat stejně, [...], tak na ně můžu použít stejný (generický) algoritmus). Jediná otázka je, jak hluboko chce člověk v té abstrakci jít.

...a tramtadada! Pointa je....

K tomu, abych nekomu vysvetlil, jak se v Haskellu dela IO, nepotrebuju slovo "Monada" vubec pouzit. Ani ho nebudu nijak opisovat. Proste mu ukazu par operaci, kde jedna vytvari IO akci "nacti", jina provadi retezeni IO akci a dalsi vytvari IO akci "vypis".

Ergo... K tomu, abych v Haskellu programoval, nutne pojem Monada vubec nemusim znat, stejne jako ho nemusim znat, kdyz v Javascriptu pouzivam promisy nebo listy (oboje to "jsou monady"*). A uz vubec nepotrebuju znat pojmy funktor, prirozena transformace a bla bla bla.



* ne zboji, sorry, formalne presne to fakt vypisovat nebudu
Formálně by to bylo "monoid v kategorii endofunktorů", stručně a jasně ;)

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #109 kdy: 15. 04. 2016, 14:52:20 »
Formálně by to bylo "monoid v kategorii endofunktorů", stručně a jasně ;)
No prave :) Chtel jsem se v-a zeptat, jestli "jednoduse" ma znamenat "nejstrucneji" a pouzit tuhle okridlenou vetu, ale bylo mi to blby. No tak jsi to udelal za me, to jsem rad. :)

...a navic je to takova krasna tecka za touhle debatou, ktera krasne ilustruje, jak se tohle tema vzdycky zvrhne do tehle okridlene vety, kterou muze jako argument pouzit fakt jenom autista... Krasna ilustrace, ze kdyz nekdo monady neni schopen pochopit, nemusi to vubec byt jeho chyba...


v

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #110 kdy: 15. 04. 2016, 14:59:52 »
Formálně by to bylo "monoid v kategorii endofunktorů", stručně a jasně ;)
No prave :) Chtel jsem se v-a zeptat, jestli "jednoduse" ma znamenat "nejstrucneji" a pouzit tuhle okridlenou vetu, ale bylo mi to blby. No tak jsi to udelal za me, to jsem rad. :)

...a navic je to takova krasna tecka za touhle debatou, ktera krasne ilustruje, jak se tohle tema vzdycky zvrhne do tehle okridlene vety, kterou muze jako argument pouzit fakt jenom autista... Krasna ilustrace, ze kdyz nekdo monady neni schopen pochopit, nemusi to vubec byt jeho chyba...
nevím, které "jednoduse" myslíte
tu větu bych nepoužil, nejsem žádný matematik, myslím, že i zboj ji teď použil v žertu (asi)
"jednoduše" v tomto kontextu pro mě znamená nevyhýbat se slovu monáda, když mluvím o použití monadických operací

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #111 kdy: 15. 04. 2016, 15:02:15 »
Formálně by to bylo "monoid v kategorii endofunktorů", stručně a jasně ;)
No prave :) Chtel jsem se v-a zeptat, jestli "jednoduse" ma znamenat "nejstrucneji" a pouzit tuhle okridlenou vetu, ale bylo mi to blby. No tak jsi to udelal za me, to jsem rad. :)

...a navic je to takova krasna tecka za touhle debatou, ktera krasne ilustruje, jak se tohle tema vzdycky zvrhne do tehle okridlene vety, kterou muze jako argument pouzit fakt jenom autista... Krasna ilustrace, ze kdyz nekdo monady neni schopen pochopit, nemusi to vubec byt jeho chyba...
Nemusí, ale bývá. Jinak stejný člověk vyřkl stejně památnou vetu "Objective-C je skvělý jazyk kombinující rychlost Smalltalku a bezpečnost Céčka".

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #112 kdy: 15. 04. 2016, 15:03:36 »
Formálně by to bylo "monoid v kategorii endofunktorů", stručně a jasně ;)
No prave :) Chtel jsem se v-a zeptat, jestli "jednoduse" ma znamenat "nejstrucneji" a pouzit tuhle okridlenou vetu, ale bylo mi to blby. No tak jsi to udelal za me, to jsem rad. :)

...a navic je to takova krasna tecka za touhle debatou, ktera krasne ilustruje, jak se tohle tema vzdycky zvrhne do tehle okridlene vety, kterou muze jako argument pouzit fakt jenom autista... Krasna ilustrace, ze kdyz nekdo monady neni schopen pochopit, nemusi to vubec byt jeho chyba...
nevím, které "jednoduse" myslíte
tu větu bych nepoužil, nejsem žádný matematik, myslím, že i zboj ji teď použil v žertu (asi)
"jednoduše" v tomto kontextu pro mě znamená nevyhýbat se slovu monáda, když mluvím o použití monadických operací
Jasně, že to bylo v žertu :)

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #113 kdy: 15. 04. 2016, 15:05:49 »
...
...a tramtadada! Pointa je....

K tomu, abych nekomu vysvetlil, jak se v Haskellu dela IO, nepotrebuju slovo "Monada" vubec pouzit. Ani ho nebudu nijak opisovat. Proste mu ukazu par operaci, kde jedna vytvari IO akci "nacti", jina provadi retezeni IO akci a dalsi vytvari IO akci "vypis".

Ergo... K tomu, abych v Haskellu programoval, nutne pojem Monada vubec nemusim znat, stejne jako ho nemusim znat, kdyz v Javascriptu pouzivam promisy nebo listy (oboje to "jsou monady"*). A uz vubec nepotrebuju znat pojmy funktor, prirozena transformace a bla bla bla.



* ne zboji, sorry, formalne presne to fakt vypisovat nebudu
Formálně by to bylo "monoid v kategorii endofunktorů", stručně a jasně ;)
No konečně, ten mongoloid  v kategorii endofunktorů už tomu dává smysl.

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #114 kdy: 15. 04. 2016, 15:07:02 »
nevím, které "jednoduse" myslíte
Tohle: http://forum.root.cz/index.php?action=post;quote=163540;topic=13078.90

tu větu bych nepoužil, nejsem žádný matematik, myslím, že i zboj ji teď použil v žertu (asi)
Zadny zert v tom neni, je to presna odpoved na otazku. Akorat je to odpoved pro vetsinu lidi naprosto bezcenna - a presne presne presne o tomhle ten clanek je - ze lidi jsou zbytecne mateni formalne naprosto spravnymi odpovedmi, ktere jsou ale pro ne bezcenne a matouci. A pokud se jim to i presto podari pochopit, dojde k tomu aha-momentu, osvoji si tenhle slovnik a dalsim zajemcum daji presne tu stejnou matouci a v podstate bezcnennou odpoved.

"jednoduše" v tomto kontextu pro mě znamená nevyhýbat se slovu monáda, když mluvím o použití monadických operací
Ale ten clovek nechce vedet, co to je monada! On chce delat IO operace. To je presne to jadro pudla. Nechci vedet, co je to grupa, chci scitat cisla. Nezajima me vubec definice grupy. Nechci vedet, ze operace scitani ma nejake vlastnosti. Chci proste tu operaci pouzit - secist cisla.

Jo, jakmile si to osvojim, muzeme se bavit o tom, ze scitani cisel se da obecne popsat jako grupa -- uplne stejne jako kdyz se v Haskellu naucim pracovat s io akcemi, muzeme se potom bavit o tom, ze ty io operace + prislusny substrat je vlastne instance obecneho konceptu "monada". Ale nemusime. K tomu, abych io delal, to vubec nepotrebuju vedet, je to irelevantni.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #115 kdy: 15. 04. 2016, 15:10:08 »
nevím, které "jednoduse" myslíte
Tohle: http://forum.root.cz/index.php?action=post;quote=163540;topic=13078.90

tu větu bych nepoužil, nejsem žádný matematik, myslím, že i zboj ji teď použil v žertu (asi)
Zadny zert v tom neni, je to presna odpoved na otazku. Akorat je to odpoved pro vetsinu lidi naprosto bezcenna - a presne presne presne o tomhle ten clanek je - ze lidi jsou zbytecne mateni formalne naprosto spravnymi odpovedmi, ktere jsou ale pro ne bezcenne a matouci. A pokud se jim to i presto podari pochopit, dojde k tomu aha-momentu, osvoji si tenhle slovnik a dalsim zajemcum daji presne tu stejnou matouci a v podstate bezcnennou odpoved.

"jednoduše" v tomto kontextu pro mě znamená nevyhýbat se slovu monáda, když mluvím o použití monadických operací
Ale ten clovek nechce vedet, co to je monada! On chce delat IO operace. To je presne to jadro pudla. Nechci vedet, co je to grupa, chci scitat cisla. Nezajima me vubec definice grupy. Nechci vedet, ze operace scitani ma nejake vlastnosti. Chci proste tu operaci pouzit - secist cisla.

Jo, jakmile si to osvojim, muzeme se bavit o tom, ze scitani cisel se da obecne popsat jako grupa -- uplne stejne jako kdyz se v Haskellu naucim pracovat s io akcemi, muzeme se potom bavit o tom, ze ty io operace + prislusny substrat je vlastne instance obecneho konceptu "monada". Ale nemusime. K tomu, abych io delal, to vubec nepotrebuju vedet, je to irelevantni.
Nějak se opakuješ, zkus dodat nějaké argumenty ;)

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #116 kdy: 15. 04. 2016, 15:12:49 »
Nějak se opakuješ, zkus dodat nějaké argumenty ;)
Dodam. Hned po tom, co popisete presne chyby v tom clanku, kdyz jste se nad tim tvrzenim o jeho chybnosti tady tak poplacali po ramenech :)

...jo a abych nezapomnel, taky jeste trva moje otazka, jake "nove pojmy" kdo zavadi. Na to jsem taky nedostal odpoved.

Karel

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #117 kdy: 15. 04. 2016, 15:18:58 »
když chcete v haskellu sečíst dvě čísla, použijete operátor (+), co když chcete načíst a vypsat řetězec (echo)? potřebujete k tomu nějaký operátor?
Jistě. Stejně jako ke sčítání potřebuju nějaký operátor, k zřetězení seznamů potřebuju nějaký operátor, tak úplně stejně i k ZŘETĚZENÍ IO AKCÍ potřebuju nějaký operátor. Že ty operátory splňují nějaké zákony, díky čemuž ten komplex můžu nazývat "monáda" je úplně irelevantní k problému "jak zřetězím IO AKCE?" nebo "Jak provedu IO AKCI?". A nejenom, že to je irelevantní, ale pokud to není dostatečně pochopeno, je to vyloženě škodlivé, protože pak padají přesně tyhle dotazy.
 
Zkus se trochu oprostit od Haskellu a podívej se na to z nadhledu. Děti se prvně naučí sčítat celá čísla. Až o hooodně později se jenom některé z nich dozví, že vlastně to, co do té doby bez problémů dělaly, se dá popsat obecně a říká se tomu grupa. Stejně tak List i IO se oboje dá popsat obecně (jednotně,abstraktně) a tento obecný pojem je MONÁDA.

Pojem "IO monáda" je stejně nesmyslný a zhoubný jako pojem "sčítání grupa". Ten naštěstí nikdo nepoužívá, tak blbí nejsme.

Já se obávám, že tihle lidé zkrátka budou trvat na tom, že než se v první třídě děti naučí počítat, tak by jim nejprve měla být vysvětlena algebra, teorie těles, grup apod. Bez toho, aby prvňáček věděl, co je komutativita, a bez chápání důkazu toho, že operace sčítání je pro přirozená čísla komutativní, prostě sčítat jednociferná čísla nesmí.

Já na vašem místě bych ten boj prostě vzdal, nestojí to za to. Mé děti umí sčítat i malou násobilku bez toho, že by věděly, co je "komutativní monoid". Přestože tomu někteří místní diskutující nebudou chtít uvěřit, protože bez chápání vysokoškolské algebry přece sčítat nejde? Nebo alespoň ne správně.

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #118 kdy: 15. 04. 2016, 15:22:55 »
Já na vašem místě bych ten boj prostě vzdal, nestojí to za to.
Asi mate pravdu. Kdyz mne je to lito, protoze tenhle pristup bohuzel zbytecne spoustu lidi od FP uplne zbytecne odradi :( No, snad se objevi dost lidi, kteri tu zpusobenou skodu budou umet napravit...

Tak aspon vtipek na zaver:

Citace
Just today,  I showed a coworker (we are not a functional shop, mind you) how to simplify his code by isolating his control flow by building a function which chains functions and passes the results of one into the input of the other, and not having to muck about with intermediate state.  He was sold. Then someone else looked at the code and was like "Monads!"  and he looked shocked, enlightened, and dismayed.   The dismay was actually because he expected his understanding of monads to be some sort of  epoch in his programming career, an epiphany accompanied by trumpets and angels singing.  But it was as mundane as it should be.
https://groups.google.com/forum/#!topic/elm-discuss/hEvS6DgNbwM [zvyrazneni moje]
« Poslední změna: 15. 04. 2016, 15:24:48 od Mirek Prýmek »

v

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #119 kdy: 15. 04. 2016, 15:23:25 »
když chcete v haskellu sečíst dvě čísla, použijete operátor (+), co když chcete načíst a vypsat řetězec (echo)? potřebujete k tomu nějaký operátor?
Jistě. Stejně jako ke sčítání potřebuju nějaký operátor, k zřetězení seznamů potřebuju nějaký operátor, tak úplně stejně i k ZŘETĚZENÍ IO AKCÍ potřebuju nějaký operátor. Že ty operátory splňují nějaké zákony, díky čemuž ten komplex můžu nazývat "monáda" je úplně irelevantní k problému "jak zřetězím IO AKCE?" nebo "Jak provedu IO AKCI?". A nejenom, že to je irelevantní, ale pokud to není dostatečně pochopeno, je to vyloženě škodlivé, protože pak padají přesně tyhle dotazy.
 
Zkus se trochu oprostit od Haskellu a podívej se na to z nadhledu. Děti se prvně naučí sčítat celá čísla. Až o hooodně později se jenom některé z nich dozví, že vlastně to, co do té doby bez problémů dělaly, se dá popsat obecně a říká se tomu grupa. Stejně tak List i IO se oboje dá popsat obecně (jednotně,abstraktně) a tento obecný pojem je MONÁDA.

Pojem "IO monáda" je stejně nesmyslný a zhoubný jako pojem "sčítání grupa". Ten naštěstí nikdo nepoužívá, tak blbí nejsme.

Já se obávám, že tihle lidé zkrátka budou trvat na tom, že než se v první třídě děti naučí počítat, tak by jim nejprve měla být vysvětlena algebra, teorie těles, grup apod. Bez toho, aby prvňáček věděl, co je komutativita, a bez chápání důkazu toho, že operace sčítání je pro přirozená čísla komutativní, prostě sčítat jednociferná čísla nesmí.

Já na vašem místě bych ten boj prostě vzdal, nestojí to za to. Mé děti umí sčítat i malou násobilku bez toho, že by věděly, co je "komutativní monoid". Přestože tomu někteří místní diskutující nebudou chtít uvěřit, protože bez chápání vysokoškolské algebry přece sčítat nejde? Nebo alespoň ne správně.
naprostá demagogie, tohle tu nikdo netvrdil