При
императивном подходе можно считать, что в Вашем распоряжении есть исполнитель, который понимает определённый набор команд. Он может копать, может не копать, может сделать ветвление, цикл, присвоение, вызов и т.д.
Императивному подходу часто противопоставляют
декларативный. Вы не говорите, что должен делать исполнитель. Вместо этого описывается (декларируется) желаемый результат. Как правило, декларативный подход является более высокоуровневым. Например, составляя SQL запросы, мы не рассказываем СУБД, как именно получать результат (как правило). Это детали реализации, которые нас не волнуют.
Сравните, например, два подхода к управлению инфраструктурой:
- Зайти по SSH на такую-то машину;
- Установить такой-то пакет;
- Скопировать конфиг туда-то.
и
- Мне нужна машина такая-то,
- На которой есть такой-то пакет,
- У которого есть такая-то конфигурация.
Процедурное программирование - это способ организации императивных программ. Во-первых, это программирование структурное. Условно говоря, у нас нет оператора goto. Есть процедуры. В качестве параметров процедуры получают рычаги для манипуляции данными. В своём коде процедуры "дёргают" за эти рычаги. Они могут читать свои параметры, менять свои параметры, выполнять к ним вызовы. Вы можете столкнуться с процедурным программированием при написании хранимых процедур для PostgreSQL. Из реального мира: отдавая туфли в починку, Вы применяете процедурный подход.
Для полноты картины тут же нужно упомянуть о
чистых функциях. В отличие от процедур, чистая функция не может изменять состояние своих параметров. И не может изменять состояние внешнего мира. Поэтому она чистая. В ходе работы чистая функция формирует некоторую сущность, которую "возвращает" по завершении. В реальном мире в качестве примера чистой функции можно привести консультацию врача. Входной параметр - Ваше состояние. Выходное значение - рекомендации и назначения.