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.