587.91K
Категория: ПрограммированиеПрограммирование

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

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.

СПАСИБО ЗА
ВНИМАНИЕ!!!
Томский государственный университет систем
управления и радиоэлектроники
English     Русский Правила