В компьютерных науках, функциональное программирование является парадигмой программирования , где программы строятся применения и составления функций . Это парадигма декларативного программирования, в которой определения функций представляют собой деревья выражений , каждое из которых возвращает значение , а не последовательность императивных операторов, изменяющих состояние программы.
В функциональном программировании функции рассматриваются как первоклассные граждане , что означает, что они могут быть связаны с именами (включая локальные идентификаторы ), передаваться в качестве аргументов и возвращаться из других функций, как и любой другой тип данных . Это позволяет писать программы в декларативном и компонуемом стиле, в котором небольшие функции объединяются по модульному принципу .
Функциональное программирование иногда рассматривается как синоним чисто функционального программирования , подмножества функционального программирования, которое рассматривает все функции как детерминированные математические функции или чистые функции . Когда чистая функция вызывается с некоторыми заданными аргументами, она всегда будет возвращать один и тот же результат, и на нее не могут повлиять никакие изменяемые состояния или другие побочные эффекты . Это контрастирует с нечистыми процедурами , обычными для императивного программирования., который может иметь побочные эффекты (например, изменение состояния программы или получение данных от пользователя). Сторонники чисто функционального программирования утверждают, что, ограничивая побочные эффекты, программы могут иметь меньше ошибок , их легче отлаживать и тестировать , и они больше подходят для формальной проверки .
Функциональное программирование уходит корнями в академические круги , развиваясь из лямбда-исчисления , формальной системы вычислений, основанной только на функциях. Функциональное программирование исторически было менее популярным, чем императивное программирование, но многие функциональные языки сегодня находят применение в промышленности и образовании, включая Common Lisp , Scheme , ] Clojure , Wolfram Language , Racket , Erlang , OCaml , Haskell , и F # . Функциональное программирование также является ключом к некоторым языкам, которые добились успеха в определенных областях, например, R в статистике, J , K и Q в финансовом анализе и XQuery / XSLT для XML . Доменные декларативные языки, такие как SQL и Lex / Yacc, используют некоторые элементы функционального программирования, такие как запрет на изменение значений . Кроме того, многие другие языки программирования поддерживают программирование в функциональном стиле или имеют реализованные функции функционального программирования, такие как C ++ 11 , Kotlin , Perl , PHP , Python , и Scala.
Из статьи мы узнали кратко, но содержательно проС нашими удобными сервисами без комиссии*