Перейти до змісту

Імперативне програмування

Імперативне програмування — це підхід до побудови програм, що використовує алгоритмічну декомпозицію задачі, при якій програма представляється як послідовність дій (команд), які повинен виконати комп'ютер покроковим чином. Оскільки імперативна програма дуже схожа на накази комп'ютеру, то імперативне програмування іноді називають наказовим.

Концептуальною ідеєю імперативного підходу до розробки програм є алгоритмічна структура програмного коду, яка передбачає роз'єднання у програмах даних і дій, що виконуються над ними. Активним суб’єктом у імперативних програмах вважається алгоритм, який повинен виконати всі необхідні для досягнення потрібного результату дії над пасивними даними. Таким чином, наголос у імперативному програмуванні робиться на верховенстві алгоритму над даними.

Імперативна парадигма програмування є відображенням архітектури традиційних ЕОМ, яка була запропонована фон Нейманом. Теоретичною основою імперативногопрограмування служить алгоритмічна система під назвою «машина Т’юринга» — абстрактнийобчислювальнийпристрій, що виконує послідовність команд програми, яка, таким чином, переходить з одного стану в інший. Відповідно програма в імперативному програмуванні розглядається як послідовність дій, які змінюють стан компьютера.

Якщо розглядати стан комп'ютера як стан пам'яті, тобто значень комірок пам'яті, то імперативна програма — це послідовність операторів, які перетворюють початковий стан пам'яті, тобто значення вихідних даних, у заключний, тобто у результати. Концепції пам'яті як сховища значень, поточного кроку виконання і поточного стану, що змінюється у часі, є фундаментальними в імперативному програмуванні.

Моделлю обробки даних при імперативному підході є послідовне виконання команд, які задають алгоритм вирішення задачі. Коротко це можна представити наступною нотацією:

програма = послідовність дій.

Базовими поняттями імперативної парадигми програмування є поняття оператора (команди), що задає дію по обробці даних, та поняття змінної, якій може бути присвоєно значення, що зберігається в памяті комп'ютера; базовою операцією є операція присвоєння, що служить для зміни вмісту областей пам'яті.

Основна задача програміста при написанні імперативної програми — звести рішення задачі до послідовності операторів, які вміє виконувати процесор комп'ютера.

Кожна парадигма програмування має відповідну інструментальну підтримку. Найбільш відомі і поширені імперативні мови програмування:

  • Fortran (1954)
  • Algol (1960)
  • C (1972)

Оскільки практично всі сучасні комп'ютери орієнтовані на послідовні обчислення, імперативне програмування явно виграє в ефективності реалізації прикладних задач, для яких важлива швидкість виконання. Окрім цього, робота із зовнішніми пристроями, як правило, описується в термінах послідовного виконання операцій, що робить такі задачі ідеальними для імперативної реалізації.

Процедурне програмування

Процедурне програмування — це програмування в імперативному стилі, при якому оператори які виконуються послідовно можна зібрати у підпрограми, тобто більш крупні цілістні одиниці кода за допомогою механізмів самої мови програмування.

Процедурне програмування засноване на концепції виклику процедури. Процедури, також відомі як підпрограми, методи, або функції (це не математичні функції, але функції, подібні до тих, які використовуються в функціональному програмуванні). Процедури містять певну послідовність кроків для виконання. В ході виконання програми будь-яка процедура може бути викликана з будь-якого місця програми, включно з самої процедури, яка викликається (рекурсивний виклик).

Процедурна парадигма була хронологічно першої і довгий час превалювала. В даний час вона поступово поступається своїм місцем об'єктно-орієнтованій парадигмі, хоча все ще займає близько половини ринку розробки програмного забезпечення. Вона застосовується на всіх рівнях розробки програмного забезпечення.

Декомпозиція при процедурному підході полягає в тому, що завдання, що реалізується програмою, ділиться на підзадачі, а вони в свою чергу — на більш дрібні етапи, тобто виконується покрокова деталізація алгоритму розв'язання задачі.

Виконання процедур природно назвати процесом, причому з одного процесу може активізуватися інший, що є головним способом управління загальним процесом. У момент активізації може проводитися передача даних, які носять в такому випадку назву "параметрів". Закінчення виконання процедури пов'язано з поверненням результату і функції управління в викликаючу програму.

Можливі переваги: * Можливість повторного використання одного і того ж коду з різних місць програми без його копіювання * Легше відстежити потік виконання програми, ніж у випадку використання операторів GOTO або JUMP (перехід на конкретно вказану точку програми), що можуть зробити з складної програми так званий «спагетті-код». * Можливість підтримки модульності і структурності.

До процедурних мов програмування можна віднести наступні: * C * Pascal * Python

Додаткові матеріали

  1. Вікіпедія: імперативне програмування
  2. Вікіпедія: Машина Т'юрінга
  3. Спагетти-статья о спагетти-коде
Back to top