Sobes.tech
Middle

Šta je funkcionalno programiranje?

sobes.tech АИ

Одговор од АИ

Funkcionalno programiranje je paradigma programiranja u kojoj se računanja smatraju evaluacijom matematičkih funkcija, izbegavajući promenljivo stanje i promenljive podatke.

Osnovni principi:

  • Čiste funkcije: Funkcije koje, sa istim ulaznim podacima, uvek vraćaju isti rezultat i nemaju sporedne efekte (npr. menjanje spoljašnjih promenljivih, ulaz/izlaz).
  • Nepromenljivost: Podaci se ne menjaju nakon kreiranja. Svaka "promena" pravi novu kopiju podataka.
  • Funkcije kao objekti prve klase: Funkcije se mogu proslediti kao argumenti, vraćati iz drugih funkcija i dodeljivati promenljivima.
  • Referencijalna transparentnost: Izraz može biti zamenjen njegovom vrednošću bez promene ponašanja programa. Ovo je direktno povezano sa čistim funkcijama.

Prednosti:

  • Predvidivost: Lakše za testiranje i otklanjanje grešaka zbog odsustva sporednih efekata.
  • Paralelizam: Lakše je izvršavati kod paralelno, jer nema zajedničkog promenljivog stanja.
  • Održavanje: Kod postaje modularniji i razumljiviji.

Primer u JavaScript-u:

// Nečista funkcija (menja spoljašnje stanje)
let total = 0;
function addToTotal(value) {
  total += value;
  return total;
}

// Čista funkcija (ne menja spoljašnje stanje, vraća novu vrednost)
function add(a, b) {
  return a + b;
}

// Korišćenje funkcija kao objekata prve klase (funkcija kao argument)
function processArray(arr, handler) {
  return arr.map(handler);
}

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

Iako JavaScript nije strogo funkcionalan jezik, njegove mogućnosti (kao što su čiste funkcije, metode nizova map, filter, reduce) omogućavaju primenu principa funkcionalnog programiranja. U razvoju frontenda, FP se često koristi u bibliotekama i okvirima (npr. Redux, React sa hooks).