Sobes.tech
Middle

Č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 (nemenia stav mimo funkcie, nevykonávajú vstup/výstup).
  • Nezmeniteľnosť dát: Dáta po vytvorení nemôžu byť zmenené. Namiesto toho sa vytvárajú nové dáta.
  • Funkcie prvej triedy: Funkcie môžu byť odovzdané ako argumenty, priradené premenným, vracané z iných funkcií.
  • Absencia stavu: Program nemá meniaci sa globálny alebo spoločný stav, od ktorého závisí vykonávanie funkcií.
  • Deklaratívny štýl: Opisuje "čo" treba urobiť, nie "ako" (na rozdiel od imperatívneho štýlu, ktorý sa zameriava na sekvenciu krokov).

Výhody:

  • Zlepšená testovateľnosť a ladenie vďaka čistým funkciám.
  • Zjednodušenie paralelného programovania kvôli absencii spoločných meniteľných stavov.
  • Predvídateľnejší kód.
  • Zvýšená modularita.

Nevýhody:

  • Môže vyžadovať iný prístup k riešeniu problémov, čo je neobvyklé pre vývojárov s skúsenosťami v imperatívnych jazykoch.
  • Niekedy môže viesť k vytváraniu veľkého množstva medziobjektov kvôli nepromeniteľnosti dát.
  • Zložitosť implementácie niektorých algoritmov bez použitia meniaceho sa stavu.

Príklady implementácie v JavaScripte:

Použitie funkcií vyššieho rádu (map, filter, reduce):

// Namiesto zmeny poľa, map vytvára nové
const numbers = [1, 2, 3];
const doubled = numbers.map(n => n * 2); // doubled = [2, 4, 6]

Čistá funkcia:

// Táto funkcia vždy vráti rovnaký výsledok pre rovnaké vstupné údaje
// a nemení vonkajší stav
function add(a, b) {
  return a + b;
}