140 likes | 164 Views
Лекция 1 Общие понятия. Эволюция парадигм. Современное состояние. http:// 0861 .ru/ Парадигмы программирования. ст. препод . каф. ПОВТиАС Голубничий Артем Александрович artem@golubnichij.ru. Абакан, 2019. Структура занятия. понятие и связные понятия; различные толкования;
E N D
Лекция 1 Общие понятия. Эволюция парадигм.Современное состояние http://0861.ru/ Парадигмы программирования ст. препод. каф. ПОВТиАС Голубничий Артем Александрович artem@golubnichij.ru Абакан, 2019
Структура занятия • понятие и связные понятия; • различные толкования; • история парадигм программирования; • разные подходы к парадигмам программирования; • основные парадигмы программирования; • языки и парадигмы; • парадигмы для рассмотрения.
Понятие и связные понятия Парадигма (от греч. παράδειγμα, «пример, модель, образец») – совокупность фундаментальных научных установок, представлений и терминов, принимаемая и разделяемая научным сообществом и объединяющая большинство его членов. Обеспечивает преемственность развития науки и научного творчества. «Под парадигмой я понимаю признанные всеми научные достижения, которые в течение определённого времени дают научному сообществу модель постановки проблем и их решения» (Томас Сэмюэл Кун, 1962)
Понятие и связные понятия Парадигма программирования – это совокупность идей и понятий, определяющих стиль написания компьютерных программ. Это способ концептуализации, определяющий организацию вычислений и структурирование работы, выполняемой компьютером. «Если прогресс искусства программирования в целом требует постоянного изобретения и усовершенствования парадигм, то совершенствование искусства отдельного программиста требует, чтобы он расширял свой репертуар парадигм» (Роберт В Флойд, 1978) • новая парадигма не отменяет предыдущую; • парадигмы могут сочетаться.
Различные толкования «Слово «парадигма» используется в программировании для определения семейства обозначений (нотаций), разделяющих общий способ (методику) реализаций программ» (ДиомидисСпинеллис) «стиль программирования как описания намерений программиста» (Дэниел Бобров) «модель или подход к решению проблемы» (Брюс Шрайвер ) «подход к решению проблем программирования» (Линда Фридман) «способ размышления о компьютерных системах» (Памела Зейв) «правила классификации языков программирования в соответствии с некоторыми условиями, которые могут быть проверены» (Питер Вегнер)
История некоторых парадигм программирования
Разные подходы к парадигмам программирования • Императивная • Процедурная • Структурная • Аспектно-ориентированная • Объектно-ориентированная • Агентно-ориентированная • Компонентно-ориентированная • Прототипно-ориентированная • Обобщённое программирование • Декларативная • Функциональная • В терминах Рефал-машины • Аппликативная • Комбинаторная • Бесточечная • Логическая • Ограничениями • Конкатенативная • Векторная[en] • Метапрограммирование
Answer set • Concurrent logic • Functional logic • Inductive logic • Dynamic • End-user programming • Event-driven • Service-oriented • Time-driven • Expression-oriented • Feature-oriented • Function-level (contrast: Value-level) • Generic • Imperative (contrast: Declarative) • Literate • Procedural • Language-oriented • Natural-language programming • Discipline-specific • Domain-specific • Grammar-oriented • Action • Agent-oriented • Array-oriented • Automata-based • Concept • Concurrent computing • Relativistic programming • Data-driven • Declarative (contrast: Imperative) • Constraint • Constraint logic • Concurrent constraint logic • Dataflow • Flow-based • Cell-oriented (spreadsheets) • Reactive • Functional • Functional logic • Purely functional • Logic • Abductive logic • Dialecting • Intentional • Metaprogramming • Automatic • Inductive programming • Reflective • Attribute-oriented • Homoiconic • Macro • Template • Policy-based • Non-structured (contrast: Structured) • Array • Nondeterministic • Parallel computing • Process-oriented • Point-free style • Concatenative • Probabilistic • Semantic • … Разные подходы к парадигмам программирования
Основные парадигмы программирования
Языки и парадигмы Функциональные: Лисп Scheme Clojure CommonLisp Erlang Elixir APL ML F# Scala Miranda Nemerle XSLT XQuery Haskell Объектно-ориентированные Ada C# C++ Delphi F# Java JavaScript JScript .NET Object Pascal Objective-C Perl PHP Python Ruby Swift Процедурные: Ada Алгол 60 Алгол 68 Basic (до Visual Basic) Си C++ КОБОЛ Фортран Модула-2 HAL/S Pascal PureBasic Go nim
Языки и парадигмы Мультипарадигмальный язык программирования – язык программирования, который был разработан специально как инструмент мультипарадигмального программирования, т.е. возможности которого изначально предполагалось унаследовать от нескольких, чаще всего не родственных языков.
Парадигмы для рассмотрения • процедурное программирование; • структурное программирование; • объектно-ориентированное программирование; • функциональное программирование; • грамотное программирование; • векторное программирование; • метапрограммирование; • конкурентное (параллельное) программирование.