Má Haskell budoucnost?

Kit

Má Haskell budoucnost?
« kdy: 14. 05. 2016, 10:46:22 »
Ve vlákně o Pythonu se rozhořela vášnivá debata o Haskellu. S tímto jazykem teprve začínám a zatím narážím na obtížnou čitelnost některých zdrojáků. Vím, že si na to časem zvyknu, ale přesto se ptám: Má Haskell budoucnost?


v

Re:Má Haskell budoucnost?
« Odpověď #1 kdy: 14. 05. 2016, 10:51:04 »
co máte na mysli, když píšete "budoucnost"? masové rozšíření? dlouhodobé přežívání?

Radek Miček

Re:Má Haskell budoucnost?
« Odpověď #2 kdy: 14. 05. 2016, 11:24:14 »
IMO jednou z hlavních nevýhod Haskellu je, že vyhodnocování není standardně striktní. Tohle například velmi ztěžuje uvažování o tom, kolik paměti program využívá (nestačí uvažovat o funkcích jednotlivě, je třeba uvažovat o celém programu naráz - využitá paměť nezávisí jen na tom, s jakými argumenty je funkce volána, ale i na tom, jaké části výsledku (ne)jsou vyhodnoceny a kdy).

Další nevýhodou GHC Haskellu je komplikovaný typový systém - je to dáno velkým množstvím různých rozšíření, jejichž funkčnost se všelijak překrývá. Navíc vyjádřit v něm zajímavější vlastnosti je komplikované. Oproti jazykům se závislými typy má lepší typovou inferenci, ale IMO ta za to nestojí.

Dále mi v Haskellu chybí silnější systém záznamů (jako má třeba Ur/Web) a podtypový polymorfismus.

A nakonec se mi nelíbí některé rozšířené styly programování v Haskellu. Zejména používání monadických transformátorů - raději bych měl podporu efektů přímo v typovém systému nebo alespoň používal něco jako Eff z Idrisu - oba berou v úvahu i komutující efekty.

Radek Miček

Re:Má Haskell budoucnost?
« Odpověď #3 kdy: 14. 05. 2016, 11:27:59 »
A ještě jedna věc: nelíbí se mi, že typová třída nemůže mít pro jeden typ více instancí.

v

Re:Má Haskell budoucnost?
« Odpověď #4 kdy: 14. 05. 2016, 11:31:02 »
ta jako chcete říct, že ghc(/haskell) není dokonalý, jo?


urcitevitekdo

Re:Má Haskell budoucnost?
« Odpověď #5 kdy: 14. 05. 2016, 12:07:28 »
Jedině Java, to je královský jazyk. Všechno kolem (třeba Python) je fajn tak na to domácí hraní, nebo hodně speciální případy.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Má Haskell budoucnost?
« Odpověď #6 kdy: 14. 05. 2016, 12:49:12 »
co máte na mysli, když píšete "budoucnost"? masové rozšíření? dlouhodobé přežívání?
Nejspíš přežívání v akademické sféře.

Kit

Re:Má Haskell budoucnost?
« Odpověď #7 kdy: 14. 05. 2016, 12:52:18 »
Hlavně mi připadalo zajímavé, co se ve vlákně o Pythonu psalo o Haskellu. Bohužel tedy v místě, kde by to nikdo nehledal, snad jen Google.

Mně se na použití Haskellu nelíbí hlavně ty příšerně dlouhé názvy funkcí, které mnozí programátoři používají. Proč, když máme propracovaný systém namespaces?

xxx

Re:Má Haskell budoucnost?
« Odpověď #8 kdy: 14. 05. 2016, 13:05:31 »
Ma Haskell pritomnost? Ak si OK s aktualnym stavom rozsirenia a vyuzitim, potom ma zmysel riesit, ci sa to udrzi.

Kit

Re:Má Haskell budoucnost?
« Odpověď #9 kdy: 14. 05. 2016, 13:13:58 »
co máte na mysli, když píšete "budoucnost"? masové rozšíření? dlouhodobé přežívání?
Nejspíš přežívání v akademické sféře.

Některé vlastnosti Haskellu jsou mi sympatické, jiné méně a některé mě dokonce i prudí. To se však může změnit, pokud se na to budu dívat trochu z jiného úhlu a naučím se číst symboly "=>", "->", "|>" apod. Je to pro mne prostě nezvyklý zápis a čumím na to jak na nejnovější C++.

andy

Re:Má Haskell budoucnost?
« Odpověď #10 kdy: 14. 05. 2016, 13:20:17 »
Haskell má svoje mouchy - recordy nejsou úplně dobré, systém modulů taky ne. Pro přístup k recordům se dají použít Lens, spíš je to tak, že se Lensy nechce člověku generovat pořád a všude, takže je z toho pak trošku nešikovný mix.

Monadické transformery jsou taky něco, co je trochu zvláštní - teď zrovna koukám do PureScriptu s extensible effects - ale zatím nemám názor na to, zda je to nějak výrazně lepší nebo horší. Určitě to umožňuje to "granulárnější" kontrolu efektů - v Haskellu je to v zásadě buď IO nebo Free, extensible effects umožňují vlastně tagovat funkce, jaké efekty mají - což vlastně není vůbec špatné.

