Імперативний та декларативний підходи до програмування
Розділ: Алгоритми та обчислювальна складність
📌 Про що ця тема
Тут перевіряють розуміння двох базових парадигм програмування: імперативної (ЯК обчислювати) і декларативної (ЩО треба отримати). Ключове поняття — ПАРАДИГМА, тобто спосіб мислення й опису розв'язання задачі через код. Треба вміти розпізнавати підхід за прикладом і знати представників кожного.
📖 Головне
• Імперативний підхід — програма описує ПОСЛІДОВНІСТЬ КОМАНД (крок за кроком), які змінюють стан (значення змінних) до потрібного результату. Ключове слово — «як зробити».
• Декларативний підхід — програма описує БАЖАНИЙ РЕЗУЛЬТАТ або властивості, а не покрокову процедуру. Ключове слово — «що отримати». Деталі виконання бере на себе система.
• Основа імперативного стилю: змінні, присвоєння, цикли (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 — декларативний, бо описує структуру сторінки, а не кроки її побудови.