Similar presentations:
Функциональное и логическое программирование
1.
ФУНКЦИОЛНАЛЬНОЕ И ЛОГИЧЕСКОЕПРОГРАММИРОВАНИЕ
Томский государственный университет систем управления и
радиоэлектроники
Выполнил:
студент группы
422-3
Никонов В.К.
2.
ВВЕДЕНИЕПрогра́ммная инжене́рия — приложение систематического, дисциплинированного,
измеримого подхода к разработке, функционированию и сопровождению программного
обеспечения, а также исследованию этих подходов; то есть, приложение дисциплины
инженерии к программному обеспечению.
Функциональное и логическое программирование – виды программирования,
относящиеся к декларативному программированию.
2
3.
ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕФункциональное программирование - парадигма программирования, в которой
процесс вычисления трактуется как вычисление значений функции. В данном
парадигме программирования основной упор делается на использование функций и
неизменяемых данныхний функций в математическом понимании последних
3
4.
СТАНОВЛЕНИЕ ФУНКЦИОНАЛЬНОГОПРОГРАММИРОВАНИЯ
Моисей Шейнфинкеля и
Хаскелл Карри –
разработали
комбинаторную логику
Алонзо Чёрча –
создатель лямбда
исчисления
Джон Маккартни –
разработал первый
функциональный
язык
программирования
«Липс»
Haskell –унивесальный язык
функционального программирования
Метод критического пути
4
5.
ПЛЮСЫ И МИНУСЫ ФУНКЦИОНАЛЬНОГОПРОГРАММИРОВАНИЯ
Плюсы
Модульность
Краткость и простота
Минусы
Отсутствие присваивания данных
Нестрогая модель вычислений
5
6.
КОНЦЕПЦИИ ФУНКЦИОНАЛЬНОГОПРОГРАММИРОВАНИЯ
Рекурсия - изображение какого-либо объекта или
процесса внутри самого этого объекта или процесса
Функции высших порядков - это такие функции,
которые могут принимать в качестве аргументов и
возвращать другие функции.
Чистые функции – функции, которые не имеют
побочных эффектов ввода-вывода и памяти.
Мемоизация – сохранение результата вызова
функции в таблице значений вместе с аргументами
вызова
6
7.
ПРОГРАММА НА ФУНКЦИОНАЛЬНОМ ЯЗЫКЕПРОГРАММИРОВАНИЯ
Подсчёт суммы чётных
элементов в массиве на
Haskel
Пример работы
функции
7
8.
ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕЛогическое программирование парадигма
программирования, основанная на математической
логике — программы в ней задаются в форме
логических утверждений и правил вывода
8
9.
СТАНОВЛЕНИЕ ЛОГИЧЕСКОГОПРОГРАММИРОВАНИЯ
Джон Адам Робинсон –
разработал правило
резолюции, которое легло в
основу логического
программирования
Девид Уоррен и группа учёных в
конце 1970-ых годов разработал
эффективную реализацию
пролога
9
10.
ПЛЮСЫ И МИНУСЫ ЛОГИЧЕСКОГОПРОГРАММИРОВАНИЯ
Плюсы
• Лёгкое понимание и запоминание кода
• Возможность откатов
Минусы
• Специфичность класса решаемых задач
• Малое финансирование логических языков
программирования
10
11.
КОНЦЕПЦИИ ЛОГИЧЕСКОГОПРОГРАММИРОВАНИЯ
Дерево составляет пространство поиска для
решения цели
Предикты – конкретные утверждения
Факты – хранятся в базе данных; программа, в процессе
своего выполнения обращается к ним, а в дальнейшем
выводит соответствующий результат
11
12.
ПРОГРАММА НА ЛОГИЧЕСКОМ ЯЗЫКЕПРОГРАММИРОВАНИЯ
% Факты. 11 штук
study(mark, book). % Марк изучает книгу
study(mark, studentbook). % Марк изучает
учебник
study(mark, docs). % Марк изучает
документы
see(masha, mouse). % Маша видит мышь
see(masha, book). % Маша видит книгу
see(masha, notebook). % Маша видит
тетрадь
see(masha, mark). % Маша видит Марка
study(misha, math). % Миша изучает
математику
study(misha, lp). % Миша изучает пролог
study(misha, docs). % Миша изучает доки
study(misha, studentbook). % Миша изучает
учебник
12
13.
ВЫВОДЫНе смотря на то, что функциональные и логические языки программирования
относятся к декларативному программированию, концепции при работе с этими
языками принципиально отличаются, также как и задачи, для которых
предназначены эти языки.
Функциональные языки программирования крайне практичны и удобны за счёт
использования функций в качестве своей основы, а так же, они подходят для
решения многих различных задач. Но в тоже время программы на таких языках
могут требовать большое количество памяти и выдавать труднонаходимые и
непредсказуемые ошибки.
Логические языки программирования являются крайне узкоспециализированными и
имеют свой особый подход, отличающийся от других языков программирования.
13
14.
СПАСИБО ЗАВНИМАНИЕ!!!
Томский государственный университет систем
управления и радиоэлектроники