Názor k článku Recenze knihy Functional Thinking (Paradigm over syntax) od JS - Skoda, ze v knizce chybi Haskell, protoze to...

  • Článek je starý, nové názory již nelze přidávat.
  • 6. 4. 2016 11:53

    JS (neregistrovaný)

    Skoda, ze v knizce chybi Haskell, protoze to je "enfant terrible" v FP. To ji v mych ocich dost degraduje.

    Byl jsem dlouho odpurcem FP, ale nakonec jsem skoncil (po kratkem koketovani se Scalou a Clojure) u Haskellu. Dlouho jsem premyslel nad tim, cim se FP a OOP lisi, a co to znamena pro architekturu. Nakonec, diskuse s kolegou o OOP, znamenala pro me prulom v teto otazce.

    Moje soucasna domnenka - OOP a FP se lisi v pojeti rozhrani mezi castmi programu, a ve zpusobu zapouzdreni dat. V OOP jsou rozhranim volani metod objektu, tedy akce, ktere ma cilovy objekt provest. Data se pritom snazime zapouzdrit do objektu. Naproti tomu v FP jsou rozhranim samotna data (v podstate typy).

    Svym zpusobem jde o dualni pristup. V OOP predavame v ramci casti programu data zapouzdrena v objektech, v FP predavame (opacnym smerem) funkce, ktere nad temi daty pracuji. IMHO kazdy design pattern v OOP lze prevest do FP tim, ze misto predavani objektu budeme predavat funkce opacnym smerem. Take se na to lze divat jako na zmenu vztazne soustavy - v OOP jsou funkce na miste a data se pohybuji, zatimco v FP se pohybuji funkce a data stoji na miste.

    Proto se tak FP uplatnilo v MapReduce paradigmatu (a jeho naslednicich), ktere je cele o tom, predavat mezi distribuovanymi uzly operace k datum misto samotnych dat. A v podstate i puvodni Unixove paradigma rour je dost funkcionalni, akorat ta datova rozhrani jsou ad hoc, vetsinou textova.

    Myslim, ze pristup FP je lepsi, protoze:

    - Data se lepe semanticky definuji nez operace. Pokud jsou tedy rozhranim data a ne operace, je snazsi tomu rozhrani porozumet.

    - Data jako rozhrani davaji vetsi prostor ke znovupouzitelnosti. Nad objektem, ktery data skryva, jsme omezeni akcemi, ktere dovoluje jeho rozhrani. V FP ale k danym datum muzeme provadet libovolne operace. To je hezky videt prave na Unixovem pristupu, ktery je asi nejlepsim uspechem modularity v pocitacich vubec.

    - V OOP se casto stava, ze potrebujete data prece jenom predat, a to pak znamena spoustu operaci, ktere jsou v podstate identitou. V FP tohle odpada, protoze je zrejme, ze nekde predavate identickou funkci.