Перейти к содержимому

Что такое парадигма в программировании

  • автор:

Новосибирский государственный университет

Словарь-справочник по информатике (онтология информатики)

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

Синонимы: парадигмы программирования; парадигма программирования; стиль программирования;

Парадигма программирования — исходная концептуальная схема постановки задач и их решения вместе с языком, ее формализующим, и формирующая стиль программирования.

Парадигма (παράδειγμα, «пример, модель, образец») — совокупность фундаментальных научных установок, представлений и терминов, принимаемая и разделяемая научным сообществом и объединяющая большинство его членов. Обеспечивает преемственность развития науки и научного творчества.

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

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

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

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

Ключевые термины, связанные с термином «парадигмы программирования»:

  1. Аспектно-ориентированное программирование
  2. Декларативное программирование
  3. Императивное программирование
  4. Логическое программирование
  5. Модель программная
  6. Объектно-ориентированное программирование
  7. Программирование структурное
  8. Функциональное программирование

Литература

© 2007-2024, Новосибирский государственный университет, Новосибирск
© 1998-2024, Институт вычислительных технологий СО РАН, Новосибирск
© 1998-2024, Федотов А.М.
Дата последней модификации: 22.12.2013

Парадигмы программирования: что это такое

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

Даниил Фам

Даниил Фам
Исполнительный директор
12 декабря 2022

Парадигмы программирования: что это такое кратко

Что такое парадигмы программирования: понятие, пример

Для погружения в эту непростую тему сначала дадим определение этому понятию: парадигма программирования — это набор концепций, терминов, правил и абстрактных идей, которые определяют стиль написания кода. То есть, это модель, содержащая нотации для оптимальной реализации программы.

При этом сразу стоит обратить внимание, что это понятие не тождественно языкам программирования. Языки могут быть мультипарадигменными и подчиняться не одной модели. Другими словами: это когда при кодинге на одном и том же языке — для решения разных задач применяются наиболее подходящие для этого подходы. Получается, что много парадигмальность языка — большой плюс, так как он позволяет переключаться между подходами, оставаясь в знакомой среде.

Более того — новые языки создаются именно на базе существующих парадигм.

Примеры парадигм программирования: идея функциональной модели базируется исключительно на применении функций, а вот объектно-ориентированное уже основано на взаимодействии классов и объектов.

Для чего нужны парадигмы программирования: происхождение и применение

Далее рассмотрим два важных вопроса: как появились парадигмы языков программирования и зачем их стали использовать?

Делов том, что за время существования программирования, разработчиками ПО — было создано множество оптимальных по эффективности методик для решения различных задач. Далее они были отточены опытным путём и сформированы в парадигмы.

Это было сделано для облегчения работы программистов. Ведь зачастую теперь достаточно определить классификацию задачи, чтобы понять — при помощи какой методики можно её решить наилучшим способом.

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

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

Также использование таких готовых моделей позволяет довольно быстро преодолевать проблему отсутствия опыта в написании кода на новом языке.

Какие виды существуют: кратко об основных парадигмах программирования

Теперь поговорим про основные виды парадигм программирования, а также кратко рассмотрим — на чём базируется написание программного кода в них.

Из используемых моделей можно выделить две контрастирующие между собой:

  • Императивное — строится на последовательности логических команд для компьютерного железа, которые четко описывают алгоритмы работы ПО
  • Декларативное — не требует подробных указаний, так как представляет собой описание задачи и требуемого результата

Виды парадигм

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

Также есть различные подвиды, например:

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

  • Объектно-ориентированное
  • Процедурное
  • Структурное
  • Функциональное
  • Логическое
  • Обобщённое

Естественно — это далеко не все виды моделей кодинга, так как их уже создано достаточно, при этом периодически появляются новые подходы. Некоторые из них являются подвидами основных, но при этом в силу своих особенностей зачастую рассматриваются отдельно. Также многие современные парадигмы программирования достаточно часто пересекаются в некоторых аспектах (например: в наборе понятий, правил или концепций).

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

Императивная парадигма программирования: почему этот подход используется чаще всего

Здесь мы кратко рассмотрим — что такое императивная парадигма программирования.

Данный подход отталкивается от написания последовательности команд, которые должен выполнить процессор для выполнения программной задачи. То есть написанная таким методом программа буквально напрямую отдаёт приказания железу.

