
- •1. Алгоритми та обчислювальна складність
- •1.1. Основи структури даних і алгоритми
- •1.1.2. Поняття абстрактного типу даних. Абстрактні типи даних: стеки, списки, вектори, словники, множини, мультимножини, черги, черги з пріоритетами
- •1.1.3. Кортежі, множини, словники, одно- та двобічнозв'язні списки. Реалізація абстрактних типів даних з оцінюванням складності операцій
- •1.1.4. Базові алгоритми та їх складність: пошук, сортування (прості сортування вибором, вставками, обмінами та удосконалені сортування деревом, сортування Шелла, швидке сортування)
- •1.2. Стратегії розроблення алгоритмів
- •1.2.1. Стратегія «розділяй та володарюй» та приклади застосування.
- •1.2.2. Стратегія балансування та приклади застосування.
- •1.2.3. Динамічне програмування та приклади застосування.
- •1.2.4. Оцінювання складності алгоритму під час застосування кожної стратегії
- •1.3. Моделі обчислень
- •1.3.1. Імперативний та декларативний підходи до програмування
- •1.3.2. Розв'язні, напіврозв'язні та нерозв'язні проблеми. Проблема зупинки
1.3.1. Імперативний та декларативний підходи до програмування
Імперативне програмування – стиль програмування, у якому програма складається з інструкцій, що виконуються послідовно, щоб змінити стан програми. Програміст описує послідовність дій, необхідних для досягнення бажаного результату.
Однією з ключових особливостей імперативного програмування є явний опис того, як програма має працювати. Інструкції в імперативному програмуванні є прямими командами до виконання певної дії. Імперативне програмування може бути корисним для точного контролю за тим, що відбувається в програмі, але може ускладнювати налагодження коду та масштабування програми, особливо під час роботи з великими проектами.
Імперативне програмування може бути ефективним підходом для написання програм, які виконують певні завдання, особливо там, де важлива швидкість виконання. Однак, через свою складність і схильність до помилок, код на мовах програмування, заснованих на імперативному підході, може бути важким для розуміння і супроводу.
Прикладами імперативних мов програмування є:
C/C++ – широко використовувана мова для системного програмування і розробки операційних систем;
Java – об’єктно-орієнтована мова програмування, яка використовується для створення додатків, веб-сервісів і мобільних додатків;
Python – високорівнева мова програмування, яку використовують для різних завдань, включно з науковими обчисленнями, розробкою веб-додатків і машинним навчанням;
PHP – мова програмування для розробки веб-додатків і динамічних сайтів;
JavaScript – широко використовувана мова програмування для створення інтерактивних веб-сторінок і веб-додатків;
Ruby – є багатопарадигмальною мовою програмування, яку можна використовувати для написання скриптів, консольних застосунків, веб-застосунків, автоматизації завдань і створення різних утиліт. Вона також широко використовується для розробки веб-фреймворків;
Декларативне програмування – це стиль програмування, у якому програма описує, які завдання мають бути виконані, а не як саме їх виконати. Замість того щоб містити послідовність команд, декларативна програма визначає набір правил і обмежень, які мають бути задоволені.
Декларативне програмування відрізняється від імперативного програмування тим, що не вимагає явної вказівки порядку виконання завдань. Це означає, що програма може бути коротшою і читабельнішою, а код – більш виразним і гнучким.
Декларативне програмування зазвичай використовується для розв’язання задач, які не пов’язані зі зміною стану програми, а скоріше з обчисленням значень. Воно часто використовується в галузях, пов’язаних із базами даних, штучним інтелектом та аналізом даних.
Декларативне програмування також зазвичай простіше у налагодженні та тестуванні, ніж імперативне. Однак деякі завдання можуть бути важкими для розв’язання за допомогою декларативного підходу.
Прикладами декларативних мов програмування є декларативні мови програмування:
SQL (Structured Query Language) – використовується для роботи з базами даних;
Prolog – для розв’язання логічних задач;
Haskell – для функціонального програмування;
XSLT (Extensible Stylesheet Language Transformations) – для перетворення XML-документів;
R – мова програмування для статистичного аналізу даних і багато інших;
Імперативне та декларативне програмування мають безліч відмінностей, включно з підходом до написання коду, способом опису задачі, організацією коду та управлінням станом:
У декларативному програмуванні програміст описує бажану поведінку програми, а не керує станом безпосередньо. Це може зменшити ймовірність помилок, пов’язаних зі станом програми, оскільки програміст не зобов’язаний стежити за зміною стану в різних частинах коду. Натомість декларативний підхід дає змогу програмісту визначити правила та обмеження для бажаної поведінки програми, і комп’ютер самостійно обчислить правильний результат, використовуючи ці правила. Переваги та недоліки кожного підходу: