Код #Статьи

25 августа, 2025

Что такое парадигма программирования / Skillbox Media

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

Бесплатный курс по Python ➞ Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе.

Узнать больше

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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