Парадигма программирования
Оригинальное название: 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 построено на классах, и код, написанный «против» платформы, сложнее сопровождать. Как писать без изменяемого состояния, разобрано в статье про функциональное программирование.

