Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - zboj

Stran: 1 ... 60 61 [62] 63 64 ... 101
916
Vývoj / Re:Má Haskell budoucnost?
« kdy: 15. 05. 2016, 15:47:23 »
Tak purity a laziness (sic!) jsou ortogonální koncepty, a zrovna ten druhý nepovažuju za příliš šťastnou volbu.
A jaký smysl by mělo mít jazyk, který by byl čistý ale ne lazy? Pokud je čistý, tak tam funguje referenční transparentnost, takže v čem by ta non-laziness (díky za upozornění na chybu!) měla spočívat?

To je právě ono, laziness je v takovém případě irelevantní a vztahuje se jen na implementaci (kde má smysl o ní uvažovat). Proto píšu, že jsou to koncepty ortogonální. Asi jsem se špatně vyjádřil, považuju za poněkud nešťastné o "(non)laziness" vůbec uvažovat, protože při zachování rozumných vlastností (především té již zmíněné čistoty) není smysluplné o ní mluvit.

917
Vývoj / Re:Má Haskell budoucnost?
« kdy: 15. 05. 2016, 15:26:19 »
1. lazy a pure jsou jiné koncepty
Ale úzce spolu souvisí. Znáš nějaký default-lazy (call by name) jazyk, který není pure?

Kromě toho, k tomu, aby ti ty problémy s řazením IO vznikly, je lazyness podmínka dostačující:
Kód: [Vybrat]
a = print "a"
b = print "b"
f(a,b)
- pokud by ten jazyk byl lazy, v jakém pořadí vytiskne "a" a "b"? Na základě čeho?

Tak purity a laziness (sic!) jsou ortogonální koncepty, a zrovna ten druhý nepovažuju za příliš šťastnou volbu.

918
Vývoj / Re:Má Haskell budoucnost?
« kdy: 15. 05. 2016, 15:22:49 »
1) Monády jsou složitý aparát? Dvě funkce a dvě rovnice, která musí splňovat, to mi přijde jako celkem málo.
No jo no, ale vidíš, jak se na tom lidi zasekávaj :)

2) Lambda kalkulus ale není programovací jazyk, right? I do Lispu při vší jeho jednoduchosti naplácali informatici různé ptákoviny (z matematického pohledu).
Ale matematici za to všechno můžou jako prvotní příčina! ;)
1) Mě by zajímalo, kolik procent lidí monády chápe, resp. kolik lidí je pochopí po přečtení řekněme článku na Wikipedii nebo původního článku z roku 1990. Protože mi připadá, že jde o jednoduchý koncept, ale kde kdo si napíše svůj "ultimate monad tutorial", aniž by monádám rozuměl, čímž zmate další lidi a díky efektu sněhové koule se tento nešvar rozrůstá a zároveň vzniká dojem, že monády jsou něco magického až ezoterického. Přitom stačí příklad na stránku.
2) Jistě, od matematiků to vzešlo, ale spíše bych to formuloval tak, že matematici vymysleli jednoduchou a přímočarou teorii, jíž se poté chopili informatici, "hezky" to všechno zesložitili (lidově řečeno doje*ali) a teď brečí, že se tomu nedá rozumět.

919
Vývoj / Re:Má Haskell budoucnost?
« kdy: 15. 05. 2016, 14:40:58 »
takže v haskellu to jde stejně jako jinde, ale je to špatně, protože... proč? implementačními detaily se snad zabývat nemusíme, kdo si píše vlastní překladač?
Nejde to stejně jako jinde. V Haskellu se dá pomocí relativně složitého aparátu (monády) dosáhnout toho chování, které je v jiných FP jazycích defaultní. Ani jedno není vyloženě dobře nebo špatně. Prostě když si zvolím čistotu, tak mi to způsobuje komplikace. Udivuje mě, že je kolem toho tolik řečí, mně to přijde jako zjevná věc.

Jinak zrovna matematikům je nějaké programování u ř**i
Lambda calculus vymyslel matematik :)

