Sobes.tech
Junior — Middle

Ar galite paaiškinti funkcionalaus programavimo principų ir požiūrių pagrindus?

sobes.tech AI

Atsakymas iš AI

Funkcinis programavimas (FP) yra programavimo paradigma, pagrįsta funkcijų naudojimu kaip pagrindiniais statybiniais blokais ir vengiant būsenos keitimo bei šalutinių poveikių.

FP pagrindiniai principai ir požiūriai:

  • Švarios funkcijos: funkcija visada grąžina tą patį rezultatą tomis pačiomis įvesties duomenimis ir nekeičia išorinio būsenos.
  • Nepriklausomumas (immutability): duomenys nesikeičia po jų sukūrimo, vietoje to kuriamos naujos kopijos su pakeitimais.
  • Funkcijos aukštesniojo lygio: funkcijos, kurios priima kitas funkcijas kaip argumentus arba jas grąžina.
  • Rekursija vietoj ciklų: dažnai naudojama operacijų kartojimui.
  • Be šalutinių poveikių: funkcijos neturėtų keisti išorinių kintamųjų, failų, duomenų bazių ir pan.

Pavyzdys C++ (naudojant lambda funkcijas):

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> skaičiai = {1, 2, 3, 4, 5};
    
    // Aukštesniojo lygio funkcija: perduoti lambda funkciją į std::for_each
    std::for_each(skaičiai.begin(), skaičiai.end(), [](int n) {
        std::cout << n * 2 << " ";
    });
    
    return 0;
}

Čia mes nekeičiam originalų vektorių, o tik taikome funkciją kiekvienam elementui, kas atitinka funkcionalaus požiūrio idėjas.