10
Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPAN

Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая

Maxim Mozgovoy

University of Aizu

Aizu-Wakamatsu, JAPAN

Page 2: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая

О парадигмах программирования

“A programming paradigm is a fundamental style of computer programming, a way of building the structureand elements of computer programs.” -- Wikipedia

Выражение “building the structure” здесь неслучайно: программирование во многом сходно с возведением зданий. Даже термины сходны:

Проектирование ПО.

Архитектура ПО.

Программная инженерия.

(Однако программирование также во многом не сходно с возведением зданий )

Page 3: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая

Зачем нужны парадигмы?

std::string name;std::cin >> name;std::cout << "Hello, " << name << "!\n";

Для простых систем не нужны

Page 4: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая

Зачем нужны парадигмы?Сложную систему невозможно создать без комплексного подхода к процессу работы.

Page 5: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая

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

Процедурная

Объектно-ориентированная

Функциональная

Логическая

Современные языки программирования обычно поддерживают несколько парадигм.

Мы обсудим только ООП, но другие парадигмы заслуживают не меньшего внимания!

Каждая парадигма определяет собственные принципы проектирования программ.

Page 6: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая

Разные парадигмы, разные результаты

Главное – адекватность создаваемой системе!

Page 7: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая

Язык влияет на мышление

Любая парадигма заставляет мыслить в определённом направлении. Иногда это помогает, иногда мешает.

Standard MLfun fac 0 = 1

| fac n = n*fac(n – 1)

BASIC

r = 1

For i = 1 To n

r = r * i

Next

Вычисление n!

Домашнее задание:Гипотеза Сепира-УорфаТезис Чёрча-Тьюринга

Page 8: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая

Парадигмы и паттерны

Каждая парадигма определяет собственные паттерны.

“A design pattern is a general reusable solution to a commonly occurring problem within a given context” – Wikipedia

Следуя определённой парадигме, мы постоянно сталкиваемся с одними и теми же проблемами, поэтому полезно представлять себе типичные решения.

“Get into a rut early: Do the same process the same way. Accumulate idioms. Standardize. The only difference(!) between Shakespeare and you was the size of his idiom list -not the size of his vocabulary.” – Alan Perlis

Page 9: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая

Парадигмы и паттерны

Пример: готическая архитектура

паттерн: нервюры

паттерн: контрфорсы

Page 10: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая

Программирование и архитектураКаждая программа уникальна!(Незачем создавать заново то, что можно скопировать.)

Таким образом, программисты – это архитекторы.