Парадигмы программирования

Содержание

Слайд 2

ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ Все они - всего лишь различные инструменты. Каждый из

ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ

Все они - всего лишь различные инструменты.
Каждый из этих инструментов

по-своему хорош.
Различные методики программирования дают разный выигрыш для решения задач разных классов:
1. эффективность программного обеспечения на современных ЭВМ
2. общие затраты на разработку программного обеспечения
Слайд 3

ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ Императивное программирование Паралелизм. Паралельное и событийно-управляемое программирование Объектно-ориентированное программирование

ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ

Императивное программирование
Паралелизм. Паралельное и событийно-управляемое программирование
Объектно-ориентированное программирование
Функциональное программирование
Логическое программирование
Констрэйтное программирование
Алгебраическое

программирование
Инсерционное моделирование
и другие (WiKi Programming paradigms)
Слайд 4

ИМПЕРАТИВНОЕ ПРОГРАММИРОВАНИЕ Императивное программирование выигрывает любой другой методологии в эффективности реализации.

ИМПЕРАТИВНОЕ ПРОГРАММИРОВАНИЕ

Императивное программирование выигрывает любой другой методологии в эффективности реализации. Причина:

аппаратная организация ПК.
Стоит ли говорить о том, почему императивное программирование - практически наиболее "популярное"?
Одна из характерных черт императивного программирования - наличие переменных с операцией "разрушающего присвоения«
Про наш мир можно сказать, что он локально императивен.
Императивное программирование наиболее пригодно для реализации небольших подзадач, где очень важна скорость исполнения на современных компьютерах (+работа с внешними устройствами).
Слайд 5

ПАРАЛЛЕЛИЗМ Параллелизм можно мысленно разбить на два уровня: параллелизм уровня микроопераций

ПАРАЛЛЕЛИЗМ

Параллелизм можно мысленно разбить на два уровня: параллелизм уровня микроопераций и

параллелизм уровня процессов
Микропроцессоры максимально используют в своей архитектуре возможности параллельного исполнения отдельных операций
Процессы - это абстракция достаточно высокого уровня. Они могут работать параллельно, и могут обмениваться между собой результатами своих вычислений через "каналы связи«
В системе параллельных процессов каждый отдельный процесс обрабатывает события. События могут быть как общими для всей системы, так и индивидуальными для одного или нескольких процессов-событийно-управляемое программирование .
Слайд 6

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Объектно-ориентированное программирование появилось из недр событийно-управляемого программирования и затмило

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

Объектно-ориентированное программирование появилось из недр событийно-управляемого программирования и затмило его,

так как оказалось значительно более мощным и универсальным средством программирования и проектирования.
Основные понятия: объект, метод, класс, метокласс, инкапсуляция, абстракция, полиморфизм, наследование.
Слайд 7

ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ Функциональное программирование представляет из себя одну из альтернатив императивному

ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ

Функциональное программирование представляет из себя одну из альтернатив императивному подходу.
В

императивном программировании алгоритмы - это описания последовательно исполняемых операций. Здесь существует понятие "текущего шага исполнения" (то есть, времени), и "текущего состояния", которое меняется с течением этого времени.
Программы являются выражениями, исполнение программ заключается в вычислении этих выражений.
Императивное программирование основано на машине Тьюринга-Поста - абстрактном вычислительном устройстве, предложенном на заре алгоритмической эры для описания алгоритмов.
Функциональное программирование основано на более естественном с математической точки зрения формализме - лямбда-исчислении Черча.
Слайд 8

СВОЙСТВА ФУНКЦИОНАЛЬНОГО ПРОГРАММИРОВАНИЯ 1.) Аппликативность: программа есть выражение, составленное из применения

СВОЙСТВА ФУНКЦИОНАЛЬНОГО ПРОГРАММИРОВАНИЯ

1.) Аппликативность: программа есть выражение, составленное из применения функций

к аргументам.
2.) Настраиваемость: так как не только программа, но и любой программный объект (в идеале) является выражением, можно легко порождать новые программные объекты по образцу, как значения соответствующих выражений (применение порождающей функции к параметрам образца).
Слайд 9

ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ Функциональное программирование, как и другие модели "неимперативного" программирования, обычно

ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ

