• ú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í
    FRAKTALEK
    FRAKTALEK --- ---
    LUDWIG_: zajimava zkusenost a ten pohovor zni vazne drsne :) na to si zatim urcite muzu nechat zajit chut. Ja se o funkcionalni programovani zajimam spis jen, ze se mi libi a chci se ho teprve poradne doucit. Ted mam v planu ziskat spis vic praxe ve svem vlastnim oboru a v aktualnich buzz words jako je NoSQL, big data, data science, ... mam ted rozmluvenou pozici v http://sindice.com/ ... a odpovedel mi jeden US bioinfo startup, ze pry se muzu stavit u nich pristi tyden v San Franciscu v kancelari :)) asi nekde nastala chyba v komunikaci. Docela by me zajimalo, jak moc ochotne jsou US firmy a obzvlast startupy sponsorovat H1B viza.

    Jinak ted jsem nahodou narazil na http://fpcomplete.com/ - delaji jen a pouze v Haskellu a zrovna se k nim pridal autor Haskell webframeworku Yesod.

    Taky vim o http://www.cakesolutions.org/ - hlavne Scala, briti, ale jejich hlavni inzenyr je zjevne Cech.
    LUDWIG_
    LUDWIG_ --- ---
    FRAKTALEK: jeste me napadl xensource - toolkit kolem xenu udajne pisou v haskellu.
    nijak zavratnou ale jo - hlasil jsem se k nim minuly rok; nejdriv chteli poslat nejakou ukazku meho kodu nejlepe funkcionalniho, pak jsem mel telefonni pohovor s jednim inzenyrem - na zacatku se me ptal, co bych chtel u nich delat (jestli vic software development nebo system administration) a v jaky z jejich pobocek, a pak sel rovnou k veci, co si pamatuji: jaky jsou hlavni rozdily mezi haskellem a ocamlem, ktery pouzivaji (vyjmenoval jsem asi 6 veci, ale hlavne chtel slyset lazy evaluation), proc je lazy evaluation spatna vec (coz me trochu zaskocilo - programoval jsem v haskellu spis pro radost a lazy evaluation mi prislo genialni), co jsou higher order functions a jak jsou ty zakladni definovany, proc foldovat zleva je lepsi nez zprava (taky me to zaskocilo - pac v haskellu se doporucuje foldr ci foldl', nikdy foldl... holt ocaml je jiny svet) a par dalsich veci a na zaver jeste asi dve algoritmicke ulohy (pamatuji si, ze jedna byla o implementaci generatoru nahodnych cisel s urcitou pravdepodobnostni distribuci).
    byl to docela gril (zas ale na internetu je vsude v diskuzich, ze jsou znamy pro grilovani lidi u pohovoru) a i kdyz to nebylo tak tezky, nemel jsem z myho pohovoru dvakrat dobry pocit... pak se ale za nekolik dnu ozvali, ze jdu do dalsiho kola a chteli by se mnou domluvit dalsi pohovor - v tu dobu jsem ale dostal a prijal nabidku od jiny firmy, takze tady moje osobni zkusenost konci :)
    FRAKTALEK
    FRAKTALEK --- ---
    LUDWIG_: dik. Jane street mam uz nakou dobu v zalozkach, ale zatim se jim nechystam napsat. Mas s nima nejakou osobni zkusenost?

    Galois taky vypada zajimave
    FRAKTALEK
    FRAKTALEK --- ---
    LITTLELI: ja se momentalne rozhlizim po praci, kde bych to pouzivat mohl :)
    LITTLELI
    LITTLELI --- ---
    FRAKTALEK: používáš to v práci? my to máme zakázaný ;)
    FRAKTALEK
    FRAKTALEK --- ---
    LUDWIG_: hlavne ted uz tyhle predsudky stejne pomalu padaji spolu s tim jak roste povedomi a pouzivani jazyku jako je Erlang, Scala nebo Clojure
    LUDWIG_
    LUDWIG_ --- ---
    BROUKOID: kolik z tech "normalnich programatoru, co to vidi jinak," ma nejakou zkusenost s funkcionalnim programovanim? co znam lidi, kteri to povazuji za "akademickou silenost" bez jakekoliv sance v "realnem svete", tak budto nemaji zadnou nebo minimalni zkusenost, nechteji tomu venovat cas a divaji se na to pres prsty.
    proste mi prijde, ze kolem funkcionalniho programovani vzniknul tenhle mytus, ze to je neprakticka akademicka silenost, kterymu zatim dost lidi veri a maji strach / presudky (ze by to byla ztrata casu) se jej naucit... za coz si muze komunita kolem fp do jiste miry sama svym elitismem (spousta matematickych buzzwords atd.)
    SLUPKA
    SLUPKA --- ---
    LITTLELI: třeba to, že když vidíš nějaký problém, tak tě hned napadá na co by to šlo rozdělit, jaké mají ty části společné znaky apod.

    třeba mne strašně ve škole překvapilo, kolik lidí má problémy s rekurzí... a lidé co měli problém s haskellem či prologem, tak pak bylo vidět, jak mají problém napříč celým spektrem, jenom mají třeba tu svou Javu naučenou a běžné problémy jsou schopni řešit...
    LITTLELI
    LITTLELI --- ---
    co to hergot znamená "programátorsky myslet"? to je nějaký nová kategorie? :)
    SLUPKA
    SLUPKA --- ---
    BROUKOID: tak ono to dost souvisí s úrovní programátorů v praxi... pokud je člověk inteligentní a je schopen programátorsky myslet, tak nemá problém s funkcionálním programováním... takových je ale minimum...
    BROUKOID
    BROUKOID --- ---
    BROUKOID: jenom jeste doplnek k ankete:
    Anketa mi prijde asi stejne relevantni jako anketa "Mate radi pejsky?" v klubu milovniku psu :)
    BROUKOID
    BROUKOID --- ---
    LUDWIG_: no anketa je to sice hezka, ale myslim ze odpovedi od lidi z tohoto klubu nebudou predstavovat zrovna reprezentativni vzorek programatoru :)
    Muj prispevek byl mozna lehce nekonkretni: ja totiz osobne funkcionalni programovani povazuji za intuitivni (a mam tendenci psat funkcionalne i v jave, c, apod.), ALE - jsem presvedcen, ze vetsina "normalnich" programatoru to vidi jinak a funkcionalni programovani je pro ne "akademicka silenost" bez jakekoliv sance v "realnem svete".
    A je jedno jestli je to vychovou (muj nazor), nebo tim, ze "funkcionalne" naladeni programatori maji nejakou mentalni abnormalitu :)
    LUDWIG_
    LUDWIG_ --- ---
    Pro objektivnější pohled na tu otázku "intuitivnosti" jsem nahodil anketu do záhlaví.

    Ještě jedno oznámení pro začátečníky: 18. září začíná na Coursera tenhle předmět: https://www.coursera.org/course/progfun (přednáší Martin Odersky AKA otec Scaly :))
    ALMAD
    ALMAD --- ---
    No, ad Sun/Oracle a Fortress, ma nekdo insider info co se chysta dal?

    Oracle lowers the flag on Fortress language project • The Register
    http://www.theregister.co.uk/2012/07/23/oracle_fortress_project_halted/
    LUDWIG_
    LUDWIG_ --- ---
    BROUKOID: tak treba microsoft skryte propasovava funkcionalni programovani do visual studia - f#, ruzny featury a knihovny pro c#, linq... vsak simon peyton jones, jeden z otcu haskellu, pracuje v microsoft research :) map-reduce framework je zas klasicka vec od googlu... takze jako optimistovi mi to prijde jen otazka casu.

    co se intuitivnosti tyce, tak princip toho prikladu v prednasce mi prisel docela intuitivni (coz bude ale tim, ze je to trochu klasicky problem - respektive jsem neco obdobneho resil nekolikrat), jediny, co bylo trochu matouci, byla takova ta terminologie, co si kolem toho vymyslel na ty stadia deleni problemu apod. obecne mi prijde deklarativni pristup intuitivni (kdyz uz tak zacne clovek automaticky premyslet) - jediny pripady, kdy se mi to nezda tolik intuitivni, byvaji, kdyz je to naky tradicni linearni algoritmus prepsany do (pseudo-)funkcionalni podoby (treba u quicksortu) nebo pro nejaky silne neparalelni problem, pro ktery clovek musi vymyslet nakou hodne zamotanou rekurzi (nebo zahodit deklarativni pristup a napsat to imperativne, treba pomoci do-monady :)), aby dodrzel poradi
    BROUKOID
    BROUKOID --- ---
    LUDWIG_: ano, ale to by za tim musela stat firma podobne velikosti jako tehdy sun :)

    ..navic sem stale presvedceny, ze "map-reduce-able" reseni obcas neni "intuitivni" celkem brutalne, jako treba priklad s rozdelenim retezce na slova v te prednasce..
    LUDWIG_
    LUDWIG_ --- ---
    BROUKOID: tak je to pravda, ze tenhle prechod je radikalnejsi nez rucni -> automaticka sprava pameti nebo proceduralni -> objektove orientovane programovani... na druhou stranu si myslim, ze ta bariera kolem "mentalni gymnastiky" je spis diky tomu, ze pres 50 let tu vladne imperativni programovani.

    deklarativni programovani je svym zpusobem prirozenejsi a pohodlnejsi nez imperativni paradigmata - popisu co chci (z ceho se to sklada), nikoliv krok po kroku jak se k tomu dostat... a lidi leta bez problemu pouzivaji sql, linq apod., takze staci, aby lidem docvaklo, ze podobnym zpusobem se da premyslet i u problemu mimo dotazovaci jazyky.
    na to, aby to lidem "docvaklo", staci dobry marketing a pristupnost funkcionalniho jazyka ci radikalniho funkcionalniho rozsireni/predelani nakeho stavajiciho jazyka - neco jako v 90. letech pratelsky nastup javy (vs elitisticky nastup haskellu)... proste schovat tu odstrasujici matematickou hatlamatilku, prilakat spoustu lidi a inzerovat firmam, ze jim to usetri naklady a/nebo zvedne obrat :)
    BROUKOID
    BROUKOID --- ---
    LUDWIG_: ja teoreticky souhlasim ze za idealnich podminek by funkcionalni jazyky mely prevladnout, ale obavam se ze tady je mnohem hlubsi bariera pro "bezne lidi/programatory" - a to je prave matematika - coz me se sice libi, ale hodne lidi ma s matematikou "problem". Spis ocekavam, ze vznikne (vlastne uz vzniklo) mnoho komplikovanych a silne omezenych "paralelnich" knihoven pro javu/c++, ktere lidem castecne zastrou fakt, ze tudy cesta nevede.

    Jinak fortress me taky lehce zaujal, hlavne teda tim, ze NASTESTI na nem moc neni videt ze by vychazel z fortranu :)
    A ten uvod... to jsem mel mozna upozornit ze polovinu prednasky to vypada ze na paralelni zpracovani nikdy nedojde. Ale prave diky nemu ukazal velice dobre to co chtel rict - ze je potreba programatora odstinit jeste vice od hw a ze uz se to v minulosti stalo.
    Jenom si troufnu tvrdit ze prechod od "rucni alokace pameti + adresy natvrdo" nejakemu inteligentnejsimu memory managementu je velmi snadny krok, ktery je pro cloveka prijemny, snadno pochopitelny a primocary. Naproti tomu prechod od linearne strukturovaneho premysleni (udelam to, pak tamto a nakonec tohle) k transformaci na problem resitelny nejakou formou map-reduce je celkem komplikovana mentalni gymnastika ktera rozhodne neni trivialni a dost lidem muze pripadat jako "zbytecna komplikace".. coz nemyslim jako kritiku, ale jenom jako neco co si myslim ze vyrazne zpomali dalsi nastup funkcionalnich paralelnich technik.
    LUDWIG_
    LUDWIG_ --- ---
    BROUKOID: zajimava prednaska, i kdyz trochu hardcore uvod s assemblerem :) kazdopadne paralelni programovani je duvod, proc drive nebo pozdeji funkcionalni jazyky (ci funkcionalni prvky v imperativnich jazycich) ovladnou svet :) ostatne uz o tom mluvil Martin Odersky na lonskych Scala days: [ PAD @ Funkcionální programování (Haskell, LISP, XQuery, OCaml, F#, Scala, ...) - praxe, teorie a uplatnění ] - ve strucnosti: jednim z duvodu, proc v 90. letech objektivni orientovane jazyky ovladly svet, byly GUIs - ted je podobna situace s paralelismem... taky mi prisel zajimavej ten Fortress - Fortran nesleduji, takze mi tenhle jazyk uplne unikl... kazdopadne je pekny, jak "znovuobjevil" spoustu veci z Haskellu - plus ten napad o automatickem testovani algebraickych vlastnosti je fajn... neco podobneho tomu unit testovani me taky pred nakym casem napadlo, ale nedokopal jsem se k tomu, abych neco spachal - mam ale pocit, ze v Coqu je dokonce mozny algebraicky vlastnosti funkci automaticky dokazovat.... ale clovek nejspis musi mit doktorat v obecne matematice ci tak neco, aby dokazal Coq prakticky pouzivat :)
    Kliknutím sem můžete změnit nastavení reklam