Sobes.tech
Middle

Co je to funkcionální programování?

sobes.tech AI

Odpověď od AI

Funkcionální programování je paradigma programování založené na používání funkcí jako hlavních stavebních bloků. Klíčové koncepty:

  • Čisté funkce: Funkce, které při stejných vstupních datech vždy vracejí stejný výsledek a nemají vedlejší účinky (nemění stav mimo funkci, neprovádějí vstup/výstup).
  • Nezměnitelnost dat: Data po vytvoření nemohou být změněna. Místo toho jsou vytvářena nová data.
  • Funkce první třídy: Funkce mohou být předávány jako argumenty, přiřazovány proměnným, vraceny z jiných funkcí.
  • Nepřítomnost stavu: Program nemá měnitelný globální nebo sdílený stav, od kterého závisí provádění funkcí.
  • Deklarativní styl: Popisuje "co" je třeba udělat, ne "jak" (na rozdíl od imperativního stylu, který se zaměřuje na sekvenci kroků).

Výhody:

  • Zlepšená testovatelnost a ladění díky čistým funkcím.
  • Zjednodušení paralelního programování kvůli absenci sdílených měnitelných stavů.
  • Předvídatelnější kód.
  • Zvýšená modularita.

Nevýhody:

  • Může vyžadovat odlišný přístup k řešení problémů, což je neobvyklé pro vývojáře s zkušenostmi v imperativních jazycích.
  • Někdy může vést ke vzniku velkého množství mezilehlých objektů kvůli neproměnitelnosti dat.
  • Složitost implementace některých algoritmů bez použití měnitelných stavů.

Příklady implementace v JavaScriptu:

Použití funkcí vyššího řádu (map, filter, reduce):

// Místo změny pole, map vytvoří nové
const numbers = [1, 2, 3];
const doubled = numbers.map(n => n * 2); // doubled = [2, 4, 6]

Čistá funkce:

// Tato funkce vždy vrací stejný výsledek pro stejné vstupní údaje
// a nemění vnější stav
function add(a, b) {
  return a + b;
}