Sobes.tech
Middle

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

sobes.tech AI

Odpověď od AI

Funkcionální programování je paradigma programování, ve kterém jsou výpočty považovány za vyhodnocení matematických funkcí, přičemž se vyhýbá měnitelnému stavu a měnitelným datům.

Hlavní principy:

  • Čisté funkce: Funkce, které při stejných vstupních datech vždy vracejí stejný výsledek a nemají vedlejší účinky (například změnu vnějších proměnných, vstup/výstup).
  • Neměnnost: Data se po vytvoření nemění. Jakákoli "změna" vytváří novou kopii dat.
  • Funkce jako objekty první třídy: Funkce lze předávat jako argumenty, vracet z jiných funkcí a přiřazovat proměnným.
  • Referenční transparentnost: Výraz může být nahrazen jeho hodnotou bez změny chování programu. To je přímo spojeno s čistými funkcemi.

Výhody:

  • Předvídatelnost: Snadnější testování a ladění díky absenci vedlejších efektů.
  • Paralelismus: Snadnější spouštění kódu paralelně, protože není sdílený měnitelný stav.
  • Udržovatelnost: Kód je modulárnější a srozumitelnější.

Příklad v JavaScriptu:

// Nečistá funkce (mění vnější stav)
let total = 0;
function addToTotal(value) {
  total += value;
  return total;
}

// Čistá funkce (nemění vnější stav, vrací novou hodnotu)
function add(a, b) {
  return a + b;
}

// Použití funkcí jako objektů první třídy (funkce jako argument)
function processArray(arr, handler) {
  return arr.map(handler);
}

const numbers = [1, 2, 3];
const doubledNumbers = processArray(numbers, x => x * 2);

Ačkoliv JavaScript není striktně funkční jazyk, jeho schopnosti (jako jsou čisté funkce, metody pole map, filter, reduce) umožňují aplikovat principy funkcionálního programování. Ve vývoji frontendů je FP často využívána v knihovnách a rámcích (například Redux, React s hooks).