Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемstorm.gradsoft.ua
1 Парадигмы программирования Это определенный набор инстурентов абстракции и подходов к их применению
2 Структурное программирование 3 базовых блока: – последовательное выполнение – условное выражени – цикл GOTO считается вредным Процедурное программирование: модуляризация с помощью процедур и модулей (файлов)
3 Объектно-ориентированное программирование Принципы: – инкапсуляция – наследование – полиморфизм ОО-дизайн: – композиция, аггрегация – делегация, консультация – cohesion (единство), coupling (связность) – indirection
4 Наследование Наследование "свойств" и "функциональности". 12 видов! (Bertrand Meyer, Object-Oriented Software Construction) Для свойств основано на: – классе (от абстрактного к конкретному): C++, Java – прототипе (от конкретного к абстрактному): JavaScript, Self, Io
5 Наследование может пониматься как наследование реализации (семантическое) или как наследование интерфейса (синтаксическое) Сильное поведенческое наследование -- принцип замены Лисковой (IS-STRICTLY-EQUIVALENT-TO-A): пусть q(x) -- это свойство, доказываемое для объекта х типа T. Тогда q(y) должно быть справедливо для всех объектов y любого подтипа S типа T Прицип строгой эквивалентности Favor object composition over class inheritance WAS-A, HAS-A
6 Полиморфизм Наследование функциональности и полиморфизм это 2 стороны одной медали Родовые функции (Lisp): унифиция обоих концепций в рамках одной абстракции "Субъектно-ориентированное программирование" "Утиная типизация" (Duck typing): "When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck." (James Whitcomb Riley)
7 Передача сообщений Smalltalk Алан Кей: более важно, чем объекты Полностью динамическая диспетчиризация Модель акторов (Хьюит). Акторы – асинхронно принимают сообщения – отправляют конечное число сообщений другим акторам – создают конечное число новых акторов – Также: хвостовая рекурсия
8 Функциональное программирование Лямбда-исчисление Черча Принципы: – программирование без побочных эффектов (ссылочная прозрачность) – неизменяемые (немутируемые) данные – функции высших порядков Строгие и динамические ФЯ Ленивые вычисления Системы типов
9 Скриптоовые языки Опора на существующую платформу Фокус на реализации определенного круга задач Динамические Ad hoc
10 Метапрограммирование Расширение (growing) базового языка Многоуровневые системы Проектирование сверху-вниз Языко-ориентированное программирование (DSL) Макросистема Гомоиконность языка Мета-круговой интерпретатор Рефлексия
11 Конкурентное программирование Новая парадигма Варианты: – MapReduce – модель акторов (Erlang, Scala) – STM – Программная транзакционная память (Haskell, Clojure) – CSP (Golang) – Event-based Shared nothing
12 MapReduce Не язык, а фреймворк для написания распределенных програм.
13 Erlang Динамический функциональный язык, основанный на синтаксисе Prolog'а. Модель акторов. Примитивы процессов Pid spawn send (!) receive register
14 Типичные шаблоны Erlang Loop Rpc Timer
15 Беззамковая синхронихация в Clojure
16 Корутины и go-рутины Модель Communicating Sequential Processes
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.