Sobes.tech
Junior

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

sobes.tech AI

Odpověď od AI

Funkcionální programování je programovací paradigma 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 (například změnu globálních proměnných, výstup do konzole atd.).
  • Neměnnost dat: data po vytvoření nemohou být změněna. Místo toho je vytvořena nová kopie dat.
  • Funkce první třídy: funkce mohou být přiřazeny proměnným, předávány jako argumenty jiným funkcím a vraceny jako výsledek jiných funkcí.
  • Funkce vyššího řádu: funkce, které přijímají jiné funkce jako argumenty nebo vracejí funkce.
  • Imperativní vs. Deklarativní: Funkcionální programování je více deklarativní, popisuje co je třeba udělat, nikoli jak.

Výhody:

  • Vylepšená testovatelnost: Čisté funkce jsou snadno testovatelné, protože jejich výstup závisí pouze na vstupních datech.
  • Zjednodušení paralelismu: Neměnnost dat odstraňuje problémy s konkurenčním přístupem a závody.
  • Předvídatelnost kódu: Čisté funkce činí chování programu předvídatelnějším.
  • Lepší čitelnost: Kód je modulárnější a srozumitelnější.

Příklad použití v JavaScriptu:

// Imperativní přístup
let numbers = [1, 2, 3, 4, 5];
let doubledNumbers = [];

for (let i = 0; i < numbers.length; i++) {
  doubledNumbers.push(numbers[i] * 2);
}

// Funkcionální přístup (s použitím čisté funkce a vyšší funkce map)
const double = (n) => n * 2; // Čistá funkce

const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = numbers.map(double); // Použití map - vyšší funkce

Často se používá ve spojení s reaktivními přístupy a knihovnami/frameworky jako React, Redux a RxJS.