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 - Mirek Prýmek

Stran: 1 ... 198 199 [200] 201 202 ... 618
2986
Vývoj / Re:Má Python budoucnost?
« kdy: 16. 05. 2016, 18:05:38 »
Mam dojem, ze ma konkurenci mohutnou a to je Rko. (Ze je mezi temi jazyky propastny rozdil v kvalite asi nema potrebu zduraznovat. Ale bez ohledu na to, jak je Rko zprasene, tak se pouziva hojne.)
Rko se používá hlavně kvůli množství specializovaných knihoven, kterýmu se Python ani se SciPy ani neblíží. Že Python "nemá konkurenci" je spíš zbožné přání než realita. Navíc vědecké použití Pythonu není moc ke cti Pythonu, protože ten tam slouží jenom jako tenoučká obálka. Počítat v něm samém by se nedalo vůbec. Používá se, protože se snadno učí a je dostatečně flexibilní, aby se na ty výpočty dal jakžtakž ohnout (žádná velká sláva, ale jde to).

Ještě taky uvidíme, jestli se chytne Julia, ta by mohla se situací dost zatočit.

2987
Vývoj / Re:Má Haskell budoucnost?
« kdy: 16. 05. 2016, 14:51:44 »
ale nevidím rozdíl mezi C++ a Haskellem (ktomě rychlosti). V C++ si pro STM můžeš vybrat z asi 20 různých existujících libek
No dost rozdíl je v tom, že v Haskellu je STM monáda jako každá jiná. Pokud použiješ některou z těch dvaceti libek, tak nejspíš dostaneš úplně nový typ, se kterým ti nebude fungovat nic (?) a pokud použiješ rozšíření jazyka, tak to už je úplně jiný příběh.

...tohle je právě o těch abstrakcích, které ti jazyk poskytuje nebo neposkytuje.

2988
Vývoj / Re:Má Haskell budoucnost?
« kdy: 16. 05. 2016, 11:28:19 »
To není o C(++) versus Haskell, ale spíš cokoliv mainstreamového imperativního versus něco funkcionálního. Mně osobně to z hlediska nákladů na vývoj a udržovatelnost zatím vychází lépe pro imperativní jazyk. Na funkcionální jazyk neseženu lidi a když je seženu, tak budou dražší. Se zaučením bude taky problém, přijde mi, že funkcionální jazyky mají hodně plochou křivku učení.
To se spíš mýlíš. Nebo respektive jde o to, co chceš dělat. Opět: najdeš na webu různé success stories, kde CTO malé firmy práskl do stolu, zavedl FP a pochvaluje si to. Samozřejmě pokud seš mamutí firma s tisíci programátorů, kteří pro tebe nejsou nic než spotřební zboží, tak tam by to asi těžko fungovalo.

Zajímavá oblast, na které to je vidět, jsou třeba distribuované databáze. Každý rok se vyrojí minimálně jeden startup, který má relativně během chvilky napsaný v Erlangu nějaký DB engine s hodně zajímavými vlastnostmi. Oproti tomu rychlost vývoje klasických RDBMS se počítá spíš na eony ;)

2990
Vývoj / Re:Má Haskell budoucnost?
« kdy: 16. 05. 2016, 11:13:47 »
Nějaký praktický příklad, kdy bude FP jazyk rychlý jako fretka? Teorie je to hezká, ale nějaké praktické srovnání? Tyhle abstraktní výroky nemám rád. Jo až se nějaký hypotetický algoritmus pustí v FP na stoji v více jádry, to bude hukot... No asi bude... Co se na to dá říct?
Co se na to dá říct? Že to je stejně obecné tvrzení jako "zkusil jsem to a bylo to pomalý". Pokud tě to opravdu zajímá, tak si prostě najdi nějaké testy. Nevím jak pro Haskell, ale pro Erlang by ti mělo stačit napsat do Googlu "erlang linear scalability test" a můžeš číst až do smrti :)

2991
Vývoj / Re:Má Haskell budoucnost?
« kdy: 16. 05. 2016, 11:11:51 »
Však Haskell se taky překládá do nativního strojáku, kde je rozdíl?
Rozdíl je v tom, že u Céčka je skoro přímá korespondence mezi zdrojákem a strojákem.

