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

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #75 kdy: 14. 04. 2016, 21:52:31 »
No a uz sa to zvrtlo na nie vobec konstruktivnu debatu :/
Sorry, fakt se za to omlouvám, bylo to nefér si tady se zbojem vyřizovat staré účty :) Slibuju, že tady už spamovat nebudu.


zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #76 kdy: 14. 04. 2016, 21:55:23 »
No a uz sa to zvrtlo na nie vobec konstruktivnu debatu :/
Naopak teď je velevěcná. Jen trochu off topic.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #77 kdy: 14. 04. 2016, 21:57:11 »
Tak jestli jde jen o de dicto vs. de re
Nejen. Těch návazných problémů je pokud si pamatuju víc. Ale každopádně bych se tohodle nedržel zuby nehty, těch příkladů bude určitě víc - např. chtění, znalost, touha, záměr?
Jo, to jsou tzv. modes of existence z knihy Encoding commonsense knowledge, kde se používá Davidsonův (zase filosof) způsob zápisu vět.

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #78 kdy: 15. 04. 2016, 06:57:49 »
...
Podle me je to prani otcem myslenky, protoze treba takove promises pouzivaji i ti nejslabsi javascriptari bez problemu a nejenomze monady ani TK neznaji, ale ani nevi, ze promises jsou monady. Aby to nebylo tak, ze nekdo nevi, ze to nejde, tak to udela ;)

Nekde jsem cetl, jak kdyz se lidi uci programovat v JavaScriptu (jako prvni jazyk), tak nemivaji skoro problemy s promises a callbacky. Co je zajimave, ze kdyz se snazili to naucit zacatecniky, kteri ale uz umeli zaklady z nejakeho imperativniho jazyka (uz si nepamatuju, myslim Java nebo C), tak meli obrovske problemy s temi callbacky a promises - jak pochopit, tak pouzit.

Celkem me prekvapilo, ze ti, co se ucili jako 1. jazyk JS si to tak davali. Casto vidim na forech, jak s tim lide zapasi a to nejsou zadni zacatenici ve svem hlavnim jazyce. Mozna se pri uceni nekde vytvori nejaka bariera, zazije se nejaky zpusob mysleni, a pak je tezke ji obchazet/strhnout?

Nedari se mi to dohledat :(, netusi nekdo jak se to jmenovalo nebo kde to vyslo?

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #79 kdy: 15. 04. 2016, 08:54:47 »
No to jsem zvědav, jak tohle dopadne.
A kdo ho má většího, Mirek* nebo zboj?
* Abecední pořadí!

(autorovi dotazu snad pomohly první dvě stránky)


Re:Jak si rozšiřujete své vědomosti?
« Odpověď #80 kdy: 15. 04. 2016, 11:47:37 »
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? :)

v

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #81 kdy: 15. 04. 2016, 12:08:38 »
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

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #82 kdy: 15. 04. 2016, 12:13:04 »
nemůžu si pomoct, ale ten článek je fakticky chybný
V čem přesně a proč?

a co když chci řetězec načíst a vypsat?
Když chci řetězec vypsat, tak vytvořím IO akci typu IO () a runtime ji zpracuje. S monádami to nemá vůbec nic společného.

a analogie se seznamem je úplně mimo
Cože?

v

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #83 kdy: 15. 04. 2016, 12:20:28 »
nemůžu si pomoct, ale ten článek je fakticky chybný
V čem přesně a proč?

a co když chci řetězec načíst a vypsat?
Když chci řetězec vypsat, tak vytvořím IO akci typu IO () a runtime ji zpracuje. S monádami to nemá vůbec nic společného.

a analogie se seznamem je úplně mimo
Cože?
seznam v haskellu je monáda, protože je pro typ seznam definována instance třídy monáda, ale k práci se seznamy to nezbytné není
ukažte jak bez využití funkcí třídy monáda (a unsafeperformio :-D ) načtetu a vypíšete řetězec

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #84 kdy: 15. 04. 2016, 12:29:12 »
seznam v haskellu je monáda, protože je pro typ seznam definována instance třídy monáda,
Ne. Seznam "je monáda"*, protože splňuje monad laws. List je monáda úplně stejně jako je monáda IO.

ale k práci se seznamy to nezbytné není
Stejně jako nemusím vědět, že list je monáda, nemusí ani vědět, že IO je monáda. Přesto s obojím můžu pracovat.