Но, несмотря на строгость концепции — эта модель даёт разработчикам значительно больше свободы при реализации прикладного программного обеспечения. Соответственно — она чаще применяется для решения творческих задач, особенно в которых необходимо четкое соблюдения последовательности действий.

Бывает нескольких подвидов этого подхода, которые определяются языками программирования: процедурная, структурная, аспектно- и объектно-ориентированная (которая также может быть агентно-, компонентно-, прототипно-ориентированной, а также сюда относится обобщенная модель создания кода).

Декларативная парадигма программирования: подробнее о подходе

Так как мы рассматриваем основные парадигмы программирования, необходимо обязательно описать и эту модель, ориентированную на описание задачи и ожидаемого результата.

В декларативной парадигме разработчик описывает проблему и ожидаемый результат, но не пишет никаких инструкций. В декларативном программировании отсутствуют переменные, состояние и прочие понятия, которые свойственны императивной.

Здесь разработчику не нужно расписывать инструкции, использовать переменные, состояния и другие инструменты. Программист не думает о том, как программа будет выполнять задачу, он просто пишет, какой результат ему нужен.

Да, такой подход к созданию кода требует намного меньшего количества когда и оно значительно легче, чем императивное. Но оно абсолютно не подходит для реализации идей, где необходимо получать данные о состоянии программы в определённый момент (например: выполнено ли пользователем конкретное действие), соответственно — нет возможности указать, что программа должна реагировать.

Для наилучшего понимания ситуации, важно озвучить один нюанс. Несмотря на то, что эта модель считается контрастирующей с императивной — её можно считать «надстройкой», так как для осуществления возможности работы декларативной сначала создаются инструкции, без которых невозможно взаимодействие железа и ПО.

К декларативной парадигме относятся: функциональное и логическое программирование.

Обобщённое программирование: в чём уникальность этого подхода

Эта модель относится к метапрограммированию, но одна из востребованных в данном виде. Поэтому мы рассмотрим именно её.

Суть подхода основана на алгоритмическом мышлении и обработке абстрактных описаний требований структур контейнеров, которые не привязываются к определённому типу используемых данных и позволяют работать с различными их видами, не меняя сами описания.

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

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

Итого

Тема, действительно очень интересная и объёмная. А о том, какие подходы к программированию использовать в той или иной ситуации можно прочитать не одну лекцию. К тому же — это вопрос неоднозначный и вызывающий немало холиваров среди разработчиков.

Одно можно сказать с уверенностью — с практической точки здания для эффективного решения задач при написании исходного кода ПО стоит знать особенности различных моделей в разных языках.

Информация была полезна?

15 оценок, среднее 3.9 из 5

Что такое парадигмы программирования

Есть две основные парадигмы программирования: императивная и декларативная.

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

Анастасия Хамидулина
Автор статьи
1 августа 2023 в 11:58

Парадигмы программирования — это свод требований, которые используются в разных языках программирования. Их нельзя назвать статичным стоп-листом: это, скорее, варианты решения определенных задач.

Что такое парадигмы программирования

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

От парадигм зависят любые этапы программирования: шаблоны, свойства, паттерны, структура, архитектура программы или мобильного приложения.

Императивное программирование

Главное отличие этого типа — последовательное выполнение задач. Большая часть языков заточена именно под него.

Раньше процедурные языки были популярными и востребованными у разработчиков ПО. Сейчас распространено объектно-ориентированное программирование (ООП).

Такой тип используется в языках C, Pascal, COBOL, ALGOL, BASIC, Fortran и т. д.

Базовое понятие — это функция или процедура в виде последовательно записанных и названных действий. Например, когда вы покупаете конструктор «Лего», его нужно собрать. Схема сборки, которая идет в комплекте, — и есть функция.

Несмотря на то что понятия «процедура» и «функция» — синонимы, функциональное и процедурное программирование — разные вещи. Функциональное основано на декларативной парадигме, а процедурное — на императивной.

Когда мы отдаем машину в ремонт, например перебрать двигатель, то нас не интересует, какие процессы выполняет автомеханик. Главная задача — получить результат. Аналогично и с вызовом функции. Необходимо знать только наименование процедуры и технику ее использования.

Этот подвид применяется в языках Java, Python, C++, Ruby, C#, Objective-C, PHP и подобных.

Такой тип самый распространенный и многофункциональный. Здесь есть объекты, которые самостоятельно выполняют заданные функции, и настройка связей между ними.