Výkon nic moc
Hrubý výkon sám o sobě je v dnešní době celkem podružná věc. Vždyť stejně dneska všechno jede na virtualizaci, ve které je ještě docker a komponenty spolu komunikují po TCP z jednoho kontejneru do druhého ;)

Pokud někde nutně potřebuješ výkon i za cenu dražšího vývoje a horší udržovatelnosti, tak prostě použiješ céčko.

občas mi to spadlo na velkých datech na stack overflow (když se Haskellu nepovedla nějaká tail recursion optimization).
Haskell v praxi nepoužívám, takže si nejsem jistý, ale tohle mi přijde hodně divný. Tail rekurze by se imho měla poznat vždycky. Problém bývá spíš v tom, že ten program je špatně napsaný, takže tam ta tail rekurze prostě není (je tam rekurze jinde než na konci).

Jasně, je to moje chyba, měl jsem kód napsat líp, aby to Haskell správně pochopil
Nejde o to, že by to nepochopil, ale o to, že ne-koncová rekurze se prostě optimalizovat nedá a na zásobník se ukládat musí.

2992
Vývoj / Re:Má Haskell budoucnost?
« kdy: 16. 05. 2016, 10:54:11 »
Na tom není celkem co tunit, ten algoritmus je asi na 3 řádky.
No tím "vytuněný" jsem myslel, že ten C kód se přeloží do nějakého optimálního strojáku. Tak je asi zřejmé, že nějaký "optimálnější než optimální" stroják asi těžko můžeš z jakéhokoliv jazyka dostat.

Ano je to algoritmicky jednoduché, ale když Haskell nedrží krok ani v jednoduchých čistě matematických nemutable algoritmech, proč bych měl věřit tomu, že to bude v něčem vysokoúrovňovém lepší? Jednoduché algoritmy jsou pomalé, ale složité budou rychlé? Nemyslím si to.
Nikdo tě nenutí si to myslet. Když tě Haskell neoslovuje a nevěříš mu, tak ho nepoužívej, co na tom chceš řešit? :)

2993
Vývoj / Re:Má Haskell budoucnost?
« kdy: 16. 05. 2016, 10:31:05 »
Buď to bylo v Haskellu čitelné, ale oproti C(++) řádově pomalejší, nebo to bylo pomalejší jen asi 2x, ale naprosto nečitelné.
To není nic divnýho, u algoritmicky jednoduchých problémů, kde máš vytuněné řešení v C, bude každý vysokoúrovňový jazyk vždycky pomalejší. Protože prostě C má blíž k hardware, takže na těhle problémech moc není jak ho porazit.

Problémy ze skutečného světa ale nebývají algoritmicky jednoduché a na reálný výkon mají vliv jiné věci než hrubá rychlost výpočtu.

I v těchto umělých příkladech má ale Haskell výkonově blízko k Javě, což mi přijde dost dobrej výsledek na to, jak daleko je ten jazyk od hardware (sémanticky) - viz http://benchmarksgame.alioth.debian.org/u64q/haskell.html

2994
Vývoj / Re:Má Haskell budoucnost?
« kdy: 16. 05. 2016, 00:50:42 »
print("a")("b")("c")
Jasně, napsal jsem to blbě, měl jsem namysli tohle:
Kód: [Vybrat]
print(c,print(b,print(a)))
což je skoro stejnej princip jako to, co píšeš.

Tak jako tak to ale byla zcestná argumentace, protože když se teda bavíme o plně čistém jazyce, tak vynucení pořadí vyhodnocování stejně k ničemu nevede (co se týče IO).

2995
Vývoj / Re:Má Haskell budoucnost?
« kdy: 16. 05. 2016, 00:14:17 »
Ale opakuju otázku - co je na IO monádu složitého?
To se musíš ptát lidí, kteří mají problém to pochopit :)