Jiný příklad na totéž jsem nedávno dával na tom videu o Elmu: sčítání na celých číslech je grupa. Když začátečník položí otázku "jak sečtu dvě čísla", tak jenom blázen může odpovědět "pomocí součet-grupy* - aha ty nevíš, co je grupa. Takže hele, koukej: mějme operaci x .........". Je to nesmysl, protože fakt, že sčítání je grupa, je naprosto irelevantní pro otázku "jak sečtu dvě čísla". A úplně stejně je naprosto irelevantní, že IO je monáda.

ukažte jak bez využití funkcí třídy monáda (a unsafeperformio :-D ) načtetu a vypíšete řetězec
Tohle je ale pro to, co říkám, úplně irelevantní. Když tuhle otázku přesunu na sčítání: jak chceš sčítat přirozená čísla bez využití toho, že sčítání je grupa? No prostě je sečteš! ;)

P.S. pokud ti přijde, že říkám úplné nesmysly, zkus si ten odkazovaný článek přečíst ještě jednou a fakt se snaž pochopit, co přesně říká.
« Poslední změna: 15. 04. 2016, 12:30:47 od Mirek Prýmek »

v

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #85 kdy: 15. 04. 2016, 12:39:01 »
Když tuhle otázku přesunu na sčítání: jak chceš sčítat přirozená čísla bez využití toho, že sčítání je grupa? No prostě je sečteš! ;)
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?

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #86 kdy: 15. 04. 2016, 12:46:59 »
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.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #87 kdy: 15. 04. 2016, 12:53:16 »
seznam v haskellu je monáda, protože je pro typ seznam definována instance třídy monáda,
Ne. Seznam "je monáda"*, protože splňuje monad laws. List je monáda úplně stejně jako je monáda IO.

ale k práci se seznamy to nezbytné není
Stejně jako nemusím vědět, že list je monáda, nemusí ani vědět, že IO je monáda. Přesto s obojím můžu pracovat.

Jiný příklad na totéž jsem nedávno dával na tom videu o Elmu: sčítání na celých číslech je grupa. Když začátečník položí otázku "jak sečtu dvě čísla", tak jenom blázen může odpovědět "pomocí součet-grupy* - aha ty nevíš, co je grupa. Takže hele, koukej: mějme operaci x .........". Je to nesmysl, protože fakt, že sčítání je grupa, je naprosto irelevantní pro otázku "jak sečtu dvě čísla". A úplně stejně je naprosto irelevantní, že IO je monáda.

ukažte jak bez využití funkcí třídy monáda (a unsafeperformio :-D ) načtetu a vypíšete řetězec
Tohle je ale pro to, co říkám, úplně irelevantní. Když tuhle otázku přesunu na sčítání: jak chceš sčítat přirozená čísla bez využití toho, že sčítání je grupa? No prostě je sečteš! ;)

P.S. pokud ti přijde, že říkám úplné nesmysly, zkus si ten odkazovaný článek přečíst ještě jednou a fakt se snaž pochopit, co přesně říká.
Od kdy je proboha sčítání grupa?
« Poslední změna: 15. 04. 2016, 12:54:54 od zboj »

Re:Jak si rozšiřujete své vědomosti?
« Odpověď #88 kdy: 15. 04. 2016, 12:55:26 »
EDIT: sorry, omylem jsem klikl na změnit místo na citace :( Původně to bylo nějak takhle:

Od kdy je proboha sčítání grupa?
Sčítání na celých číslech není grupa?

a dodatek:

Pardon, jednou se mi tam mihlo "přirozená", to byl překlep, celou dobu jsem měl namysli celá.

« Poslední změna: 15. 04. 2016, 13:00:13 od Mirek Prýmek »

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak si rozšiřujete své vědomosti?
« Odpověď #89 kdy: 15. 04. 2016, 13:12:25 »
EDIT: sorry, omylem jsem klikl na změnit místo na citace :( Původně to bylo nějak takhle:

Od kdy je proboha sčítání grupa?
Sčítání na celých číslech není grupa?

a dodatek:

Pardon, jednou se mi tam mihlo "přirozená", to byl překlep, celou dobu jsem měl namysli celá.
Není. Grupa je nějaká množina spolu s nějakou operací, jež splňuje nějaké axiomy. 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 (už na ZŠ nás tehdy ještě soudružka učitelka zdrbávala za nejasné kecy, na VŠ se za to vyhazuje od zkoušky). Potom ani nejde vést rozumnou diskusi.

A k tématu - když řeknu grupa, znamená to jen, že příslušná operace má určitě vlastnosti, samozřejmě je můžu vyjmenovat, ovšem kdo by to pořád dělal. Úkolem definic je zkracovat výklad - je to něco jako syntaktický cukr. Jen v případě monád je ten aparát za tím o dost složitější.
« Poslední změna: 15. 04. 2016, 13:14:24 od zboj »