Sobes.tech
Middle

Čo je to funkcionálne programovanie?

sobes.tech AI

Odpoveď od AI

Funkcionálne programovanie je paradigma programovania, v ktorej sa výpočty považujú za hodnotenie matematických funkcií, pričom sa vyhýba meniteľnému stavu a meniteľným údajom.

Hlavné princípy:

  • Čisté funkcie: Funkcie, ktoré pri rovnakých vstupných údajoch vždy vracajú rovnaký výsledok a nemajú vedľajšie účinky (napríklad zmena vonkajších premenných, vstup/výstup).
  • Nezmeniteľnosť: Dáta sa nemenia po ich vytvorení. Akákoľvek "zmena" vytvára novú kópiu dát.
  • Funkcie ako objekty prvej triedy: Funkcie je možné odovzdávať ako argumenty, vracať z iných funkcií a priraďovať k premenným.
  • Referenčná transparentnosť: Výraz môže byť nahradený jeho hodnotou bez zmeny správania programu. To je priamo spojené s čistými funkciami.

Výhody:

  • Predvídateľnosť: Jednoduchšie na testovanie a ladenie kvôli absencii vedľajších účinkov.
  • Paralelizmus: Jednoduchšie spúšťanie kódu paralelne, pretože nie je zdieľaný meniteľný stav.
  • Údržba: Kód sa stáva modulárnejším a zrozumiteľnejším.

Príklad v JavaScripte:

// Nečistá funkcia (mení vonkajší stav)
let total = 0;
function addToTotal(value) {
  total += value;
  return total;
}

// Čistá funkcia (nemení vonkajší stav, vracia novú hodnotu)
function add(a, b) {
  return a + b;
}

// Použitie funkcií ako objektov prvej triedy (funkcia ako argument)
function processArray(arr, handler) {
  return arr.map(handler);
}

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

Hoci JavaScript nie je prísne funkcionálny jazyk, jeho schopnosti (ako čisté funkcie, metódy polí map, filter, reduce) umožňujú aplikovať princípy funkcionálneho programovania. Vo vývoji frontendov sa FP často používa v knižniciach a rámcoch (napríklad Redux, React s hooks).