Sobes.tech
Junior — Middle

Czy może Pan/Pani wyjaśnić podstawy zasad i podejść programowania funkcyjnego?

sobes.tech AI

Odpowiedź od AI

Programowanie funkcyjne (PF) to paradygmat programowania oparty na używaniu funkcji jako głównych bloków konstrukcyjnych i unikaniu zmiany stanu oraz efektów ubocznych.

Główne zasady i podejścia PF:

  • Czyste funkcje: funkcja zawsze zwraca ten sam wynik dla tych samych danych wejściowych i nie zmienia stanu zewnętrznego.
  • Niezmienność (immutability): dane nie zmieniają się po utworzeniu, zamiast tego tworzone są nowe kopie z modyfikacjami.
  • Funkcje wyższego rzędu: funkcje, które przyjmują inne funkcje jako argumenty lub je zwracają.
  • Rekurencja zamiast pętli: rekurencja jest często używana do powtarzania operacji.
  • Brak efektów ubocznych: funkcje nie powinny zmieniać zmiennych zewnętrznych, plików, baz danych itp.

Przykład w C++ (używając funkcji lambda):

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

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};
    
    // Funkcja wyższego rzędu: przekazanie funkcji lambda do std::for_each
    std::for_each(numbers.begin(), numbers.end(), [](int n) {
        std::cout << n * 2 << " ";
    });
    
    return 0;
}

Tutaj nie zmieniamy oryginalnego wektora, a po prostu stosujemy funkcję do każdego elementu, aby go wyświetlić, co odpowiada ideom podejścia funkcyjnego.