Основні парадигми програмування 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основні парадигми програмування



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

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

Для підтримки програмування відповідно до тієї або іншої парадигми розроблені спеціальні алгоритмічні мови.

Виділяють такі основні парадигми програмування:

- імперативне програмування;

- об'єктно́-орієнтоване програмування;

- декларативне програмування.

Імперативне програмування – це парадигма програмування, заснована на використанні алгоритмічної структури програмного коду. Така структура програми передбачає роз'єднання у програмах даних і алгоритмів їхньої обробки, а також алгоритмічну декомпозиції програми.

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

Активним суб’єктом при цьому підході вважається програма (код), яка повинна виконати всі необхідні для досягнення потрібного результату дії над пасивними даними.

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

Імперативними є мови програмування Basic, Pascal, С.

Різновидами підходів до розробки імперативних програм є процедурна та модульна їх організація.

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

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

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

Основна ідея модульногопрограмува́ння полягає в реалізації обчислювальних процесів у вигляді окремих програмних одиниць – модулів.

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

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

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

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

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

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

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

На сьогодні об'єктно́-орієнтовану ідеологію підтримують мови програмування Object Pascal, C++, C#, Java, PHP тощо.

Принциповим відходом від фон-неймановскої моделі є декларативне програмування.

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

Наприклад, веб-сторінки HTML — декларативні, оскільки вони описують, що містить сторінка та що має відображатись — заголовок, шрифт, текст, зображення — але не містить інструкцій як її слід відображати; інструкція вибірки SQL конкретизує властивості даних, які слід отримати від бази даних, але не процес отримання цих даних.

Різновидами декларативного програмування є функціональне і логічне програмування.

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

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

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

¨¨¨ Композиція (суперпозиція) функцій — функція, побудована з двох функцій таким чином, що результат першої функції є аргументом другої. Наприклад, якщо у = f(x) = x2, а z = g(y) = sin(y), тоді суперпозиція z = g(f(x)) = (g o f)(x) = sin(x2).

Наприклад, вираз а + bxфункціональною мовою програмування може виглядати так:

плюс (а, множ (b, х)).

Таким чином, у функціональному програмуванні акцент ставиться на застосуванні функцій, тоді як в імперативному - на змінах в стані та виконанні послідовностей команд.

До відомих функціональних мов програмування належить Лісп, Mathematica (символьні обчислення), XSLT (XML).

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

Для будь-якої системи логічного програмування характерним є те, що для виконання програми (побудови виведення результату) використовується вбудована система автоматичного пошуку.

Найбільш поширеною мовою логічного програмування є мова Prolog (Пролог).

Програми на мовах декларативного програмування легко піддаються методикам мета-програмування — коли програма може генеруватися по її опису. Наприклад XSLT-програма може бути згенерована із файлу XML.

Слід відзначити, що парадигма програмування не визначається однозначно мовою програмування — багато сучасних мов програмування є мультипарадигменними, тобто допускають використання декількох різних парадигм програмування. Зокрема, мова C++ є універсальною мовою програмування високого рівня з підтримкою декількох сучасних парадигм програмування: процедурної, об'єктно-орієнтованої та узагальненої.

 


[1] Термінальні символи (термінали) — це мінімальні елементи граматики, що не мають власної граматичної структури.

[2] Рядок символів, який не містить нічого між апострофами, вважається порожнім

[3] Контейнери – це об’єкти, всередині яких розміщується інші об’єкти

 

[4] Консольне застосування - програма, що працює в режимі текстового інтерфейсу



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 1507; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.175.180 (0.013 с.)