Sobes.tech
Junior — Middle

Kas saaksite selgitada funktsionaalse programmeerimise põhimõtete ja lähenemisviiside aluseid?

sobes.tech AI

Vastus AI-lt

Funktsionaalne programmeerimine (FP) on programmeerimisparadigma, mis põhineb funktsioonide kasutamisel kui peamistel ehitusplokkidel ning seisundi muutmise ja kõrvaltoimete vältimisel.

FP põhiprintsiibid ja lähenemised:

  • Puhas funktsioonid: funktsioon tagastab alati sama tulemuse sama sisendandmete korral ning ei muuda välist seisundit.
  • Muutumatuse (immutability) põhimõte: andmed ei muutu pärast loomist, selle asemel luuakse uued koopiad muudatustega.
  • Funktsioonid kõrgemal tasemel: funktsioonid, mis võtavad teisi funktsioone argumentidena või tagastavad neid.
  • Rekursioon tsüklite asemel: sageli kasutatakse rekursiooni operatsioonide kordamiseks.
  • Kõrvaltoimete puudumine: funktsioonid ei tohiks muuta väliseid muutujaid, faile, andmebaase jms.

Näide C++-s (lambda-funktsioonide kasutamine):

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

int main() {
    std::vector<int> numbrid = {1, 2, 3, 4, 5};
    
    // Funktsioon kõrgemal tasemel: lambda üleandmine std::for_each-ile
    std::for_each(numbrid.begin(), numbrid.end(), [](int n) {
        std::cout << n * 2 << " ";
    });
    
    return 0;
}

Siin me ei muuda algset vektorit, vaid rakendame lihtsalt funktsiooni iga elemendi jaoks, mis vastab funktsionaalse lähenemise ideedele.