Maxim Mozgovoy
University of Aizu
Aizu-Wakamatsu, JAPAN
О парадигмах программирования
“A programming paradigm is a fundamental style of computer programming, a way of building the structureand elements of computer programs.” -- Wikipedia
Выражение “building the structure” здесь неслучайно: программирование во многом сходно с возведением зданий. Даже термины сходны:
Проектирование ПО.
Архитектура ПО.
Программная инженерия.
(Однако программирование также во многом не сходно с возведением зданий )
Зачем нужны парадигмы?
std::string name;std::cin >> name;std::cout << "Hello, " << name << "!\n";
Для простых систем не нужны
Зачем нужны парадигмы?Сложную систему невозможно создать без комплексного подхода к процессу работы.
Парадигмы программирования
Процедурная
Объектно-ориентированная
Функциональная
Логическая
…
Современные языки программирования обычно поддерживают несколько парадигм.
Мы обсудим только ООП, но другие парадигмы заслуживают не меньшего внимания!
Каждая парадигма определяет собственные принципы проектирования программ.
Разные парадигмы, разные результаты
Главное – адекватность создаваемой системе!
Язык влияет на мышление
Любая парадигма заставляет мыслить в определённом направлении. Иногда это помогает, иногда мешает.
Standard MLfun fac 0 = 1
| fac n = n*fac(n – 1)
BASIC
r = 1
For i = 1 To n
r = r * i
Next
Вычисление n!
Домашнее задание:Гипотеза Сепира-УорфаТезис Чёрча-Тьюринга
Парадигмы и паттерны
Каждая парадигма определяет собственные паттерны.
“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
Парадигмы и паттерны
Пример: готическая архитектура
паттерн: нервюры
паттерн: контрфорсы
Программирование и архитектураКаждая программа уникальна!(Незачем создавать заново то, что можно скопировать.)
Таким образом, программисты – это архитекторы.