Функційне програмування: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Рядок 30:
[[Лямбда-числення]] стало теоретичною базою для опису і обчислення функцій. Будучи математичною [[Абстракція|абстракцією]], а не [[Мова програмування|мовою програмування]], воно склало базис майже всіх мов функціонального програмування на сьогоднішній день. Подібне теоретичне поняття, [[комбінаторна логіка]], є більш абстрактним, ніж λ-числення і було створено раніше. Ця логіка використовується в деяких езотеричних мовах, наприклад в [[Unlambda]]. І λ-числення, і комбінаторна логіка були розроблені для більш ясного й точного опису принципів і основ математики <ref> {{книга|автор = [[Пенроуз, Роджер|Роджер Пенроуз]]|частина = Глава 2: Лямбда-числення Черча|заголовок = Новий розум короля. Про комп'ютери, мисленні і законах фізики|оригінал = The Emperors New Mind: Concerning Computers, Minds and The Laws of Physics | видавництво = Едіторіал УРСС|рік = 2003 | isbn = 5-354-00005-X}} + перевидання ISBN 978 - 5-382-01266-7; 2011 </ref>.
 
Першим функціональнимфункціональною мовою був [[Lisp]], створений [[Джон МакКарті | Джоном МакКарті]] в період його роботи в [[Массачусетський технологічний інститут | Массачусетському технологічному інституті]] в кінці п'ятдесятих і реалізований, спочатку, для {{нп3|IBM 700/7000 | | | IBM 700/7000 series}} <ref> {{cite journal | first = John | last = McCarthy | authorlink = John McCarthy (computer scientist) | title = History of Lisp | journal = In [[Association for Computing Machinery|ACM]] SIGPLAN History of Programming Languages ​​Conference | pages = 217-223 | month = June | year = 1978 | url = http://citeseer.ist.psu.edu/mccarthy78history.html|doi=10.1145/ 800025.808387}} </ref>. Lisp ввів безліч понять функціональногофункціональної мови, хоча при цьому сповідував не тільки парадигму функціонального програмування {{sfn | J. Harrison | 1997 | loc = Гл. 3. λ-числення як мова програмування}}. Подальшим розвитком Ліспу стали такі мови як [[Scheme]] і [[Dylan (мова програмування)|Dylan]].
 
Мова обробки інформації ({{нп3 | Information Processing Language}}, IPL) іноді визначається як найперший машинний машинно-функціональна мова <ref> У своїх мемуарах [[Герберт Саймон]] (1991),'' Models of My Life'' pp. 189-190 ISBN 0-465-04640-1 стверджує, що його, Al. Ньюелл, і Кліфф Шоу яких «часто називають батьками штучного інтелекту» за написання програми {{нп3 | Logic Theorist}} автоматично доводить теореми з'' {{нп3 | Principia Mathematica}}''. Для того, щоб досягти цього, вони повинні були придумати мову і парадигму, яку, ретроспективно, можна розглядати як функціональне програмування. </Ref>. Це мова [[Мова асемблера | ассемблерного]] типу для роботи зі списком символів. У ньому було поняття «генератора», який використовував функцію як аргумент, а також, оскільки це мова ассемблерного рівня, він може позиціонуватися як мова, що має функції вищого порядку. Однак, в цілому IPL акцентовано на використання імперативних понять <ref> [http://hopl.murdoch.edu.au/showlanguage.prx?exp=13&language=IPL History of Programming Languages: IPL] </ref>.
 
[[Айверсон, Кеннет Юджин | Кеннет Е. Айверсон]] розробив мову [[АПЛ (мова програмування) | APL]] на початку шістдесятих, документувати його в своїй книзі A Programming Language (ISBN 9780471430148) <ref> {{книга | частина = XIV. APL Session | заголовок = History of Programming Language | ISBN = 0-12-745040-8 | відповідальний = Richard L. Wexelbblat | видавництво = Academic Press | рік = 1981 | сторінки = 661-693 | сторінок = 749}} </ref>. APL справив значний вплив на мову {{нп3 | FP | | | FP (programming language)}}, створений [[Бекуса, Джон | Джоном Бекуса]]. На початку дев'яностих Айверсон і {{нп3 | Роджер Хуей | | | Roger Hui}} створили наступника APL - мова програмування [[J (мова програмування) | J]]. У середині дев'яностих {{нп3 | Артур Вітні | | | Arthur Whitney}}, який раніше працював з Айверсон, створив мову [[K (мова програмування) | K]], який згодом використовувався у фінансовій індустрії на комерційній основі.
 
У сімдесятих в [[Единбурзький університет | університеті Единбурга]] [[Робін Мілнер]] створив мову [[ML]], а [[Тернер, Девід | Девід Тернер]] починав розробку мови [[SASL (мова програмування) | SASL] ] в [[Сент-Ендрюського університету | університеті Сент-Ендрюса]] і, згодом, мову [[Міранда (мова програмування) | Miranda]] в університеті міста Кент. У кінцевому підсумку на основі ML були створені кілька мов, серед яких найбільш відомі [[OCaml | Objective Caml]] і [[SML | Standard ML]]. Також в сімдесятих здійснювалася розробка мови програмування, побудованого за принципом Scheme (реалізація не лише функціональної парадигми), що отримав опис у відомій роботі «Lambda Papers», а також у книзі вісімдесят п'ятого року «[[Структура та інтерпретація комп'ютерних програм | Structure and Interpretation of Computer Programs]] », в якій принципи функціонального програмування були донесені до більш широкої аудиторії. {{Ні АІ | 18 | 05 | 2009}}
 
У вісімдесятих [[Мартін-Леф, Пер | Пер Мартін-Леф]] створив интуиционистской теорію типів (також звану конструктивної). У цій теорії функціональне програмування отримало конструктивне доказ того, що раніше було відомо як залежний тип. Це дало потужний поштовх до розвитку діалогового докази теорем і до подальшого створення безлічі функціональних мов.