Функциональное программирование, как и другие модели "неимперативного" программирования, обычно применяется

для решения задач, которые трудно сформулировать в терминах последовательных операций. \
Практически все задачи, связанные с искусственным интеллектом, попадают в эту категорию:
1) задачи распознавания образов,
2) общение с пользователем на естественном языке,
3) реализацию экспертных систем,
4) автоматизированное доказательство теорем,
5) символьные вычисления.
Слайд 10

ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ В функциональном программировании программы - это выражения, и их

ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

В функциональном программировании программы - это выражения, и их исполнение

заключается в вычислении их значения.
В логическом программировании программа представляет из себя некоторую теорию (описанную на достаточно ограниченном языке), и утверждение, которое нужно доказать.
В доказательстве этого утверждения и будет заключаться исполнение программы.
Понятия: факты, аксиомы.
Использования алгоритмов унификации и метод резолюции.
Слайд 11

ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Унификация - это сопоставление двух произвольных термов, содержащих переменные,

ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

Унификация - это сопоставление двух произвольных термов, содержащих переменные, с

целью определения того, можно ли присвоить этим переменным такие значения, чтобы получились два одинаковых терма.
Например, унификация термов f(X, 2) и f(1, Y), где X, Y - переменные, выдаст подстановку: X=1, Y=2.
Метод резолюций заключается в последовательном доказательстве отдельных утверждений, входящих в посылку дизъюнкта Хорна, для доказательства его следствия. То есть, применение метода резолюций к правилу a :- b, c. и утверждению a приведет к последовательному доказательству утверждений b и c.
Метод резолюций имеет прямой аналог в обычной логике высказываний - правило modus ponens, по которому (A & A=>B) => B.
Слайд 12

ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Логическое программирование допускает естественную параллельную реализацию. В примере a

ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

Логическое программирование допускает естественную параллельную реализацию. В примере a :-

b, c. порядок согласования целей b и c не имеет значения, поэтому их можно доказывать параллельно.
Говорят, что процессы доказательства b и с образуют И-систему процессов: И-система успешно доказывается, если каждый процесс, входящий в систему, успешен.
Слайд 13

АЛГЕБРАИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Основано на переписывании, расширяет функциональное программирование и имеет широкое

АЛГЕБРАИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

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

в решении задач компьютерной алгебры (алгоритм Кнута-Бэндикса, Бухбергера), операционной семантике языков программирования(выполнимость алгебраических спецификаций программных компонент, определение семантики языков программирования, разработка интерпретаторов, прототипирование программных компонент)
Слайд 14

КОНСТРЭЙТНОЕ ПРОГРАММИРОВАНИЕ Констрэйтное программирование (WiKi Constraint programming) – это парадигма программирования

КОНСТРЭЙТНОЕ ПРОГРАММИРОВАНИЕ

Констрэйтное программирование (WiKi Constraint programming) – это парадигма программирования в

котором отношение между переменными формулируется в виде ограничений. Эти ограничения отличаются от общих примитивов в императивных языках поскольку они не определяют шаг или последовательность шагов выполнения, но уточняют свойство решения, которое необходимо найти.
Слайд 15

АЛГЕБРАИЧЕСКОЕ ПРОГРАММИРОВАНИЕ APS интегрирует четыре основные парадигмы программирования таким образом, что

АЛГЕБРАИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

APS интегрирует четыре основные парадигмы
программирования таким образом, что основная часть

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

ИНСЕРЦИОННОЕ МОДЕЛИРОВАНИЕ Инсерционное моделирование – это моделирование на базе модели поведения

ИНСЕРЦИОННОЕ МОДЕЛИРОВАНИЕ

Инсерционное моделирование – это моделирование на базе модели поведения агентов

в средах.
В основе модели лежит понятие размеченной транзиционной системы, т.е. системы, определенной так же, как и автомат, ножеством состояний и множеством переходов (пары состояний), размеченных действиями или событиями.
Формально понятие транзиционной системы совпадает с понятием недетерминированного частично определенного автомата, однако, в отличие от теории автоматов отношение эквивалентности транзиционных систем более сильное.