kde se ukazuje, že to sice na začátku jako opičárna vypadala, ale vlastně to byl docela dobrý nápad.
Nemyslím si, že je opičárna ta volba pure-lazy. To je legitimní designové rozhodnutí, které ti lidi dělali určitě s dobrým vědomím a svědomím. Akorát to má prostě svoje důsledky, no. A jedním z těch důsledků je, že je ten jazyk pak těžko srozumitelný/použitelný pro BFP (běžný Franta programátor ;) ) To je celý, nic víc v těch mých příspěvcích nehledej :)

- podle tebe je celé IO opičárna, ale mě nějak vůbec není jasné, co by mělo být lepší.
Nic. Pokud máš pure jazyk, tak asi nic lepšího než IO monádu nevymyslíš. Ještě by možná stálo za řeč FRP - jakože by program jenom transformoval vstupy na výstupy. Ale to se hodí jenom na něco.

2996
Vývoj / Re:Má Haskell budoucnost?
« kdy: 15. 05. 2016, 22:20:28 »
Minimalne jeste na runtime chyby (trebas nepovedeny pattern match). Mozna jeste neco, co ted nevidim.

(Z tech praktickych veci pak samozrejme vliv na spotrebu pameti a rychlost)
A co?

Můžu ten příklad klíďopíďo přepsat takhle:
Kód: [Vybrat]
let
 x = f (print "a")
in
 g (print "b") x
- v tomhle případě taky není pořadí definováno?
Presne tak.
Takže hodnota x před vyhodnocením g je teda jaká? Žádná, protože f zatím nebylo potřeba vyhodnotit? A tomu pořád říkáme "strict"?

2997
Vývoj / Re:Má Haskell budoucnost?
« kdy: 15. 05. 2016, 22:16:28 »
Tak pokud je to jenom pure funkce vracejici IO akci, tak zase nemas poradi, i kdyby bylo definovane poradi vyhodnocovani parmetru...
Jasně, beru zpět, celý to byla zcestná argumentace. Mohl bych si sice vynutit pořadí vyhodnocení, ale nic bych z toho neměl, protože to vyhodnocení stejně nemůže dělat IO.

Prostě na nutnosti dělání opiček kolem IO by se nic nezměnilo při jakémkoliv způsobu vyhodnocování.

Ze i v ciste pure svete ma teoreticke i prakticke (to jsou ty, kvuli kterym se nepouziva jenom lepsi lazy) dusledky (ne)striktnost
O tom přece není sporu. Ujasnili jsme si, že to má vliv na možnost zacyklení se na něčem, na čem by se výpočet zacyklit neměl. Ještě na něco jiného?

2998
Vývoj / Re:Má Haskell budoucnost?
« kdy: 15. 05. 2016, 22:05:33 »
Jinak mohlo by se hodit:
https://wiki.haskell.org/What_a_Monad_is_not
Spíš myslím, že by se mohlo hodit triviální konstatování: nemají-li fce vedlejší efekty => žádným způsobem nemůžou ovlivňovat okolní svět => je úplně jedno, v jakém pořadí se vyhodnocují - jediný důsledek, který to může mít, je zacyklení se nebo nezacyklení => na IO to nemá žádný vliv

2999
Vývoj / Re:Má Haskell budoucnost?
« kdy: 15. 05. 2016, 22:01:07 »
Mimochodem, nějak ztrácím přehled, co se vlastně snažíte dokázat. Možná by nebylo od věci to jasně formulovat místo snahy chytit mě na švestkách :)

3000
Vývoj / Re:Má Haskell budoucnost?
« kdy: 15. 05. 2016, 21:58:09 »
Ze je jazyk striktni jeste neznamena, ze je urcene poradi vyhodnocovani parametru funkce! Pouze to, ze jsou vsechny vyhodnocene jeste driv, nez se pokracuje tou funkci.
No - a tady se právě dostáváme do toho, že v pure jazyce prostě imho těžko nadefinuješ call-by-value nějak smysluplně. Můžu ten příklad klíďopíďo přepsat takhle:
Kód: [Vybrat]
let
 x = f (print "a")
in
 g (print "b") x
- v tomhle případě taky není pořadí definováno?

(Jinak to, co ukazujes, uz samozrejme neni pure.)
A jak to poznáš bez signatury? print může být klidně pure funkce vracející IO akci.

Stran: 1 ... 198 199 [200] 201 202 ... 618