1) Monády jsou složitý aparát? Dvě funkce a dvě rovnice, která musí splňovat, to mi přijde jako celkem málo.
2) Lambda kalkulus ale není programovací jazyk, right? I do Lispu při vší jeho jednoduchosti naplácali informatici různé ptákoviny (z matematického pohledu).

920
Vývoj / Re:Má Haskell budoucnost?
« kdy: 15. 05. 2016, 14:10:49 »
FP má nemálo výhod - ale rozhodně to není způsob, jak lidé přirozeně přemýšlí.
Haskell imho nebyl vymyšlen tak, aby se podobal způsobu, jak lidi myslí, ale způsobu, jak myslí matematici ;)

Akorát bych byl trochu opatrnější se ztotožňováním FP s pure default-lazy jazykem. To je jenom podmnožina FP jazyků. A spíš menší: OCaml, Racket, F#, Erlang, Elixir - všechny jsou defaultně eager, čili by se tam normálně napsalo "vem vejce, rozklepni ho, utři ho"
A matematici nejsou lidi? :/

Jinak zrovna matematikům je nějaké programování u ř**i, maximálně to může reflektovat, jak si nějaký programátor myslí, že se matematika dělá. Proto to taky vypadá, jak to vypadá, například ta příšerná syntax. Jazyky navržené matematiky jsou třeba HAL/S či Q systémy, případně i Prolog, ale do toho už kafrali informatici.

921
Vývoj / Re:Má Haskell budoucnost?
« kdy: 15. 05. 2016, 12:49:14 »
Logické programování ještě hůře, proto se neprosadilo skoro vůbec. To jsou vlastně už jen kolekce pravidel nesvázaných pořadím vykonávání. Rozhodnout pak, zda nějaký "jazyk" vstupních dat jim odpovídá, se už jen tak nedá. Pak to, zda program dělá to co má, je založeno už jen na víře.

Je to podobná situace jako v účetnictví, kdy v určitém momentu musíte věřit, že je to dobře zaúčtované, protože zkontrolovat to, znamená udělat ho celé znovu, s dalšími novými chybami.

Ostatně evoluce přijala podobný kompromis, imperativní paradigma, které se projevuje v tom, že realitu vnímáme skrze čas a ne v jejím celku, najednou.
To je princip deklarativních jazyků, že nazáleží na pořadí.

922
Vývoj / Re:Má Haskell budoucnost?
« kdy: 15. 05. 2016, 11:44:29 »
Je to akademický jazyk bez podpory imperativního programování, je to dobré na hraní si, ale v praxi je k ničemu.
Ty si taky v praxi k ničemu ... je to "pure" FP jazyk, co by tam mělo co dělat imperativní paradigma trotle? BTW ono tam skutečně je díky IO monádě, proto jsem to pure dal do uvozovek ... A tebe by taky chtělo dát do uvozovek
FP bude mít smysl, až někdo vymyslí rozumnou notaci, přijatelnou má zatím jen clojure, ale i tak je to trochu znásilňování univerzální lispovské formy.

Jinak je problém, že v hlavě máte tuším, že cca 7 paměťových registrů, což na impertivní paradigma stačí, na FP ne, protože v něm pracujete se soubory pravidel, které se vzájemně mohou ovlivňovat, takže odvodit si chování části reálného programu je nemožné, budou vám v hlavě chybět registry, nebudete mít možnost to porovnat najednou.

viz toto:

x := z + 1

kde kontext je schovaný v z, takže výraz je představitelný najednou, jen za z si dosazujete různé hodnoty, mozek výraz nemusí číst znovu, udržuje ho v pracovních registrech, proces dosazování řídí mozek, vytváří si vlastní asociace na základě předchozího čtení programu. Což je přirozený a z hlediska mozku optimalizovaný proces, odpovídající i běžnému vnímání.

oproti tomuto:

f =
     a > 100: x := 200
     a < 100: x := 100
     a = 80: x := 20

