- Парадигма программирования
-
Парадигмы программирования - Агентно-ориентированная
- Компонентно-ориентированная
- Конкатенативная
- Декларативная (контрастирует с Императивной)
- Событийно-ориентированная
- Комбинаторная
- Императивная (контрастирует с Декларативной)
- Предметно-ориентированная
- Метапрограммирование
- Автоматизация процесса программирования
- Обобщённое программирование
- Рефлексивно-ориентированная
- Итерационная
- Параллельная
- Структурная
Важно отметить, что парадигма программирования не определяется однозначно языком программирования; практически все современные языки программирования в той или иной мере допускают использование различных парадигм (мультипарадигмальное программирование). Так на языке Си, который не является объектно-ориентированным, можно работать в соответствии с принципами объектно-ориентированного программирования, хотя это и сопряжено с определёнными сложностями; функциональное программирование можно применять при работе на любом императивном языке, в котором имеются функции (для этого достаточно не применять присваивание) , и т. д.
Приверженность определённого человека какой-то одной парадигме иногда носит настолько сильный характер, что споры о преимуществах и недостатках различных парадигм относятся в околокомпьютерных кругах к разряду так называемых «религиозных» войн — холиваров.
Содержание
История термина
Своим современным значением в научно-технической области термин «парадигма» обязан, по-видимому, Томасу Куну и его книге «Структура научных революций» (см. парадигма). Кун называл парадигмами устоявшиеся системы научных взглядов, в рамках которых ведутся исследования. Согласно Куну, в процессе развития научной дисциплины может произойти замена одной парадигмы на другую (как, например, геоцентрическая небесная механика Птолемея сменилась гелиоцентрической системой Коперника), при этом старая парадигма ещё продолжает некоторое время существовать и даже развиваться благодаря тому, что многие её сторонники оказываются по тем или иным причинам неспособны перестроиться для работы в другой парадигме.
Термин «парадигма программирования» впервые применил Роберт Флойд в своей лекции[2] лауреата премии Тьюринга.
Флойд отмечает, что в программировании можно наблюдать явление, подобное парадигмам Куна, но, в отличие от них, парадигмы программирования не являются взаимоисключающими:
Если прогресс искусства программирования в целом требует постоянного изобретения и усовершенствования парадигм, то совершенствование искусства отдельного программиста требует, чтобы он расширял свой репертуар парадигм.
Таким образом, по мнению Роберта Флойда, в отличие от парадигм в научном мире, описанных Куном, парадигмы программирования могут сочетаться, обогащая инструментарий программиста.
Различные определения
Далеко не все авторы, использующие термин «парадигма программирования», решаются дать интенсиональное определение данному термину. Однако и те определения, которые удаётся найти, серьёзно отличаются друг от друга.
Диомидис Спинеллис даёт следующее определение[3]:
Слово «парадигма» используется в программировании для определения семейства обозначений (нотаций), разделяющих общий способ (методику) реализаций программ. (В оригинале: The word paradigm is used in computer science to talk about a family of notations that share a common way for describing program implementations)
Для сравнения тот же автор приводит определения из других работ. В статье Дэниела Боброва[4] парадигма определяется как «стиль программирования как описания намерений программиста». Брюс Шрайвер (Bruce Shriver) определяет парадигму программирования как «модель или подход к решению проблемы»[5], Линда Фридман (Linda Friedman) — как «подход к решению проблем программирования».[6]
Памела Зейв (Pamela Zave) даёт определение парадигмы как «способа размышления о компьютерных системах» (в оригинале «way of thinking about computer systems»).[7]
Питер Вегнер (Peter Wegner) предлагает другой подход к определению термина парадигмы программирования. В его работе «Concepts and paradigms of object-oriented programming»[8] парадигмы определяются как «правила классификации языков программирования в соответствии с некоторыми условиями, которые могут быть проверены».
Тимоти Бадд предлагает понимать термин «парадигма» как «способ концептуализации того, что значит „производить вычисления“, и как задачи, подлежащие решению на компьютере, должны быть структурированы и организованы».[9]
Парадигма программирования как исходная концептуальная схема постановки проблем и их решения является инструментом грамматического описания фактов, событий, явлений и процессов, возможно, не существующих одновременно, но интуитивно объединяемых в общее понятие.
Основные модели программирования
- Императивное программирование
- Декларативное программирование
- Структурное программирование
- Функциональное программирование
- Логическое программирование
- Объектно-ориентированное программирование
Подходы и приёмы
- Структурное программирование
- Процедурное программирование
- Аппликативное программирование
- Обобщённое программирование
- Доказательное программирование
- Порождающее программирование
- Аспектно-ориентированное программирование
- Агентно-ориентированное программирование
- Рекурсия
- Автоматное программирование
- Событийно-ориентированное программирование
- Компонентно-ориентированное программирование
- Литературное программирование
См. также
Примечания
- ↑ Роганов, 2001, подраздел «Парадигмы программирования»
- ↑ R. W. Floyd. The Paradigms of Programming Communications of the ACM, 22(8):455—460, 1979. Русский перевод см. в кн.: Лекции лауреатов премии Тьюринга за первые двадцать лет (1966—1985), М.: МИР, 1993.
- ↑ D. D. Spinellis. Programming paradigms as object classes: a structuring mechanism for multiparadigm programming. PhD thesis, University of London, London SW7 2BZ, United Kingdom, February 1994.
- ↑ D. G. Bobrow. If Prolog is the answer, what is the question. // Fifth Generation of Computer Systems, pages 138—145, Tokyo, Japan, November 1984. Institute for New Generation Computer Technology (ICOT), North-Holland.
- ↑ B. D. Shriver. Software paradigms. IEEE Software, 3(1):2, January 1986.
- ↑ L. W. Friedman. Comparative programming languages: generalizing the programming function. Prentice Hall, 1991, page 188.
- ↑ P. Zave. A compositional approach to multiparadigm programming. IEEE Software, 6(5): 15—25, September 1989.
- ↑ P. Wegner. Concepts and paradigms of object-oriented programming. {OOPS} messenger}, 1(1): 7—87, August 1990.
- ↑ T. A. Budd. Multy-Paradigm Programming in LEDA. Addison-Wesley, Reading, Massachusets, 1995.
Литература
- Роганов Е. А. Основы информатики и программирования. — М.: МГИУ, 2001.
Категория:- Парадигмы программирования
Wikimedia Foundation. 2010.
Полезное
Смотреть что такое "Парадигма программирования" в других словарях:
ПАРАДИГМА ПРОГРАММИРОВАНИЯ — Совокупность идей и понятий, определяющая стиль написания программ, определяется набором инструментов программиста, а именно, языком программирования и используемыми библиотеками, определяет то, в каких терминах программист описывает логику… … Словарь бизнес-терминов
Парадигма (значения) — Парадигма (от греч. παράδειγμα, «пример, модель, образец»): Парадигма (лингвистика) Парадигма в философии науки. Парадигма программирования Другие значения: Парадигма в риторике пример, взятый из истории или мифологии и приведенный с целью… … Википедия
Парадигма — (Paradigm) Определение парадигмы, история возникновения парадигмы Информация об определении парадигмы, история возникновения парадигмы Содержание Содержание История возникновения Частные случаи (лингвистика) Управленческая парадигма Парадигма… … Энциклопедия инвестора
Парадигма (программирование) — Парадигма программирования это совокупность идей и понятий, определяющая стиль написания программ. Парадигма, в первую очередь, определяется базовой программной единицей и самим принципом достижения модульности программы. В качестве этой единицы … Википедия
Парадигма — (от греч. παράδειγμα, «пример, модель, образец») совокупность фундаментальных научных установок, представлений и терминов, принимаемая и разделяемая научным сообществом и объединяющая большинство его членов. Обеспечивает преемственность… … Википедия
Парадигма (философия) — У этого термина существуют и другие значения, см. Парадигма (значения). Парадигма (от др. греч. παράδειγμα, «пример, модель, образец» < παραδείκνυμι «сравниваю») в философии науки означает совокупность явных и неявных (и часто не… … Википедия
Язык программирования — Язык программирования формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия,… … Википедия
Языки программирования — Язык программирования формальная знаковая система, предназначенная для записи программ. Программа обычно представляет собой некоторый алгоритм в форме, понятной для исполнителя (например, компьютера). Язык программирования определяет набор… … Википедия
Мультипарадигмальный язык программирования — Мультипарадигмальный язык программирования как правило, язык программирования, который был разработан специально как инструмент мультипарадигмального программирования, то есть изобразительные возможности которого изначально предполагалось… … Википедия
Мультипарадигменный язык программирования — Под мультипарадигмальным языком программирования понимают, как правило, такой язык, который был разработан специально как инструмент мультипарадигмального программирования, т.е. изобразительные возможности которого изначально предполагалось… … Википедия