С помощью ООП разработчик может настраивать связи между частями программы. Всё это нужно, чтобы выполнять разнородные операции и разделять их между сотрудниками. А еще так легче выполнять и тестировать ПО в автоматическом режиме.

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

Декларативное программирование

На контрасте с императивным стилем развивался и декларативный. В нём собирали лучшие практики, которые со временем стали парадигмами.

Здесь речь идет скорее о математике, чем о программировании. Основа — использование математических доказательств и законов логики. Всё это помогает решать поставленные бизнес-задачи.

Чтобы успешно пользоваться таким типом программирования, важно уметь переводить любую задачу на язык математики.

Моделирование процессов — сегмент, в котором логическое программирование наиболее популярно.

Этот тип близок к понятию функции в математике — особенно та часть, которая касается раздела о преобразовании данных.

Главный нюанс в том, что функция должна быть чистой, не имеющей побочных эффектов или переменных внешней среды. Когда функция изменяет глобальную переменную или вызывает метод внешнего объекта, то она изменяет и внешнюю среду. В этом заключается побочный эффект.

Примеры использования парадигм программирования

Процедурная — для написания кода микрочипа

Здесь может быть особенно специфический процессор для разработки компилятора сложного объектно-ориентированного языка. Но надо помнить, что технических возможностей чипа может быть мало, чтобы программы нормально функционировали на современных языках.

Объектно-ориентированная

Есть много приложений для компьютеров и смартфонов, популярных интернет-сервисов, «умных» телевизоров и роутеров, которые написаны на объектно-ориентированном языке.

Декларативная — для описания внешнего вида сайтов

Здесь пишут на языке CSS. Через него указывают шрифт текста, цвет фона, размер картинки.

Функциональная — для криптовалюты и блокчейна

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

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

Но есть такие, которые используют в языках для специфических задач. Например, логическую парадигму разработчики берут для решения математических уравнений, а язык Prolog решает судоку.

Сравнение парадигм программирования

Представим, что есть массив следующих чисел:

412, 5, 625, 243, 2, 14, 30, 79, 4, 634, 367, 8, 34, 798, 159

В декларативном программировании разработчик пишет:

Получить из массива N все числа, которые больше 5 и меньше 500

В этом случае разработчику нужен исключительно конечный результат, а не процесс исполнения задачи.

Если выбрать императивный вариант программирования, то придется самостоятельно написать код, проверяющий все числа из массива N на соответствие условию. Код должен уметь выписывать их в новый массив.

Создать массив N с числами …;

объявить переменную i со значением 0;

Начало цикла:

Если значение элемента номер i больше 5 и меньше 500, то добавить его в массив N2;

Прибавить к переменной i единицу;

Повторять, пока значение переменной i меньше количества элементов массива N;

Конец цикла;

Вернуть массив N2;

То есть в декларативном программировании разработчик говорит, что ему нужно. А в императивном — как это можно получить.

Рассмотрим на примере:

n = arr = [412, 5, 625, 243, 2, 14, 30, 79, 4, 634, 367, 8, 34, 798, 159] result = [] for i in range(len(arr)): if arr[i] > 5 and arr[i] < 500: result.append(arr[i]) print(result)
n = [412, 5, 625, 243, 2, 14, 30, 79, 4, 634, 367, 8, 34, 798, 159] result = list(filter(lambda x: x > 5 and x < 500, arr)) print(result)

Освойте популярные языки программирования Java и Python с нуля в онлайн-университете Skypro. Программы соответствуют требованиям работодателей, постоянно обновляются. В конце обучения вы получите диплом и новую работу: гарантию трудоустройства фиксируем в договоре или возвращаем деньги за курс.

Если писать код на декларативном языке проще, зачем тогда выбирают императивное программирование? Есть три причины:

  1. Декларативное программирование не работает без императивного.
  2. На декларативном языке нельзя работать с задачами, для решения которых нужен доступ к состоянию программы.
  3. У императивного программирования меньше ограничений.

Главное

  • Парадигма — это набор взаимосвязанных требований и принципов, которые используют в процессе разработки программного обеспечения для ПК.
  • От парадигм зависят любые этапы программирования: шаблоны, свойства, паттерны, структура, архитектура программы или мобильного приложения.
  • Есть императивное программирование и декларативное. Императивное включает в себя процедурное и объектно-ориентированное программирование. Декларативное — логическое и функциональное.

