2.07M
Category: programmingprogramming

История возникновения и развития функционального программирования. Лекция 1

1.

Лекция 1
История возникновения и развития функционального программирования

2.

Что такое функциональное
программирование?
Функциональное программирование — раздел дискретной
математики и парадигма программирования, в которой
процесс вычисления трактуется как вычисление значений
функций в математическом понимании последних. Основой
всех языков функционального программирования является
лямбда-исчисление (λ-исчисление), которое описывается как
«самый маленький универсальный язык программирования
в мире».

3.

Алонзо Чёрч
Алонзо Черч родился 14 июня 1903 года в городе
Вашингтон, США.
Известность пришла к Черчу после разработки
теории лямбда-исчислений. Данная теория
последовала за его знаменитой статьей 1936 года, в
которой показал существование так называемых
«неразрешимых задач».
Статья предшествовала знаменитому
исследованию Алана Тьюринга на тему проблемы
остановки, в котором также продемонстрировано
существование задач, неразрешимых
механическими способами.
Также Черчу принадлежит работа, в которой
доказал, что проблема для исчисления предикатов
неразрешима.

4.

Джон Маккарти
Джон Маккарти родился 4 сентября 1927 в Бостоне,
умер 24 октября 2011 в Стэнфорде.
Отстаивал использование математической логики для
искусственного интеллекта. В 1958 разработал язык
программирования LISP и опубликовал его описание в
журнале Communications of the ACM в апреле 1960 года
«Рекурсивные функции символьных выражений
и их вычисление на машине»
В 1961 году публично предположил, что
вычислительные ресурсы и даже определённые
приложения могут распространяться с использованием
бизнес-модели сферы коммунальных услуг, но эта идея
вышла из моды к середине 1970 годов, начиная с 2000-х
годов эта она получила воплощение в облачных
вычислениях.

5.

История функциональных языков

6.

Эволюция языков программирования

7.

Популярность языков
программирования начало
Ranking the popularity of programming
languages
This week John Myles White and I (Drew
Conway) set out to gather data that measured
both the number of projects using various
languages, as well as their community sizes.
While neither metric has a straightforward
means of collection, we decided to exploit data
on Github and StackOverflow to measure each
respectively. Github provides a popularity
ranking for each language based on the number
of projects, and using the below R function we
were able to collect the number of questions
tagged for each language on StackOverflow.
http://www.dataists.com/2010/12/rankingthe-popularity-of-programming-langauges/

8.

Популярность языков
программирования 2015 и 2020 гг.

9.

Популярность языков
программирования 2020 и 2022 гг.

10.

Какой язык программирования
лучший (2015 и 2020 гг.)?

11.

Популярность языков
программирования 2011 и 2020 гг.

12.

Популярность языков
программирования обзор

13.

Императивная парадигма
•в исходном коде программы записываются инструкции (команды);
•инструкции должны выполняться последовательно;
•данные, получаемые при выполнении предыдущих инструкций, могут читаться
из памяти последующими инструкциями;
•данные, полученные при выполнении инструкции, могут записываться в память.

14.

Функциональная парадигма
•Не используется оператор присваивания для изменения состояний
•Не используются циклы
•Выполнение последовательности команд не имеет смысла, т.к. одна команда не
влияет на выполнение следующей
•Функции можно передавать в другие функции в качестве аргументов и
возвращать в качестве результата, результатом вычислений тоже может быть
функция
•Вместо циклов используется рекурсия

15.

Декларативная парадигма
•задаётся спецификация решения задачи, то есть описывается, что представляет
собой проблема и ожидаемый результат;
•не используют понятия состояния, в частности, не используют переменные и
операторы присваивания;
• обеспечивается ссылочная прозрачность.

16.

Спасибо за внимание

17.

Классификация языков
программирования
English     Русский Rules