Sobes.tech
Junior

Čo je to funkcionálne programovanie?

sobes.tech AI

Odpoveď od AI

Funkcionálne programovanie je paradigma programovania založená na používaní funkcií ako hlavných stavebných blokov.

Kľúčové koncepty:

  • Čisté funkcie: funkcie, ktoré pri rovnakých vstupných dátach vždy vracajú rovnaký výsledok a nemajú vedľajšie účinky (napríklad zmena globálnych premenných, výstup do konzoly a pod.).
  • Nezmeniteľnosť dát: dáta po vytvorení nemôžu byť zmenené. Namiesto toho sa vytvorí nová kópia dát.
  • Funkcie prvej triedy: funkcie môžu byť priradené premenným, odovzdávané ako argumenty iným funkciám a vracané ako výsledok iných funkcií.
  • Funkcie vyššieho rádu: funkcie, ktoré prijímajú iné funkcie ako argumenty alebo vracajú funkcie.
  • Imperatívne vs. Deklaratívne: Funkcionálne programovanie je viac deklaratívne, opisujúc čo treba urobiť, nie ako.

Výhody:

  • Zlepšená testovateľnosť: Čisté funkcie sú ľahko testovateľné, pretože ich výstup závisí iba od vstupných dát.
  • Zjednodušenie paralelizmu: Nezmeniteľnosť dát odstraňuje problémy s konkurenčným prístupom a súťažami.
  • Predvídateľnosť kódu: Čisté funkcie robia správanie programu predvídateľnejším.
  • Lepšia čitateľnosť: Kód sa stáva modulárnejším a zrozumiteľnejším.

Príklad použitia v JavaScripte:

// Imperatívny prístup
let numbers = [1, 2, 3, 4, 5];
let doubledNumbers = [];

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

// Funkcionálny prístup (s použitím čistej funkcie a vyššej funkcie map)
const double = (n) => n * 2; // Čistá funkcia

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

Často sa používa v kombinácii s reaktívnymi prístupmi a knižnicami/frameworkami ako React, Redux a RxJS.