Что такое парадигмы программирования и зачем они нужны

Знакомство с новыми парадигмами программирования может перевернуть вашу точку зрения на написание кода. Рассказываем, что это такое.

Евгений Кучерявый

Евгений Кучерявый

Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.

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

Императивная парадигма программирования

В императивной (англ. imperative — приказ) парадигме разработчик пишет для компьютера инструкции, которым тот следует. Инструкции могут быть следующие:

  • сложи два числа;
  • если а, то сделай б, а иначе сделай в;
  • отправь запрос на сервер;
  • открой файл;
  • выведи строку.

То есть программист говорит, что нужно сделать и в каком порядке, а компьютер выполняет приказы.

Отличительная черта императивной парадигмы — понятие состояния компьютера или программы. Состояние — это совокупность всех данных в определённый момент времени: переменных, массивов, счётчиков и так далее.

К императивной парадигме относятся следующие виды программирования:

  • процедурное;
  • структурное;
  • аспектно-ориентированное;
  • объектно-ориентированное и другие.

Также императивную парадигму программирования можно считать более низкоуровневой, потому что программисту нужно знать, как работают программы.

Декларативная парадигма программирования

В декларативной парадигме разработчик описывает проблему и ожидаемый результат, но не пишет никаких инструкций. В декларативном программировании отсутствуют переменные, состояние и прочие понятия, которые свойственны императивной парадигме.

К декларативной парадигме относятся функциональное и логическое программирование.

Примеры использования парадигм

Допустим, у нас есть массив следующих чисел:

5, 1, 3, 9, 12, 583, 998, 7538, 72, 53, 71, 85, 7, 2, 9

Нам может понадобиться получить из этого массива все числа, которые больше 3, но меньше 100.

В декларативном программировании разработчик просто пишет следующее:

Получить из массива N все числа, которые больше 3 и меньше 100

Программист не думает о том, как программа будет искать эти числа, он просто пишет, какой результат ему нужен.

В императивном программировании придётся самостоятельно написать код, который будет проверять все числа из массива N на соответствие условию и, если они подходят, записывать их в новый массив. То есть код будет выглядеть примерно так:

Создать массив N с числами …; объявить переменную i со значением 0; Начало цикла: Если значение элемента номер i больше 3 и меньше 100, то добавить его в массив N2; Прибавить к переменной i единицу; Повторять, пока значение переменной i меньше количества элементов массива N; Конец цикла; Вернуть массив N2; 

То есть в декларативном программировании разработчик говорит, что ему нужно. А в императивном — как это можно получить.

Давайте рассмотрим это на примере двух реальных языков:

List nums = new List();

Зачем это нужно

У вас мог появиться вполне логичный вопрос:

Зачем использовать императивное программирование, если декларативное позволяет писать гораздо меньше кода?

Есть несколько причин.

Во-первых, декларативное программирование — это обёртка для императивного. Компьютер не может вот так просто понять, чего хочет программист, поэтому для него нужно написать конкретные инструкции, что и в каком порядке делать.

Когда вы пишете запрос в SQL, его выполнение происходит по заранее описанным инструкциям. Поэтому нам нужно императивное программирование, чтобы заставить работать декларативное.

Во-вторых, декларативное программирование не подходит для задач, для решения которых важно иметь доступ к состоянию программы — например, если нужно проверить, нажата ли кнопка или поставлена ли галочка в чекбокс.

В декларативном программировании нельзя отследить ни само состояние, ни его изменение, поэтому не получится указать, что должно происходить в ответ на действия пользователя.

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

Каждая парадигма подходит для определённых задач: императивная лучше для работы с анимацией, графическими интерфейсами, скриптами, играми и многим другим, а декларативная — для вычислений и работы с данными. Поэтому вопрос «Какая парадигма лучше?» некорректен: они все хороши, если использовать их по назначению.

Заключение

Большинство языков поддерживают обе парадигмы, но заточены под одну из них. Один из таких языков — C#. Несмотря на то что это объектно-ориентированный язык программирования (императивная парадигма), в нём присутствуют элементы функциональной разработки (декларативная разработка).

Читайте также:

  • Не Windows единой: как писать кроссплатформенные приложения с GUI на C#
  • Что такое DevOps и зачем он нужен?
  • Что такое Git: объясняем на схемах

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *