Ответ
Функциональная парадигма (ФП) — это стиль программирования, в котором программа рассматривается как вычисление математических функций, избегающее изменяемого состояния и побочных эффектов.
Основные принципы:
- Чистые функции (Pure Functions): Результат зависит только от входных аргументов. Нет побочных эффектов (изменения глобального состояния, ввод/вывод).
// Чистая функция int add(int a, int b) { return a + b; } - Неизменяемость (Immutability): Данные не изменяются после создания. Вместо модификации создаются новые структуры.
- Функции высшего порядка (Higher-Order Functions): Функции, которые могут принимать другие функции в качестве аргументов или возвращать их.
// Функция высшего порядка 'map' List<Integer> result = numbers.stream() .map(x -> x * 2) // Принимает лямбда-функцию .toList(); - Декларативный стиль: Описывается что нужно сделать, а не как (в отличие от императивного стиля с циклами).
Пример на Java (использование Stream API):
import java.util.List;
List<Integer> numbers = List.of(1, 2, 3, 4);
// Декларативный стиль: "возьми числа, отфильтруй чётные, преобразуй в квадраты"
List<Integer> evenSquares = numbers.stream()
.filter(n -> n % 2 == 0) // Чистая функция-предикат
.map(n -> n * n) // Чистая функция-маппер
.toList(); // Создаётся новый неизменяемый список
// evenSquares = [4, 16]
Java, начиная с версии 8, поддерживает элементы ФП через лямбда-выражения, Stream API и неизменяемые коллекции (List.of(), Map.copyOf()).