Функційне програмування
Функційне програмування — парадигма програмування, яка розглядає програму як обчислення математичних функцій та уникає станів та змінних даних. Функційне програмування наголошує на застосуванні функцій, на відміну від імперативного програмування, яке наголошує на змінах в стані та виконанні послідовностей команд.
Іншими словами, функційне програмування є способом створення програм, в яких єдиною дією є виклик функції, єдиним способом розбиття програми є створення нового імені функції та задання для цього імені виразу, що обчислює значення функції, а єдиним правилом композиції є оператор суперпозиції функцій. Жодних комірок пам'яті, операторів присвоєння, циклів, ні, тим більше, блок схем чи передачі управління.[1]
Ширша концепція функційного програмування визначає набір спільних правил та тем замість переліку відмінностей від інших парадигм. До таких, що часто вважаються важливими, належать функції вищого порядку[2] та першого класу, замикання, та рекурсія. До інших поширених можливостей функційних мов програмування належать продовження, система типізації Хіндлі-Мілнера, нечіткі обчислення (включно з, але, не обмежуючись лінивими обчисленнями), та монади.
Основну увагу функційним мовам програмування, особливо, «чисто функційним», приділили академічні дослідники. Однак, до відомих функційних мов програмування, які використовуються в промисловості та комерційному програмуванні належить 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 містять деякі елементи функційного програмування, вони остерігаються використовувати змінні.
[ред.] Виноски
- ↑ Хендерсон 1983, Предисловие редактора перевода
- ↑ Вольфенгаген В. Э. Конструкции языков программирования. Приемы описания. — М: АО «Центр ЮрИнфоР», 2001. — 276 с ISBN 5-89158-079-9.
[ред.] Посилання
- Why functional programming matters, by John Hughes, The Computer Journal, Vol. 32, No. 2, 1989, pp. 98 — 107. [1] — про переваги функційного програмування.
[ред.] Джерела інформації
- Functional programming — стаття в англомовній вікіпедії.
- Peter Henderson, Functional Programming Application and Implementation, 1980. П. Хендерсон, Функциональное программирование, применение и реализация, перевод с англ. Москва, Мир, 1983