Функційне програмування

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Функційне програмування — парадигма програмування, яка розглядає програму як обчислення математичних функцій та уникає станів та змінних даних. Функційне програмування наголошує на застосуванні функцій, на відміну від імперативного програмування, яке наголошує на змінах в стані та виконанні послідовностей команд.

Іншими словами, функційне програмування є способом створення програм, в яких єдиною дією є виклик функції, єдиним способом розбиття програми є створення нового імені функції та задання для цього імені виразу, що обчислює значення функції, а єдиним правилом композиції є оператор суперпозиції функцій. Жодних комірок пам'яті, операторів присвоєння, циклів, ні, тим більше, блок схем чи передачі управління.[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 містять деякі елементи функційного програмування, вони остерігаються використовувати змінні.

[ред.] Виноски

  1. Хендерсон 1983, Предисловие редактора перевода
  2. Вольфенгаген В. Э. Конструкции языков программирования. Приемы описания. — М: АО «Центр ЮрИнфоР», 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

[ред.] Див. також

Особисті інструменти
Простори назв

Варіанти
Дії
Навігація
Участь
Панель інструментів
Друк/експорт
Іншими мовами