kde kontext je vyjádřen explicitně a výraz jako celek je nepředstavitelný, pokud s ním pracujete, musíte porovnávat několikrát jednotlivé řádky a v hlavě přesouvat informace do a z pracovních "registrů", kterých se vám nedostává (nejste schopen si představit jednu entitu na dvou místech zároveň), celý proces je navíc řízen textem programu, takže mozek ho musí číst a analyzovat opakovaně, což unavuje, protože nemůže využívat vlastních optimalizovaných asociací.

FP má budoucnost, ale až v době, kdy se stroje budou programovat samy.

Narazil jsem na zajímavou věc, kdy někdo považuje identifikátor x z výrazu int x := 1 za proměnnou a nikoliv za pojmenování místa v paměti počítače a x nechápe jako stav, kterým tudíž je, ale jako hodnotu.
Zajímavá úvaha, nicméně nepříliš relevantní řekl bych, v imperativním paradigmatu se také krátkodobá paměť dost napíná.
Jak je na tom z tohoto pohledu logické programování?

923
Vývoj / Re:Má Haskell budoucnost?
« kdy: 14. 05. 2016, 21:19:38 »
Slovo "monoid" se tady na fóru nevyslovuje (pokud teda - podle některých - nejsi autista) ;)
Ty můžeš, o tobě to stejně všichni už víme ;)
Máš zajímavou definici opaku "lempl na matematiku", ale brát ti ji nebudu ;)

924
Vývoj / Re:Má Haskell budoucnost?
« kdy: 14. 05. 2016, 20:01:53 »
Citace
Jo, to máš částečně pravdu. Ale 1. když to neznáš, tak to nepotřebuješ (je to "třešnička navíc") 2. stejně elegantně jako lazy evaluací se to dá řešit nějakou podobou streamu, která je intuitivně daleko pochopitelnější.

??? tak když neznáš haskell a FP tak to taky nepotřebuješ... ale hlavně vůbec nechápu, co je na laziness tak složitého. Jakýkoliv strict program funguje úplně v pohodě v lazy prostředí. Opačně to neplatí. Ano, můžeš si udělat explicitní "thunk" jako v Purescriptu, případně s podporou jazyka (ocaml???), ale u člověka, by třeba s haskellem začínal, mi vůbec není jasné, proč by měl laziness řešit. Tak se tvař, že to je strict, výsledky z toho budou padat stejné. Kde je problém?

Citace
Nikomu se dobrovolně nechce přemýlet nad tím, jak to dopadne, když k rozklepnutí vajíčka dojde až po utření ;)
Jenomže to je monadická záležitost. Pure FP, kde je laziness vidět nejvíc, je spíš něco jako "projektový plán". A "krizový management" taky nevyhodnocuješ "eager", ale teprve až v momentě, kdy přijde krize.

v současné době mi nejlepší přijde analogie "programovatelného středníku" v "do" notaci.
Mně přijde do notace naopak jako to největší zlo, které nikdy nemělo vzniknout a když už vzniklo, tak se na něho mělo zapomenout a kdokoli by se měl stydět ho zmínit ;)
Když mě to vysvětlení, že to je programovatelný středník připadá, že to vlastně ani není analogie. A té do-notaci to prostě sedí. Ty příšernosti s "\x -> a >>= ..." jsem fakt nechápal. IMO když se začne s tím, že to je monoid (tedy programovatelný středník, asociativní ideálně jako a >> (b >> c)) a pak se to rozšíří o to vysvětlení, jak se přenáší hodnota z jednoho kusu výpočtu, tak to nepoužívá analogie a je to jednoduché na pochopení. Ale možná jsem ztratil schopnost to vysvětlit....
Slovo "monoid" se tady na fóru nevyslovuje (pokud teda - podle některých - nejsi autista) ;)

925
Vývoj / Re:Má Haskell budoucnost?
« kdy: 14. 05. 2016, 19:12:29 »
Aby pak ta metafora nebyla složitější než matematický zápis monád ;)
Přesně :)))))

Víte, sčítání, to je vlastně jako když vláček jede s polozataženými okýnky a do jednoho z těch okýnek vletí brambora s křídly a z druhé strany vypadne bábovka :)))
:o To je citace z čeho?

