Лекция №1 Парадигмы программирования
Парадигмы программирования
Парадигмы программирования
Императивное программирование
Параллелизм
Объектно-ориентированное программирование
Функциональное программирование
Свойства функционального программирования
Функциональное программирование
Логическое программирование
Логическое программирование
Логическое программирование
Алгебраическое программирование
Констрэйтное программирование
Алгебраическое программирование
Инсерционное моделирование
Заключение
594.00K
Category: programmingprogramming

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

1. Лекция №1 Парадигмы программирования

ЛЕКЦИЯ №1
ПАРАДИГМЫ
парадигмы разные нужны,
парадигмы разные важны
ПРОГРАММИРОВАНИЯ
доц. Песчаненко В.С.
Херсонский государственный университет
Кафедра информатики
Научно-исследовательский институт информационных технологий
Лаборатория по разработке и внедрению педагогических программных средств
2010
APS&IMS, Lectures

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

ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ
Все они - всего лишь различные инструменты.
Каждый из этих инструментов по-своему
хорош.
Различные методики программирования дают
разный выигрыш для решения задач разных
классов:
1. эффективность программного обеспечения на
современных ЭВМ
2. общие затраты на разработку программного
обеспечения

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

ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ
Императивное программирование
Паралелизм. Паралельное и событийноуправляемое программирование
Объектно-ориентированное программирование
Функциональное программирование
Логическое программирование
Констрэйтное программирование
Алгебраическое программирование
Инсерционное моделирование
и другие (WiKi Programming paradigms)

4. Императивное программирование

ИМПЕРАТИВНОЕ ПРОГРАММИРОВАНИЕ
Императивное программирование выигрывает
любой другой методологии в эффективности
реализации. Причина: аппаратная организация
ПК.
Стоит ли говорить о том, почему императивное
программирование - практически наиболее
"популярное"?
Одна из характерных черт императивного
программирования - наличие переменных с
операцией "разрушающего присвоения«
Про наш мир можно сказать, что он локально
императивен.
Императивное программирование наиболее
пригодно для реализации небольших подзадач, где
очень важна скорость исполнения на современных
компьютерах (+работа с внешними устройствами).

5. Параллелизм

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

6. Объектно-ориентированное программирование

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

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

ФУНКЦИОНАЛЬНОЕ
ПРОГРАММИРОВАНИЕ
Функциональное программирование представляет из
себя одну из альтернатив императивному подходу.
В императивном программировании алгоритмы - это
описания последовательно исполняемых операций.
Здесь существует понятие "текущего шага исполнения"
(то есть, времени), и "текущего состояния", которое
меняется с течением этого времени.
Программы являются выражениями, исполнение
программ заключается в вычислении этих выражений.
Императивное программирование основано на машине
Тьюринга-Поста - абстрактном вычислительном
устройстве, предложенном на заре алгоритмической эры
для описания алгоритмов.
Функциональное программирование основано на более
естественном с математической точки зрения
формализме - лямбда-исчислении Черча.

8. Свойства функционального программирования

СВОЙСТВА ФУНКЦИОНАЛЬНОГО
ПРОГРАММИРОВАНИЯ
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 :- b, c. порядок согласования целей b
и c не имеет значения, поэтому их можно
доказывать параллельно.
Говорят, что процессы доказательства b и с
образуют И-систему процессов: И-система
успешно доказывается, если каждый процесс,
входящий в систему, успешен.

13. Алгебраическое программирование

АЛГЕБРАИЧЕСКОЕ
ПРОГРАММИРОВАНИЕ
Основано на переписывании, расширяет
функциональное программирование и имеет
широкое применение в решении задач
компьютерной алгебры (алгоритм КнутаБэндикса, Бухбергера), операционной
семантике языков
программирования(выполнимость
алгебраических спецификаций программных
компонент, определение семантики языков
программирования, разработка
интерпретаторов, прототипирование
программных компонент)

14. Констрэйтное программирование

КОНСТРЭЙТНОЕ ПРОГРАММИРОВАНИЕ
Констрэйтное программирование (WiKi
Constraint programming) – это парадигма
программирования в котором отношение
между переменными формулируется в виде
ограничений. Эти ограничения отличаются от
общих примитивов в императивных языках
поскольку они не определяют шаг или
последовательность шагов выполнения, но
уточняют свойство решения, которое
необходимо найти.

15. Алгебраическое программирование

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

16. Инсерционное моделирование

ИНСЕРЦИОННОЕ МОДЕЛИРОВАНИЕ
Инсерционное моделирование – это моделирование
на базе модели поведения агентов в средах.
В основе модели лежит понятие размеченной
транзиционной системы, т.е. системы, определенной так
же, как и автомат, ножеством состояний и множеством
переходов (пары состояний), размеченных действиями
или событиями.
Формально понятие транзиционной системы совпадает с
понятием недетерминированного частично
определенного автомата, однако, в отличие от теории
автоматов отношение эквивалентности транзиционных
систем более сильное.

17. Заключение

ЗАКЛЮЧЕНИЕ
Каждая из парадигм интересна и сама по себе.
Наиболее "полезно" для практики
использовать их в совокупности, что позволяют
современные языки программирования (как
например, Си++ по сути, позволяет
использовать императивное, фунциональное
(хотя бы на уровне аппликативности) и
объектно-ориентированное программирование,
а с расширением, обеспечивающим
параллелизм - и параллельное).
Алгебраическое программирование и
инсерционное моделирование – одно из
наиболее мощных средств разработки
прикладных программ.
English     Русский Rules