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

/ AlgStr / Библиотека / Понятия / Парадигма программирования

Паради́гма программи́рования— это совокупность идей и понятий, определяющая стиль написания программ.Парадигма, в первую очередь, определяется базовой программной единицей и самим принципом достижения модульности программы. В качестве этой единицы выступают определение (декларативное,функциональное программирование), действие (императивное программирование), правило (продукционное программирование),диаграммапереходов (автоматное программирование) и др. сущности. В современной индустрии программирования очень часто парадигма программирования определяется набором инструментов программиста, а именно,языком программированияи используемымибиблиотеками.

Парадигма программирования определяет то, в каких терминах программистописывает логику программы. Например, вимперативном программированиипрограмма описывается как последовательность действий, а вфункциональном программированиипредставляется в виде выражения и множества определений функций (словоопределение(англ.definition) следует понимать в математическом смысле). В популярномобъектно-ориентированном программировании(в дальнейшем ООП) программу принято рассматривать как набор взаимодействующих объектов. ООП, в основном [1] , есть по сути императивное программирование, дополненное принципоминкапсуляцииданных и методов в объект (принцип модульности) и наследованием (принципом повторного использования разработанного функционала).

Важно отметить, что парадигма программирования не определяется однозначно языком программирования — многие современные языки программирования являются мультипарадигменными, то есть допускают использование различных парадигм. Так на языке Си, который не является объектно-ориентированным, можно писать объектно-ориентированным образом, а наRuby, в основу которого в значительной степени положена объектно-ориентированная парадигма, можно писать согласно стилю функционального программирования.

Приверженность определённого человека какой-то одной парадигме иногда носит настолько сильный характер, что споры о преимуществах и недостатках различных парадигм относятся в околокомпьютерных кругах к разряду так называемых «религиозных» войнхоливар.

История термина

Своим современным значением в научно-технической области термин «парадигма» обязан, по-видимому, Томасу Кунуи его книге «Структура научных революций» (см.парадигма). Кун называл парадигмами устоявшиеся системы научных взглядов, в рамках которых ведутся исследования. Согласно Куну, в процессе развития научной дисциплины может произойти замена одной парадигмы на другую (как, например,геоцентрическая небесная механикаПтолемеясмениласьгелиоцентрической системойКоперника), при этом старая парадигма ещё продолжает некоторое время существовать и даже развиваться благодаря тому, что многие её сторонники оказываются по тем или иным причинам неспособны перестроиться для работы в другой парадигме.

Термин «парадигма программирования» впервые применил Роберт Флойдв своей лекции [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]

Памела Зей

*Предлагаемые к заключению договоры или финансовые инструменты являются высокорискованными и могут привести к потере внесенных денежных средств в полном объеме. До совершения сделок следует ознакомиться с рисками, с которыми они связаны.

Ссылка на основную публикацию