
- •9. Основи програмування
- •9.1 Сутність і види мов програмування
- •9.1.1. Поняття класу та об'єкта в об’єктно-орієнтованому програмуванні; конструктор і деструктор, інтерфейс та реалізація
- •9.1.2. Базові концепції об’єктно-орієнтованого програмування: абстракція, інкапсуляція, спадкування, поліморфізм
- •9.1.3. Зв'язки між класами в об’єктно-орієнтованому програмуванні: асоціація, агрегація, композиція, спадкування, залежність, реалізація
- •9.1.4. Порівняння процедурного та об’єктно-орієнтованого програмування.
- •9.2. Принципи та сфера застосування видів програмування: функціональне, логічне, подійне-орієнтоване, реактивне, узагальнене програмування
- •9.3 Моделі паралельних обчислень: класифікація Флінна
- •9.3.2. Ефективність та вартість паралельних обчислень
- •9.4. Трансляція та виконання: компілятор, інтерпретатор, компонувальник.
9.1.4. Порівняння процедурного та об’єктно-орієнтованого програмування.
Процедурне програмування — парадигма програмування, заснована на концепції виклику процедури. Процедури, також відомі як підпрограми, методи, або функції (це не математичні функції, але функції, подібні до тих, які використовуються в функціональному програмуванні).
Процедури містять певну послідовність кроків для виконання. В ході виконання програми будь-яка процедура може бути викликана з будь-якого місця програми, включно з самої процедури, яка викликається (рекурсивний виклик).
Можливі переваги:
Можливість повторного використання одного і того ж коду з різних місць програми без його копіювання.
Легше відстежити потік виконання програми, ніж у випадку використання операторів GOTO або JUMP, що можуть зробити зі складної програми так званий код-спагеті.
Можливість підтримки модульності і структурності.
Об'єктно-орієнтоване програмування[1] (ООП, іноді об'єктно-зорієнто́ване програмува́ння[2][1][3]; англ. Object-oriented programming, OOP) — одна з парадигм програмування, яка розглядає програму як множину «об'єктів», що взаємодіють між собою.[4] Основу ООП складають чотири основні концепції: інкапсуляція, успадкування, поліморфізм та абстракція[5] Однією з переваг ООП є краща модульність програмного забезпечення (тисячу функцій процедурної мови, в ООП можна замінити кількома десятками класів із своїми методами). Попри те, що ця парадигма з'явилась в 1960-х роках, вона не мала широкого застосування до 1990-х, коли розвиток комп'ютерів та комп'ютерних мереж дав змогу писати надзвичайно об'ємне і складне програмне забезпечення, що змусило переглянути підходи до написання програм. Сьогодні багато мов програмування або підтримують ООП (PHP, Lua) або ж є цілком об'єкто-орієнтованими (зокрема, Java, C#, C++, Python, Ruby і Objective-C, ActionScript 3, Swift, Vala).
Об'єктно-орієнтоване програмування сягає своїм корінням до створення мови програмування Симула в 1960-х роках, одночасно з посиленням дискусій про кризу програмного забезпечення[en]. Через ускладнення апаратного та програмного забезпечення було дуже важко зберегти якість програм. Об'єкто-орієнтоване програмування частково розв'язує цю проблему шляхом наголошення на модульності програми[6].
На відміну від традиційних поглядів, коли програму розглядали як набір підпрограм, або як перелік інструкцій комп'ютеру, ООП-програми можна вважати сукупністю об'єктів. Відповідно до парадигми об'єктно-орієнтованого програмування, кожен об'єкт здатний отримувати повідомлення, обробляти дані, та надсилати повідомлення іншим об'єктам. Кожен об'єкт — своєрідний незалежний автомат з окремим призначенням та відповідальністю[7].
Процедурне програмування – це підхід до написання комп’ютерних програм, заснований на використанні процедур, функцій і підпрограм. Належить до структурного програмування і описує програми у вигляді послідовності операцій, які виконуються по порядку.
Ключові особливості процедурного програмування
Однією з головних особливостей процедурного програмування є його модульність. Це означає, що програма розбивається на окремі блоки, які називаються процедурами або функціями, кожен з яких виконує певну задачу. Це дозволяє створювати більш чистий і структурований код.
Ще однією ключовою особливістю процедурного програмування є використання змінних, які являють собою області пам’яті, що можуть зберігати дані різних типів, таких як цілі числа, дробові числа, символи тощо. У процесі виконання програми значення змінних можуть змінюватися.
Для роботи з даними в процедурному програмуванні використовуються оператори, які можуть виконувати різні операції над змінними. Оператори можуть використовуватися для виконання арифметичних операцій (наприклад, додавання, віднімання, множення, ділення), логічних операцій (наприклад, порівняння значень змінних, логічне І, логічне АБО) та інших операцій (наприклад, операції порівняння рядків, операції зсуву тощо);
Як і будь-який процес, процедурне програмування має як переваги, так і недоліки. Однією з основних переваг процедурного програмування є простота та зрозумілість коду. Це полегшує налагодження програм і підвищує її надійність. Крім того, процедурне програмування дає змогу створювати більш швидкодіючі програми, ніж, наприклад, об’єктно-орієнтоване програмування.
Однак, процедурне програмування має і свої недоліки. Наприклад, воно має обмежену гнучкість і складність розширення коду. Крім того, процедурне програмування менш підходить для великих і складних програм, де потрібно використовувати більш складні структури даних і алгоритми.
Процедурне програмування та об’єктно-орієнтоване програмування: пряме порівняння. Процедурне програмування та об’єктно-орієнтоване програмування (ООП) – це два різні підходи до написання комп’ютерних програм. ООП базується на понятті об’єктів, які мають властивості (атрибути) і методи (функції), пов’язані з цими властивостями. Об’єкти можуть взаємодіяти один з одним і успадковувати властивості та методи від інших об’єктів.
На відміну від ООП, процедурне програмування орієнтоване на послідовність виконуваних дій. Воно використовує підпрограми, звані процедурами або функціями, для поділу коду на більш дрібні блоки та повторного використання коду.
Як бачимо, процедурне програмування надає простий і зрозумілий код, швидке виконання та легкість налагодження, але воно також має обмежену гнучкість і складність розширення коду. З іншого боку, об’єктно-орієнтоване програмування дає змогу створювати складніші та гнучкіші системи, але може потребувати більш тривалого часу для розроблення і вимагати більш високого рівня абстракції та розуміння. Під час вибору між процедурним і об’єктно-орієнтованим підходами до програмування, необхідно враховувати конкретні вимоги проєкту і зробити вибір на основі їх відповідності.
Процедурні мови програмування – це мови, які використовуються для написання програм з використанням процедурного програмування. У таких мовах програмування процедури виконуються послідовно і поділяються на блоки, що дає змогу керувати логікою виконання програми. Однією з найвідоміших процедурних мов програмування є Сі. Вона була розроблена на початку 1970-х років і досі є однією з найпопулярніших мов програмування у світі. Іншими прикладами процедурних мов є Pascal, COBOL і Fortran (пізніші версії).
Кожна процедурна мова програмування має свої особливості, переваги та недоліки. Наприклад, С відрізняється від інших процедурних мов програмування тим, що вона надає широкий набір інструментів для роботи з пам’яттю та управління системними ресурсами, що робить її дуже потужною та ефективною мовою для написання високопродуктивних програм.
Однак процедурні мови програмування також мають свої обмеження. Наприклад, вони не настільки гнучкі, як об’єктно-орієнтовані мови програмування, і не дають змоги створювати такі складні структури даних, як класи та об’єкти.
Проте процедурні мови програмування досі широко використовуються в багатьох галузях, включно із системним програмуванням, науковими обчисленнями та розробкою додатків.
Роль процедурного програмування. Процедурне програмування відіграє ключову роль у написанні структурованого та модульного коду. Цей підхід дає змогу розбивати програми на безліч невеликих і логічно пов’язаних процедур, що значно спрощує розуміння та зміну коду в майбутньому. До того ж процедурне програмування допомагає керувати помилками в програмному коді, завдяки ретельній перевірці та налагодженню кожної процедури перед інтеграцією в основний код.
Однією з головних переваг процедурного програмування є можливість оптимізації продуктивності, тому що процедури можуть виконуватися швидше та ефективніше, ніж великі блоки коду. Однак, слід зазначити, що процедурне програмування має й недоліки, наприклад, обмежену можливість перевикористання коду та складнощі під час роботи з великими обсягами даних.
У сучасному програмуванні процедурне програмування використовується в поєднанні з іншими підходами, такими як ООП і функціональне програмування, для досягнення оптимального результату в різних завданнях програмування. Загалом процедурне програмування залишається важливою технологією в галузі програмування, забезпечуючи надійність, ефективність і структурованість коду.
Процедурне програмування відіграє важливу роль у написанні структурованого та модульного коду, що спрощує його розуміння та зміну в майбутньому. Воно також може бути корисним для управління помилками та оптимізації продуктивності. Однак, для досягнення оптимальних результатів у програмуванні, у сучасних задачах використовуються не тільки процедурні, а й інші підходи, такі як ООП та функціональне програмування.