Імперативний та декларативний підходи до програмування

Розділ: Алгоритми та обчислювальна складність

📌 Про що ця тема


Тут перевіряють розуміння двох базових парадигм програмування: імперативної (ЯК обчислювати) і декларативної (ЩО треба отримати). Ключове поняття — ПАРАДИГМА, тобто спосіб мислення й опису розв'язання задачі через код. Треба вміти розпізнавати підхід за прикладом і знати представників кожного.


📖 Головне


• Імперативний підхід — програма описує ПОСЛІДОВНІСТЬ КОМАНД (крок за кроком), які змінюють стан (значення змінних) до потрібного результату. Ключове слово — «як зробити».


• Декларативний підхід — програма описує БАЖАНИЙ РЕЗУЛЬТАТ або властивості, а не покрокову процедуру. Ключове слово — «що отримати». Деталі виконання бере на себе система.


• Основа імперативного стилю: змінні, присвоєння, цикли (for, while), розгалуження (if), виклики процедур. Порядок дій важливий.


• У декларативному стилі ти не пишеш циклів вручну — ти формулюєш умову/запит, а «як» вирішує середовище виконання.


• Приклади імперативних мов: Pascal, C, Python (у звичайному стилі), асемблер.


• Приклади декларативних засобів: SQL (запити до бази даних), HTML/CSS (опис структури й вигляду сторінки), електронні таблиці (формули в клітинках), мови логічного програмування (Prolog), функціональний стиль.


• Різниця в мисленні: імперативно — «пройди масив циклом і додавай кожен елемент до суми»; декларативно — «дай суму всіх елементів».


• Багато сучасних мов змішані: одну задачу можна описати обома способами.


🔢 Як це працює на прикладі


Задача: знайти суму чисел від 1 до 5.


Імперативно (крок за кроком):

sum = 0

for i from 1 to 5:

sum = sum + i

Тут ми явно керуємо лічильником i, змінюємо sum на кожній ітерації. Видно КОЖЕН крок і зміну стану.


Декларативно (SQL):

SELECT SUM(number) FROM numbers;

Ми лише кажемо «потрібна сума стовпця number». Як саме база перебирає рядки — нас не цікавить.


Інший приклад — вивести на сторінці заголовок. У HTML ми пишемо <h1>Привіт</h1> — це опис ЩО має бути (заголовок з текстом), а не інструкція, як браузеру його малювати піксель за пікселем. Це декларативний опис.


⚠️ Типові помилки


• Плутають мову з парадигмою: вважають, що Python — завжди імперативний. Насправді парадигму визначає СТИЛЬ коду, а Python підтримує обидва.


• Називають SQL «мовою програмування загального призначення» — це декларативна мова запитів, вона описує результат, а не алгоритм.


• Вважають, що в декларативному підході «немає алгоритму». Алгоритм є, але його виконує система, а не програміст описує вручну.


• Відносять HTML/CSS до імперативних, бо «це код». Насправді це декларативний опис структури й стилю.


• Ототожнюють «декларативне» лише з функціональним програмуванням — це ширше поняття (SQL, HTML, логічні мови теж сюди).


🎯 Що завчити напамʼять


• Імперативний = ЯК (послідовність команд, зміна стану). Приклади: Pascal, C, асемблер.


• Декларативний = ЩО (опис результату). Приклади: SQL, HTML/CSS, Prolog, формули таблиць.


• Цикли й присвоєння — ознака імперативного стилю.


• Запит/опис без явних кроків — ознака декларативного.


🧠 Перевір себе


1. Який підхід описує послідовність команд зі зміною стану?

2. До якого підходу належить SQL і чому?

3. Чи може одна мова підтримувати обидві парадигми?

4. HTML — це імперативний чи декларативний засіб?


Відповіді: 1 — імперативний; 2 — декларативний, бо описує бажаний результат (що отримати), а не покрокову процедуру; 3 — так, парадигму визначає стиль коду (напр. Python); 4 — декларативний, бо описує структуру сторінки, а не кроки її побудови.

Перевірити себе на практиці

Прочитати — половина справи. Далі потрібні завдання цієї ж теми з розбором кожної відповіді: саме на них видно, чи справді тема закрита.