maxim mozgovoy university of aizu aizu-wakamatsu,...
TRANSCRIPT
![Page 1: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая](https://reader031.vdocuments.site/reader031/viewer/2022041106/5f0792887e708231d41da73e/html5/thumbnails/1.jpg)
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 · Парадигмы и паттерны Каждая](https://reader031.vdocuments.site/reader031/viewer/2022041106/5f0792887e708231d41da73e/html5/thumbnails/2.jpg)
О парадигмах программирования
“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 · Парадигмы и паттерны Каждая](https://reader031.vdocuments.site/reader031/viewer/2022041106/5f0792887e708231d41da73e/html5/thumbnails/3.jpg)
Зачем нужны парадигмы?
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 · Парадигмы и паттерны Каждая](https://reader031.vdocuments.site/reader031/viewer/2022041106/5f0792887e708231d41da73e/html5/thumbnails/4.jpg)
Зачем нужны парадигмы?Сложную систему невозможно создать без комплексного подхода к процессу работы.
![Page 5: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая](https://reader031.vdocuments.site/reader031/viewer/2022041106/5f0792887e708231d41da73e/html5/thumbnails/5.jpg)
Парадигмы программирования
Процедурная
Объектно-ориентированная
Функциональная
Логическая
…
Современные языки программирования обычно поддерживают несколько парадигм.
Мы обсудим только ООП, но другие парадигмы заслуживают не меньшего внимания!
Каждая парадигма определяет собственные принципы проектирования программ.
![Page 6: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая](https://reader031.vdocuments.site/reader031/viewer/2022041106/5f0792887e708231d41da73e/html5/thumbnails/6.jpg)
Разные парадигмы, разные результаты
Главное – адекватность создаваемой системе!
![Page 7: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая](https://reader031.vdocuments.site/reader031/viewer/2022041106/5f0792887e708231d41da73e/html5/thumbnails/7.jpg)
Язык влияет на мышление
Любая парадигма заставляет мыслить в определённом направлении. Иногда это помогает, иногда мешает.
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 · Парадигмы и паттерны Каждая](https://reader031.vdocuments.site/reader031/viewer/2022041106/5f0792887e708231d41da73e/html5/thumbnails/8.jpg)
Парадигмы и паттерны
Каждая парадигма определяет собственные паттерны.
“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 · Парадигмы и паттерны Каждая](https://reader031.vdocuments.site/reader031/viewer/2022041106/5f0792887e708231d41da73e/html5/thumbnails/9.jpg)
Парадигмы и паттерны
Пример: готическая архитектура
паттерн: нервюры
паттерн: контрфорсы
![Page 10: Maxim Mozgovoy University of Aizu Aizu-Wakamatsu, JAPANkspt.icc.spbstu.ru/media/files/people/pyshkin/courses/... · 2015-09-26 · Парадигмы и паттерны Каждая](https://reader031.vdocuments.site/reader031/viewer/2022041106/5f0792887e708231d41da73e/html5/thumbnails/10.jpg)
Программирование и архитектураКаждая программа уникальна!(Незачем создавать заново то, что можно скопировать.)
Таким образом, программисты – это архитекторы.