Topic outline
- General
- Загальна інформація
Загальна інформація
Автор дисципліни:
Чопорова Оксана Володимирівна
доктор філософії (спеціальність 122 Комп'ютерні науки, галузь знань 12 Інформаційні технології)
старший викладач кафедри програмної інженерії
o.choporova@znu.edu.ua
т. 061-278-74-14
Декларативні мови програмування — це мови програмування високого рівня, в яких програмістом не задається покроковий алгоритм рішення задачі («як» вирішити завдання), а деяким чином описується, «що» потрібно отримати як результат. ... Характерною особливістю декларативних мов є їхня декларативна семантика.
Декларативне програмування — це парадигма програмування, відповідно до якої програма деяким чином описує що потрібно отримати як результат, а не як це треба зробити.
Так, декларативними є: - опис web-сторінок на HTML — вони описують, що містить сторінка та що має відображатись (заголовок, шрифт, текст, зображення), але не містять інструкцій як її слід відображати; - опис SQL-запитів, які конкретизують властивості даних, які слід отримати від бази даних, але не процес отримання цих даних; - опис XML-документів тощо.
Такий підхід має високий ступінь абстракції і легко формалізується математичними засобами. Фактично програміст оперує не набором інструкцій, а абстрактними поняттями, часто досить узагальненими.
Декларативні мови найкраще використовувати у випадках, коли "дані управляють програмою": при написанні експертних систем, при конструюванні трансляторів з мов програмування, для більшості задач штучного інтелекту. Саме там їх використання призводить до найбільшої ефективності.
Функціональне програмування — це підхід до побудови програм, який грунтується на абстракції математичної функції і передбачає, що програма є сукупністю визначень математичних функцій, а її виконання полягає в обчисленні відповідних виразів.
При цьому функції можуть визначатися через інші функції (як композиція3 функцій) або рекурсивно (через самих себе). У процесі виконання програми функції отримують параметри, обчислюють і повертають результат, у разі необхідності обчислюючи значення інших функцій.
Слід зазначити, що існують відмінності в розумінні математичної функції у функціональному програмуванні і функції в процедурному програмуванні. Зокрема, функція в математиці не може змінити викликаючого її оточення і запам'ятати результати своєї роботи, а тільки надає результат обчислення функції. Тобто, у функційному програмуванні програму можна представити як обчислення послідовності функцій без станів.
На відміну від імперативного програмування, де існує поняття поточного кроку виконання і поточного стану, що змінюється у часі, у функціональному програмуванні поняття часу відсутнє. Ще однією особливість функціональних мов є їх безтиповість (відсутність типів даних).
Таким чином, функціональне програмування є способом створення програм, в яких єдиною дією є виклик функції, єдиним способом розбиття програми є створення нового імені функції та задання для цього імені виразу, що обчислює значення функції, а єдиною операцією, що використовується при визначенні функцій, — композиція функцій. Такий підхід дає можливість прозорого моделювання тексту програм математичними засобами. Основна специфіка функціональних мов програмування полягає в тому, що функції обмінюються між собою даними безпосередньо, тобто без використання проміжних змінних і присвоювань.
До відомих функціональних мов програмування належить LISP (List Processing), що розглядається фахівцями як основна мова програмування систем штучного інтелекту, Mathematica (символьні обчислення), XSLT (XML), Haskell, Scheme та ін.
- Модуль 1
Модуль 1
- Модуль 2
Модуль 2
- Екзамен
Екзамен