926
Vývoj / Re:Má Haskell budoucnost?
« kdy: 14. 05. 2016, 18:47:31 »
"Return" to je v Haskellu a je to matoucí. Normálně se tomu říká "unit", což je mnohem názornější vzhledem k pravidlům pro monády, ne?
Jj.

Chtěl jsem jenom říct, že pokud bys chtěl, můžeš na levou stranu koleje napsat "x" a na pravou "[ x ]" a bude to stejně dobře vysvětlovat/ilustrovat/popisovat i jinou instanci monády - List. A jakoukoliv další. Akorát u těch funkcí je to takový nejnázornější. Funkce je prostě takový kolejiště, po kterým jezdí vláčky - vlákna. List s kolejištěm tak intuitivně nesouvisí ;)
To teda fakt nesouvisí :)
tak analogie vláčku a seznamu není zas tak přitažená za vlasy (v monádě pak pure ~ zařazení vagonu nebo přistoupení člověka na nádraží)
Aby pak ta metafora nebyla složitější než matematický zápis monád ;)

927
Vývoj / Re:Má Haskell budoucnost?
« kdy: 14. 05. 2016, 18:42:48 »
"Return" to je v Haskellu a je to matoucí. Normálně se tomu říká "unit", což je mnohem názornější vzhledem k pravidlům pro monády, ne?
Jj.

Chtěl jsem jenom říct, že pokud bys chtěl, můžeš na levou stranu koleje napsat "x" a na pravou "[ x ]" a bude to stejně dobře vysvětlovat/ilustrovat/popisovat i jinou instanci monády - List. A jakoukoliv další. Akorát u těch funkcí je to takový nejnázornější. Funkce je prostě takový kolejiště, po kterým jezdí vláčky - vlákna. List s kolejištěm tak intuitivně nesouvisí ;)
To teda fakt nesouvisí :)

928
Vývoj / Re:Má Haskell budoucnost?
« kdy: 14. 05. 2016, 18:12:15 »
Ale co s jinými instancemi monád?
Jiné instance monád jde takhle vysvětlit/ilustrovat taky, ale už tam nebude taková hnedka zřejmá korespondence. Ale to není ani u toho klasického zápisu. Zkus někomu vysvětlit, že vytvoření singletonu x ->
  • se jmenuje return ;)
"Return" to je v Haskellu a je to matoucí. Normálně se tomu říká "unit", což je mnohem názornější vzhledem k pravidlům pro monády, ne?

929
Vývoj / Re:Má Haskell budoucnost?
« kdy: 14. 05. 2016, 18:03:39 »
Když řeknu, že monáda jsou koleje, tak to metafora je ;)
No... ne tak docela. Asi nebudeš rozporovat tvrzení

Citace
Monáda je

class Monad m where 
    return :: a -> m a 
 
    (>>=) :: m a -> (a -> m b) -> m b 
 
    (>>) :: m a -> m b -> m b 
    x >> y = x >>= \_ -> y 
 
    fail :: String -> m a 
    fail msg = error msg 

- takže co monáda je, jsem definoval pomocí nějaké posloupnosti symbolů.

...a každý ten řádek (řekněme "aspekt monády"?) můžeš zapsat právě pomocí toho "kolejového zápisu".
Tak lingvisticky to metafora je, ale nehodlám se hádat o slovíčka. Hlavní je, že omezíme-li se na ošetřování výjimek, je to celkem povedené vysvětlení. Ale co s jinými instancemi monád?

930
Vývoj / Re:Má Haskell budoucnost?
« kdy: 14. 05. 2016, 17:48:07 »
možná, že jeden z problémů je používání metafor
To ale de facto není metafora. Je to v podstatě jenom jiný zápis (jiná symbolická reprezentace), stejně jako třeba graf je jiný zápis tabulky čísel.
Když řeknu, že monáda jsou koleje, tak to metafora je ;)

Stran: 1 ... 60 61 [62] 63 64 ... 101