Citace: Radek Miček
IMO jednou z hlavních nevýhod Haskellu je, že vyhodnocování není standardně striktní. Tohle například velmi ztěžuje uvažování o tom, kolik paměti program využívá (nestačí uvažovat o funkcích jednotlivě, je třeba uvažovat o celém programu naráz - využitá paměť nezávisí jen na tom, s jakými argumenty je funkce volána, ale i na tom, jaké části výsledku (ne)jsou vyhodnoceny a kdy).
Tohle je častý názor, a vůbec ho nechápu. Stačí se podívat třeba na to, jak to má purescript, který je naopak strict: https://pursuit.purescript.org/packages/purescript-maybe/0.3.5/docs/Data.Maybe. To má být jako lepší? Ano, problematika space-leaku v haskellu je, ale po prvotních "úspěších" se mi to ve standardním kódu stává extrémně zřídka (na druhou stranu, když se mi to stane, tak to stojí za to a hraničí to s chybou překladače).

Citace: Radek Míček
A ještě jedna věc: nelíbí se mi, že typová třída nemůže mít pro jeden typ více instancí.
Když jsem s haskellem začínal, tak jsem si to myslel taky. Ale za posledních několik projektů si neuvědomuju, že bych vůbec uvažoval o tom něco takhle použít. Máte nějaký praktický příklad, kde to vadí?

Připadá mi, že je to v současné době snad jediný jazyk, který má zároveň velmi silný typový systém a používá se poměrně hodně v praxi - tzn. nikoliv specializované projekty, ale naprosto normální "business". Ano, existují jazyky se silnějším typovým systémem, ale v porovnání s jazyky typu Java, C# jsme někde úplně jinde... navíc v haskellu se snaží pomalinku dependent types implementovat, takže budoucnost je otevřená :)

Citace: Kit
Některé vlastnosti Haskellu jsou mi sympatické, jiné méně a některé mě dokonce i prudí. To se však může změnit, pokud se na to budu dívat trochu z jiného úhlu a naučím se číst symboly "=>", "->", "|>" apod. Je to pro mne prostě nezvyklý zápis a čumím na to jak na nejnovější C++.
No jo, tak chvíli trvá, než to člověk pochopí....třeba u tohodle je nejdůležitější pochopit, jaké je "správné uzávorkování", pak je to najednou triviální :)
<code>f <$> a <*> b <*> c</code>

andy

Re:Má Haskell budoucnost?
« Odpověď #11 kdy: 14. 05. 2016, 13:24:31 »
Mně se na použití Haskellu nelíbí hlavně ty příšerně dlouhé názvy funkcí, které mnozí programátoři používají. Proč, když máme propracovaný systém namespaces?
??? Tomu nerozumím, to je problém Javy, ne Haskellu :) Kde jsi narazil na dlouhá jména funkcí?

v

Re:Má Haskell budoucnost?
« Odpověď #12 kdy: 14. 05. 2016, 13:27:38 »
Citace: Radek Míček
A ještě jedna věc: nelíbí se mi, že typová třída nemůže mít pro jeden typ více instancí.
Když jsem s haskellem začínal, tak jsem si to myslel taky. Ale za posledních několik projektů si neuvědomuju, že bych vůbec uvažoval o tom něco takhle použít. Máte nějaký praktický příklad, kde to vadí?
mám pomocí Free monády vytvořený AST a chci dva interpretry, jeden co generuje cčkový kód a druhý co přímo vykonává, existuje na to trik s newtype, ale ještě se mi to nepovedlo realizovat

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Má Haskell budoucnost?
« Odpověď #13 kdy: 14. 05. 2016, 13:28:42 »
Mně se na použití Haskellu nelíbí hlavně ty příšerně dlouhé názvy funkcí, které mnozí programátoři používají. Proč, když máme propracovaný systém namespaces?
??? Tomu nerozumím, to je problém Javy, ne Haskellu :) Kde jsi narazil na dlouhá jména funkcí?
Dlouhá jména funkcí nemusí být nevýhodou, v kombinaci s vhodně zvolenou konvencí nahrazují dokumentaci.

andy

Re:Má Haskell budoucnost?
« Odpověď #14 kdy: 14. 05. 2016, 13:32:21 »
Citace: Radek Míček
A ještě jedna věc: nelíbí se mi, že typová třída nemůže mít pro jeden typ více instancí.
Když jsem s haskellem začínal, tak jsem si to myslel taky. Ale za posledních několik projektů si neuvědomuju, že bych vůbec uvažoval o tom něco takhle použít. Máte nějaký praktický příklad, kde to vadí?
mám pomocí Free monády vytvořený AST a chci dva interpretry, jeden co generuje cčkový kód a druhý co přímo vykonává, existuje na to trik s newtype, ale ještě se mi to nepovedlo realizovat
A proč máte interpret jako typeclass?