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

Оригинальное название: programming paradigm

Коротко

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

Что такое «Парадигма программирования»

Одну и ту же задачу можно описать по-разному: как список шагов, как набор взаимодействующих объектов или как цепочку преобразований данных. Парадигма — это и есть выбранный способ думать о программе. Она влияет на то, как код делится на части, где живёт состояние и как его проверять. Языки обычно рассчитаны на одну-две парадигмы, но PHP, JavaScript и Python позволяют смешивать их в одном проекте.

Основные парадигмы

  • Императивная — программа как последовательность команд, меняющих состояние. Её частный случай — процедурное программирование, где команды собраны в процедуры.
  • Объектно-ориентированная — данные и действия над ними объединены в объекты. Подробно — в статье об ООП.
  • Функциональная — вычисление как композиция функций без изменяемого состояния.
  • Декларативная — описывается результат, а не путь к нему. Типичные примеры — SQL и HTML.

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

Одна задача — три стиля

Посчитать сумму заказа по позициям можно так:

// императивно
$total = 0;
foreach ( $items as $item ) {
    $total += $item['price'] * $item['qty'];
}

// функционально
$total = array_sum( array_map( fn( $i ) => $i['price'] * $i['qty'], $items ) );

// объектно
$total = $cart->getTotal();

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

Как выбирать

Парадигму не выбирают «раз и навсегда». Обработку списка удобно писать функционально, предметную модель магазина — объектами, короткий скрипт миграции — процедурно. Важнее другое: в одном модуле придерживаться одного стиля и следовать соглашениям платформы. Например, ядро WordPress во многом процедурное, а 1С-Битрикс D7 построено на классах, и код, написанный «против» платформы, сложнее сопровождать. Как писать без изменяемого состояния, разобрано в статье про функциональное программирование.

Обновлено:

Все термины раздела «Backend»

Что будем искать? Например,Продвижение