Функциональное программирование¶
Общие сведения¶
Функциональное программирование — это стиль программирования, который опирается на вычисление выражений, а не на выполнение команд. Выражения формируются посредством комбинирования функций. Функциональный язык — это язык, который поддерживает и поощряет программирование в функциональном стиле.
Функциональное программирование основывается на нескольких важных концепциях:
- чистые функции
- идея неизменности переменных
- композиция функций
Чистые функции¶
Чистые функции должны всегда возвращать один и тот же результат при одних и тех же входных параметрах. Если функция не будет работать предсказуемо – это приведет к нежелательным побочным эффектам.
Идея неизменности переменных¶
Идея неизменности в функциональном программировании заключается в том, что переменные не могут быть изменены после объявления и чистые функции не могут использовать обычные переменные, которые могут быть измененены из любого места программы. Именно поэтому в функциональном программировании для создания циклов используются рекурсивные функции.
Композиция функций¶
Композиция функций – это подход в функциональном программировании, который подразумевает вызов одних функций в качестве аргументов других, для создания сложных составных функций из более простых.
Польза функционального программирования¶
Функциональное программирование помогает сделать код более чистым, предсказуемым и легко читаемым. Использование принципов ФП помогает избавиться от лишних абстракций с непредсказуемым поведением, следовательно, сделать работу программы более предсказуемой и снизить количество возможных ошибок.
Недостатки функционального программирования¶
Функциональное программирование плохо подходит для алгоритмов, основанных на графах из-за сравнительно более медленной работы программы. ФП в целом плохо применимо в решениях, которые годами основывались на использовании императивного подхода.
Самое важное – в функциональных языках нет эффективного неупорядоченного словаря множества. В сравнении с хэш-таблицами, функциональные словари работают значительно хуже, а это может быть критично для некоторых приложений. Однако указанные недостатки можно отнести только к императивным языкам.
Подробнее: