Функциональное программирование - парадигма программирования, которая рассматривает программу как вычисление математических функций и избегает состояний и переменных данных. Функциональное программирование отмечает применении функций, в отличие от императивного программирования, которое подчеркивает изменениях в состоянии и выполнении последовательностей команд.
Иными словами, функциональное программирование является способом создания программ, в которых единственным действием является вызов функции, единственным способом разбиения программы является создание нового имени функции и задания для этого имени выражения, вычисляет значение функции, а единственным правилом композиции является оператор суперпозиции функций. Никаких ячеек памяти, операторов присвоения, циклов, ни, тем более, блок схем или передачи управления.
Расширенная концепция функционального программирования определяет набор общих правил и тем вместо перечня отличий от других парадигм. К таким, что часто считаются важными, принадлежат функции более высокого порядка и первого класса, замыкания, и рекурсия. Другие распространенных возможностей функциональных языков программирования относятся продолжение, система типизации Хиндли-Милнера, нечеткие вычисления (включая, но, не ограничиваясь ленивыми вычислениями ), и монады.
Основное внимание функциональным языкам программирования, особенно, «чисто функциональным», уделили академические исследователи. Однако, до известных функциональных языков программирования, используемых в промышленности и коммерческом программировании принадлежит Erlang (параллельные программы), R (статистика), Mathematica (символьные вычисления)), J и K (финансовый анализ ), и специализированные языки программирования например XSLT. Существенное влияние на функциональное программирование осуществило лямбда-исчисление, язык APL, язык Lisp и новее язык Haskell.
Функциональное программирование часто называют «функциональным», хотя в действительности функционально-ориентированное программирование - это другая категория, где основой является компоновка программ в ряд программных продуктов.
Языки программирования
Самыми известными языками функционального программирования являются:
- XQuery
- Haskell - чистый функциональное. Назван в честь Хаскелл Карри
- LISP (Джон МакКарти, 1958, множество его потомков, наиболее современные из которых - Scheme и Common Lisp )
- ML (Робин Милнер, 1979, с ныне используемых диалектов известны Standard ML и Objective CAML )
- Miranda (Дэвид Тернер, 1985, который впоследствии дал развитие языку Haskell )
- Erlang - (Joe Armstrong, 1986) функциональная язык с поддержкой процессов
- Nemerle - гибридная функционально / императивная речь.
- F# - функциональная язык для платформы. NET
- Scala - гибридная ОО / функциональная язык для платформы Java
- Clojure - функциональная язык для платформы Java
Еще не полностью функциональные изначальные версии и Lisp и APL внесли особый вклад в создание и развитие функционального программирования. Более поздние версии Lisp, такие как Scheme, а так же различные варианты APL поддерживали свойства и концепции функциональной языка.
Как правило, интерес к функциональных языков программирования, особенно чисто функциональных, был более научный, чем коммерческий. Однако, таким примечательным языкам как Erlang, OCaml, Haskell, Scheme (после 1986) а так же специфическим R (статистика), Mathematica (символическая математика), J и K (финансовый анализ), и XSLT(XML) находили применение в индустрии коммерческого программирования. Такие широко распространенные декларативные языки как SQL и Lex / Yacc содержат некоторые элементы функционального программирования, они остерегаются использовать переменные.