Python

Сферы применения функционального программирования

Задали реферат написать о применении ФП в любой сфере, кроме айти. В каких сферах применяется ФП и как именно? Что можно написать? Буду очень благодарна за помощь!!
Сфера применения функционального программирования ничем не отличается от сферы применения императивного программирования. Функциональное программирование - это просто другой способ записи в точности тех же самых алгоритмов: не как набор инструкций, а как набор рекурсивных математических функций.

Разница в том, что императивное программирование использует преимущественно циклические варианты алгоритмов, а функциональное - исключительно рекурсивные. Но любой циклический алгоритм можно записать в рекурсивном виде, а любой рекурсивный алгоритм в виде цикл + стек. Это взаимозаменяемые формы записи.

ФП не содержит изменяемых переменных, состояний, побочных эффектов. Потому, в ФП намного проще использовать формальную верификацию https://ru.wikipedia.org/wiki/Формальная_верификация , математически доказывающую правильность кода. ФП в связке с формальной верификацией имеет смысл использовать в критически важных системах - в которых недопустимы ошибки в коде.

Чистые функции - функции, не имеющие побочных эффектов. Действий функция может выполнять множество. Но единственным эффектом вызова функции должен быть возвращённый этой функцией результат.

Идемпотентность - при каждом вызове функции с идентичным набором параметров функция обязана возвращать идентичный результат.
Илья Назаров
Илья Назаров
52 683
Лучший ответ
В основном применяется в системах ИИ. Для применения в обычной технике слишком много недостатков:
"Использование только неизменяемых значений и рекурсии может потенциально привести к проблемам с производительностью, включая использование ОЗУ и скорость, поэтому большинство функциональных языков не являются особенно хорошим выбором для мягких или жестких систем реального времени или встроенных вычислений.
Функциональное программирование имеет тенденцию писать код в слишком абстрактной форме, когда сам программист больше не понимает, что он написал через некоторое время."
( https://habr.com/ru/articles/438396/ )
Костя Грибачев
Костя Грибачев
73 387