• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    LUDWIG_Funkcionální programování (Haskell, LISP, XQuery, OCaml, F#, Scala, ...) - praxe, teorie a uplatnění

    Clojure's core typed vs Haskell

    8 hlasy od 8 respondentů
      A monad is just a monoid in the category of endofunctors, what's the problem? http://vimeo.com/38223410



      All programming languages evolve towards Lisp.

      Haskell is faster than C++, more concise than Perl, more regular than Python, more flexible than Ruby, more typeful than C#, more robust than Java, and has absolutely nothing in common with PHP. — Autrijus Tang

      There may, indeed, be other applications of the [lambda calculus] than its use as a logic. — Alonzo Church, 1932
      rozbalit záhlaví
      LUDWIG_
      LUDWIG_ --- ---
      ALMAD: no, neni to idealni, ale je nejaky lepsi zpusob jak z toho ven? nebo je lepsi se placat v soucasny situaci?
      ALMAD
      ALMAD --- ---
      LUDWIG_: ...no a jestli scala 3 bude jako python 3, tak potes koste.
      LUDWIG_
      LUDWIG_ --- ---
      Jako Haskell a jeho inference taky nebyla bez problemu, a to Haskell je "jednodussi" jazyk ve smyslu, ze je ciste funkcionalni a nesnazi se kombinanovat OO a interoperabilitu s Javou jako Scala.

      Haskell byl ale pragmatictejsi v tom, ze ma jasne definovany relativne jednoduchy mezi-jazyk Core, do ktery se Haskell preklada... Plus, strategie "avoid success at all cost" se vyplatila, ze ta evoluce jazyka mohla byt pomerne radikalni.
      Scala je ted v tezky situaci, ze se stala fukncionalnim programovanim pro masy, a uz takhle si lidi (pravem) stezuji, jak jsou jednotlivy verze nekompatibilni.

      Moje predpoved je, ze az se finalizuje DOT (https://github.com/namin/dot ), prekope se Scala do nejake nove "ciste" verze, ktera bude soubezne existovat s tou starou polo-rozbitou. Tedy neco jako Python 2.6/7/... a 3.xx.
      LITTLELI
      LITTLELI --- ---
      LUDWIG_: teda nic proti, jen jsem víc pragmaticky orientovaný a víc ocením jak jazyk s reasoningem pomáhá mě než já kompilátoru zbavit ho jeho utrpení
      LITTLELI
      LITTLELI --- ---
      LUDWIG_: upřímně, nemám sílu tohle číst... asi chci opravdu dělat něco užitečnýho.
      LUDWIG_
      LUDWIG_ --- ---
      LUDWIG_:
      True Scala complexity | @yaaang's blog
      http://yz.mit.edu/wp/true-scala-complexity/
      LUDWIG_
      LUDWIG_ --- ---
      LITTLELI LITTLELI: do jiste miry odstrasujici... v nejake prednasce o GHC rikal S-P Jones, ze kombinace parametrickeho a podtypoveho (subtype) polymorfismu je prilis komplikovana, tudiz vetsinou cesta do bazin a ze jedinou vyjimkou je Scala... podle tech Phillipsovo prednasek to ale vypada, ze se v bazine vnitrne brodi, jen to skryvaji.

      Kdybych mel nejak shrnout ty zavery, tak za soucasneho stavu: 1) scalac nebude nikdy rychly, protoze je to neuveritelny moloch, 2) clovek se muze setkat s radou podivnosti, ktere vydedukuji jeho vnitrni pochody, 3) scalac nemuze delat prilis mnoho optimalizaci kvuli bohatosti jazyka.

      Pres tyhle neduhy je Scala porad ale prakticky jazyk a mnohem elegantnejsi nez Java... a treba se ve Scale 3 (ci nake budouci verzi) vybodnou na zpetnou kompatibilitu a prekopou to od zacatku s ohledem na tyhle neduhy.

      Tady je trochu "praktictejsi" pohled (prece jen vetsina programovani ve Scale neni takovy boj jako scalac):

      Skills Matter
      https://skillsmatter.com/...lscasts/4921-some-musings-on-scala-and-clojure-by-a-long-time-scala-dude
      LITTLELI
      LITTLELI --- ---
      Pacific Northwest Scala 2013 We're Doing It All Wrong by Paul Phillips
      https://www.youtube.com/watch?v=TS1lpKBMkgg
      LITTLELI
      LITTLELI --- ---
      Scala Collections: Why Not?
      https://www.youtube.com/watch?v=uiJycy6dFSQ
      LUDWIG_
      LUDWIG_ --- ---
      UETOYO: je nepovinna, takze je to spis extra dokumentace pro ostatni (a sanity check pro refactoring)... inference to odhadne vetsinou spravne - kdyz clovek potrebuje nejaky extra vykon, tak jak pise ANT_39... jsou typy pro unsafe string, unboxed numeriku apod.
      ANT_39
      ANT_39 --- ---
      (Ja sam jsem Cckar resp. C++kar, tak s pouzivanim ruznych lispu a haskellu "in anger" nemam moc zkusenosti.)
      ANT_39
      ANT_39 --- ---
      UETOYO: Signatura je nepovinna, ale urcite se tam dela staticka inference typu, takze prekladac muze optimalizovat. Takovy ghc to AFAIK i dela, ale nemam moc tuseni, jak dobre. Na shootoutu snad byly nejaky vysledky, co naznacovaly, ze kdyz clovek strategicky pouzive nejaky ty unsafe stringy atp., tak to beha temer C rychlosti, ale to zas tak moc neznamena.
      ANT_39
      ANT_39 --- ---
      UETOYO: Teoreticky muze, Common Lisp na to tusim ma nejaky anotace, pomoci kterych jde nak pozicovat funkce na skale mezi rychlosti a bezpecnosti, ruzne scheme kompilatory umely na zaklade staticke analyzy nejake veci vydedukovat a tak. Jak je to v praxi, nevim, tady na tohle tema mluvival ID Sad0ur, ale uz jsem ho tu nakou dobu nevidel.
      LUDWIG_
      LUDWIG_ --- ---
      UETOYO: jj, "The Lisp family of languages are all "strongly typed" in the sense that typing errors are prevented at runtime."
      LUDWIG_
      LUDWIG_ --- ---
      LITTLELI: ja bych pozitivni prinos videl jen ve dvou pripadech LUDWIG_ (ve smyslu ze snizenou produktivitu pri kodeni vyvazi potencialne min debugovani a udrzitelnejsi system); jinak to imho smysl postrada
      LITTLELI
      LITTLELI --- ---
      pokud někdo (volitelně) anotuje typy, tak to pro něj (nebo skupinu) předpokládám má nějaký pozitivní význam z hlediska produktivity. jinak to jaksi postrádá smyslu, že?
      WILD_A
      WILD_A --- ---
      LITTLELI: Pouzil jsem sice ostry vyrazy, hlavne ve snaze vyvolat nejakou diskuzi, ale osobne to fakt vnimam jako nahrazku v nouzi, kdyz to teda nejde jinak. A jinak viz LUDWIG_.
      LUDWIG_
      LUDWIG_ --- ---
      LITTLELI: je to volitelne (=> min uzitecne: nedokaze to z principu odchytit radu veci, co staticke jazyky zvladnou) a musi to byt explicitne vypsane (=> min produktivni oproti untyped Clojure nebo statickym jazykum s inferenci)
      LITTLELI
      LITTLELI --- ---
      WILD_A: tak mně zas přijde, že to takhle nestojí. Mít takovou možnost volitelně mi přijde dost užitečné a rozhodně ne "lámání" nebo nějaké "znásilňování". Docela to odpovídá filosofii Clojure.
      WILD_A
      WILD_A --- ---
      LUDWIG_: Z toho teda flejm nekouka, nejak neumim zaujmout jiny stanovisko nez je to tvoje. Clojure je Lisp a Lisp je jakej je a ma svoje vyhody a ja jsem velkej fanousek. Pokud mi z nejakyho duvodu Lisp nevyhovuje tak proc ho znasilnovat a lamat vzdyt tu jsou i jiny jazyky, za mne treba OCaml, Haskell jsem se zatim moc nenaucil.

      Odbocka ve forme nadavani na pomery, mne osobne prijde snaha nacpat do kazdyho jazyka vsechno co umej ostatni fakt hloupa, pokud danej jazyk v jadru nevyhovuje tak ho prece nepouzivam a zvolim si lepsi nastroj, prirovnavam to k remeslnikovi, ten taky nema na vsechno kladivo, teda pokud je dobrej.
      LUDWIG_
      LUDWIG_ --- ---
      WILD_A: tak hura do toho - mne osobne ten Typed Clojure prijde jako z nouze cnost, pokud je tym a hafec kodu v Clojure nebo clenove tymu, co nic jineho nez Clojure neumi/neuznavaji... na solo projekty mi to prijde zbytecny a staci untyped Clojure a na vsechno ostatni jsou tu staticke jazyky s chytrou inferenci :)
      Kliknutím sem můžete změnit nastavení reklam