20 komentářů k článku Po letech opomíjení se funkcionální programování stává mainstreamem. Proč zrovna teď?:

  1. Pavel Francírek

    Problém je, že prasit se dá v čemkoliv a mizerné programátory žádný svatý grál nezachrání. Pamatuju, jak se, s podobně oslavnými články, před skoro 30 lety vítalo OOP.

    1. Hmmm

      Re:
      Iste, ale nie je to problem Javascriptu. Dokonca by som to ani problemom nenazyval, pretoze to nie je problem, ktory by mal riesenie a ktorym by sa trebalo zaoberat.
      Mizerni vykonavatelia remesla budu vzdy a v kazdom remesle.

    2. Daniel Steigerwald

      Re:
      Ano i ne. Ve funkcionálním programování jakoby prasíte, ale výsledkem je čistej kód. Klidně si šáhnu na global state, a nic se neděje. Proč? Je immutable, můžu z něj jen číst :-) V OOP velmi rychle něco poserete, ve funkcionálním programování kód zdaleka tak rychle nehnije.

      1. Míra

        Re:
        Podle mých zkušeností opravdu nezáleží na frameworku ani programovacím jazyce.
        Zatím jsem nepotkal jazyk ve kterém by se nedalo psát slušně nebo v něm naopak nešlo totálně prasit.
        Knihoven a technik, které měli „zázračně“ zajistit krásný kód už jsem taky viděl spoustu. Žádná z nich nefunguje.
        Kvalitní kód zajistí pouze programátor, žádná zázračná knihovna ani framework. Bez ohledu na to jakou nálepku ta knihovna má.

        Bohužel v poslední době dost často vidím přístup kdy cokoliv s nálepkou Google, Facebook apod. je automaticky považována za vzor dokonalosti a toho co „všichni“ používají.

        Zákazníka v drtivé většině nezajímá kolik cool a trendy knihoven se podařilo do projektu nacpat. Zákazník se zajímá hlavně o bussiness část, tj. funkčnost produktu.

    3. Martin Hassman

      Re:

      Není to problém per se, je jím jen, pokud se to za problém rozhodnete považovat.

      Jinak řečeno není to chyba, jen vlastnost 8-)

    4. Dor

      Re:
      Nemyslím si, že by článek chtěl řešit zachraňování mizerných programátorů zlatým grálem. Zato si myslím, že oslavné články o OOP byly tehdy namístě. Nikdo neříká, že OOP je jediná možná všespása, ale určitě nevnímám OOP jako historický omyl. Ale asi ani o tom nebyl článek. Já jsem z toho hlavně vyčetl důvody, proč a jak je dneska výhodné šáhnout i po funkcionálním programování a vcelku se s tím ztotžňuju.

  2. Ivan Nový

    Protože už chaos způsobený HTML a CSS nestačí :-)
    FP je nesmysl, povede ke špageti kódu, udržovatelnost a modifikovatelnost aplikací se bude blížit 0. FP vede na vytváření mnoha funkcí, takže nikdo nebude zkoumat zda už existuje funkce, která řeší jeho problém a rovnou si napíše vlastní. Viz dnešní hrůzy v javascriptu. Nakonec aplikace bude obsahovat funkce jako mojeDPH, mojeLepsiDPH, dphPraveBoty, dphLeveBoty, … No a změnu DPH z 21% na 30% již nebude možno v aplikaci rozumně provést, protože občas a náhodně vám aplikace spočítá špatnou cenu :-))) Namítnete, že toto samé se děje i v OOP jen pomocí jiných prostředků, ano, ale systém napsaný v FP paradigmatu takto degraduje mnohem rychleji než napsaný v OOP paradigmatu, protože funkce map, filter a reduce k tomu přímo vybízejí, naproti tomu OOP má v sobě zabudovanou přirozenou zpětnou vazbu, která tomu brání – dnes opomíjená a zavrhovaná dědičnost.

    FP má smysl, ale jedině, když modelovaný systém nejprve modelujete pomocí kategorií, a ty teprve jen implementujete v FP paradigmatu. FP má smysl v paralelním prostředí, kdy naopak umožňuje logicky přirozeně rozdělit výpočet, díky neměnnosti datových struktur. FP bude mít význam pro autonomně uvažující stroje, protože program v FP paradigmatu je možno chápat jako data a tak vytvářet samomodifikující se programy.

    1. Olah

      Re: Protože už chaos způsobený HTML a CSS nestačí :-)
      Váš příklad s DPH se v FP dá řešit třeba funkcemi vyšších řádů.

    2. Taco

      Re: Protože už chaos způsobený HTML a CSS nestačí :-)
      V praxi to vypadá tak, že:

      Ve FP vytvoříme tucet různých funkcí dělající to samé. Pak přijde senior a profackuje vývojáře, kteří projdou všechny ty funkce, a zrefaktorují je. A protože funkce je jednoduchá a kompaktní jednotka, ideálně bez stavů, tak to jde snadno.

      V OOP se vytvoří tucet různých metod a tříd, ideálně velice sofistikovaně poděděných (to, že by v praxi dědičnost jakkoliv pomáhala, natož aby byla pozitivní zpětnou vazbou – je mýtus). Následně přijde senior, a začne se chytat za hlavu, a že potřebuje alespoň týden, aby to rozmotal, a dva aby se to otestovalo.

      Já nevím, že jsou lidi, kteří mají dar fakt netrefit skutečné problémy FP a výhody OOP a střílejí takhle mimo.

      Dědičnost a rozhraní jsou právě ty zmiňované kategorie. S OOP to nesouvisí, a vývojáři to neumí používat. Takže sorry, prostě mýtus.

      1. Dor

        Re: Protože už chaos způsobený HTML a CSS nestačí :-)
        A není to také tím, že když někdo dneska programuje funkcionálně, tak je to pravděpodobně člověk, který k oboru přistupuje s jiným očekáváním, než někdo, kdo posledních deset let programoval v javě s tím, že učit se novou technologii se finančně nevyplatí, protože by mu nepomohla vydělal tolik, kolik ho stála ušlá příležitost, když se to učil? Jednoduše řečeno: někdo, kdo hledá práci, kde se programuje funkcionálně, je úplně jiný srdcař, než programátor z ekonomky a dá se čekat, že jeho kód bude vždycky snáze refaktorovatelný, protože přemýšlí nad efektivitou práce jinak.

    3. Palo

      Re: Protože už chaos způsobený HTML a CSS nestačí :-)
      Suhlasim s vami. Aj objektove jazyky maju metody a maju aj closure. A to je to co potrebujeme. Celkova struktura aplikacie silne OOP. Male funkcie ktore iterativne prechadzaju rozne cykly napisane v closures.
      Dakujem, cisty JavaScript je odpad.

  3. no

    Jestli ona ta úspěšnost JS není dána tím, že podporuje DOM operace, běží u klienta a podporuje ho každý, než tím, jaký je to tak „skvělý“ jazyk.
    Nehledě na to, že se volá po skutečných OOP prvcích do JS. Protože ono třeba to zapouzdření není jen nějaká hovadina ale skutečně se využívá, aby nikdo „global“ nehrabal kam nemá a takový „odborný“ zásah pak hledat v 100 MB projektu fultextem stojí za to ….
    Podle mne je to jenom dnešní móda lidi otrávených z OOP a těch, kteří OOP ani neznají. A sekvenční programování, byť zabalené do funkcí jako JS do „object“, už tu bylo a místo do objektů se budou funkcionality shlukovat do funkcí. No to je revoluce. Spíš mi připadne zajímavé, že s tím přichází nová správa paměti a nové možnosti kompilace.
    Ale uvidíme, jak se to rozjede. Nakonec o tom rozhodne hlavně podpora v nasazení a to, kolik nadšenců to bude prosazovat.

    1. pavel

      Re:
      Souhlasím s Vámi. Bude to tím, že prostě v prohlížeči není nic jiného k dispozici, než JavaScript. Být tam Python/Perl/Ruby, tak si myslím, že JavaScript nemá šanci.

    2. nod

      Re:
      Aha a na co svedes uspech Node.js na serverech, kde je tezka konkurence? A proc se prosazuje i v oblastech jako mobilni aplikace (React Native – napr appka Facebooku), desktopove aplikace (napr Spotify, Atom, Visual Code), hardware… ?

  4. tisonet

    Ukázka kódu
    Ta ukázka kódu je motivační nebo odstrašující příklad toho jak psát funkcionální kód? Rozhodně to není pěkný příklad funkcionálního kódu z pohledu čitelnosti.

    1. clpx

      Re: Ukázka kódu
      Ja jsem vlezl do komentářů, jen abych si ověřil, ze na toto někdo upozorňuje.

      Ten kód je absolutní nečitelná, nezpravovaténa a neefektivni tragédie a jestli má sloužit jakou ukázka vhodnosti FP, tak fakt nevim.

      1. Martin Hassman

        Re: Ukázka kódu

        Spadl mi kámen ze srdce, když mi došlo, že ten kód jako ukázka vhodnosti FP sloužit nemá. Protože v opačném případě by to mohla být už vážně tragédie. 8-)

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=18071