Перейти к содержанию

Функциональное программирование

Общие сведения

Функциональное программирование — это стиль программирования, который опирается на вычисление выражений, а не на выполнение команд. Выражения формируются посредством комбинирования функций. Функциональный язык — это язык, который поддерживает и поощряет программирование в функциональном стиле.

Функциональное программирование

Функциональное программирование основывается на нескольких важных концепциях:

  • чистые функции
  • идея неизменности переменных
  • композиция функций

Чистые функции

Чистые функции должны всегда возвращать один и тот же результат при одних и тех же входных параметрах. Если функция не будет работать предсказуемо – это приведет к нежелательным побочным эффектам.

Идея неизменности переменных

Идея неизменности в функциональном программировании заключается в том, что переменные не могут быть изменены после объявления и чистые функции не могут использовать обычные переменные, которые могут быть измененены из любого места программы. Именно поэтому в функциональном программировании для создания циклов используются рекурсивные функции.

Композиция функций

Композиция функций – это подход в функциональном программировании, который подразумевает вызов одних функций в качестве аргументов других, для создания сложных составных функций из более простых.

Польза функционального программирования

Функциональное программирование помогает сделать код более чистым, предсказуемым и легко читаемым. Использование принципов ФП помогает избавиться от лишних абстракций с непредсказуемым поведением, следовательно, сделать работу программы более предсказуемой и снизить количество возможных ошибок.

Недостатки функционального программирования

Функциональное программирование плохо подходит для алгоритмов, основанных на графах из-за сравнительно более медленной работы программы. ФП в целом плохо применимо в решениях, которые годами основывались на использовании императивного подхода.

Самое важное – в функциональных языках нет эффективного неупорядоченного словаря множества. В сравнении с хэш-таблицами, функциональные словари работают значительно хуже, а это может быть критично для некоторых приложений. Однако указанные недостатки можно отнести только к императивным языкам.


Подробнее: