Skip to content

Latest commit

 

History

History
148 lines (91 loc) · 6.49 KB

File metadata and controls

148 lines (91 loc) · 6.49 KB

Заметки о функциональном и логическом программировании

[Перейти к оглавлению]

Историческое введение в функциональную и логическую парадигму

Тезисы вводной лекции.

Императивное программирование как низкоуровневая абстракция над вычислительной машиной

Fortran (1954-1957, Джон Бэкус, IBM)

Algol (1956-1960, IFIP)

В комитет по разработке Algol входили такие известные в области информатики и программирования личности как: Джон Бэкус (Fortran), Джозеф Уэгстен (Cobol), Джон Маккарти (Lisp), Петер Наур (форма Бэкуса-Наура), Эдсгер Дейкстра.

Важными характеристиками Algol были: рекурсия, программные блоки, локальные объявления.

C (1969-1973, Деннис Ритчи, Кен Томпсон, Bell Labs)

Pascal (1970, Никлаус Вирт, ETHZ (Швейцарская высшая техническая школа Цюриха))

Проблемы императивных языков, связанные с переменными, областями видимости и функциями.

Первый функциональный язык Lisp

Lisp (1958, Джон Маккарти, MIT)

Scheme (1975, Гай Стил, Джеральд Сассман, MIT)

Книга SICP (1985, Харольд Абельсон, Джеральд Сассман, MIT)

Racket (1995, официальный сайт)

Common Lisp (1984/1994, Гай Стил, CLISP, SBCL)

Guile (1983, GNU, официальный сайт)

Clojure (2007, Ричард Хикки, официальный сайт)

APL

APL (1957 -- Гарвардский университет, 1960 -- IBM, Кеннет Айверсон)

J (1990/2011, Кеннет Айверсон, Роджер Хуэй, официальный сайт)

ML

ML -- Meta Language (1973, Робин Милнер, университет Эдинбурга)

Алгоритм Хиндли-Милнера

Статическая типизация, сильная типизация, вывод типов, строгие вычисления, полиморфная система типов, интерактивная среда, компиляция в машинный код.

Standard ML (1984, официальный сайт)

Caml (1987, INRIA, официальный сайт)

Caml Light (1990, INRIA, официальный сайт)

OCaml -- Objective Caml (1996, INRIA, официальный сайт)

Автоматическая сборка мусора, неизменяемые структуры данных.

F# (2005, Microsoft Research, официальный сайт)

Erlang

Erlang (1987, Ericsson, Джо Армстронг, официальный сайт)

Elixir (2012, Хосе Валим, официальный сайт)

Haskell

Haskell (1990, Павел Худяк, Леннарт Аугустссон, Джон Хьюз, Джонс Саймон Пейтон, Эрик Майер, Филип Вадлер, официальный сайт)

Scala

Scala (2003, Мартин Одерски, Федеральная политехническая школа в Лозанне (EPFL), официальный сайт)

Математические основы функционального программирования

Лямбда исчисление.

Комбинаторная логика.

Интуиционистская теория типов, Пер Мартин-Лёф.

Prolog и логическое программирование

...

Конвергенция функционального и логического программирования

Coq

Curry

Agda

Idris

GHC 8

Функциональное программирование в реальной жизни

Elm (2012, Эван Чаплицки, официальный сайт)

ClojureScript

[Перейти к оглавлению]


© Евгений А. Симоненко, 2017