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.