- •Лекція 3.2. Парадигми програмування
- •Діаграма рівня мов математичного запису.
- •Структурні,
- •Теорема про структурне програмування:
- •Людина лише формулює розв'язувану задачу, а пошуком рішення займається імперативна система.
- •Концепція функціонального програмування.
- •Програма на Прологу складається з предикатів. Програма на Прологу і база знань – синоніми. Мета формулюється також у вигляді предикатів. Виконання програми на Прологу – це резолюція мети.
- •Сучасний етап розвитку декларативних мов.
- •Інші напрямки досліджень в області декларативних мов в останнє десятиліття:
Програма на Прологу складається з предикатів. Програма на Прологу і база знань – синоніми. Мета формулюється також у вигляді предикатів. Виконання програми на Прологу – це резолюція мети.
Під інтерпретатором Прологу будемо розуміти механізм рішення задачі за допомогою мови Пролог. Інакше кажучи, інтерпретатор мови Пролог - це виконавець Пролог-програм, тобто та "активна сила", яка виконує програми, написані на Прологу.
У кожної з мов програмування є своє коло задач, при розв'язку яких вони використовуються з найбільшою ефективністю.
Для Прологу це задачі, пов'язані з розробкою систем штучного інтелекту (різні експертні системи, програми-перекладачі, інтелектуальні ігри). Використовується для обробки природної мови й має потужні принципово відмінні від традиційних засоби для вилучення інформації з баз даних. Пролог знайшов застосування й у ряді інших областей, наприклад, при рішенні задач складання розкладів. При цьому він не є універсальною мовою програмування й не призначений, зокрема, для розв'язку задач, пов'язаних із графікою або чисельними методами.
Логічне програмування - це концепція, що дозволяє описувати предметну область проблеми без складання алгоритму пошуку розв'язку. Складність програмування нікуди не зникає, вона просто "перетікає" з області побудови алгоритму машинною мовою в область формулювання задачі для її розв'язку машиною.
Пролог є не стільки мовою для програмування, скільки мовою для опису даних і логіки їхньої обробки. І рішення задачі записується не в термінах комп'ютера, а в термінах предметної області задачі, у дусі модного зараз об’єктно-орієнтованого програмування.
Пролог дуже добре підходить для опису відношень між об'єктами. Тому Пролог називають реляційною мовою. Причому "реляційність" Прологу значно могутніша й розвинена, чим "реляційність" мов для обробки баз даних. Часто Пролог використається для створення систем керування базами даних, де є дуже складні запити, які досить легко записати на Прологу.
У Прологу дуже компактно, порівняно з імперативними мовами, описуються багато алгоритмів. По статистиці, рядок тексту програми мовою Пролог відповідає чотирнадцяти рядкам тексту програми тої ж задачі імперативною мовою. Пролог-програму, як правило, дуже легко писати, розуміти й налагоджувати. Це приводить до того, що час розробки додатка мовою Пролог у багатьох випадках на порядок швидший, ніж на імперативних мовах. У Прологу легко описувати й обробляти складні структури даних.
Прологу властивий ряд механізмів, відсутніх у традиційних мовах програмування: зіставлення зі зразком, вивід з пошуком і вертанням. Ще одна істотна відмінність полягає в тім, що для зберігання даних у Прологу використаються списки, а не масиви. У мові відсутні оператори присвоювання й безумовного переходу, покажчики. Природним і найчастіше єдиним методом програмування є рекурсія.
Пролог вимагає відмови від стереотипів, стилю мислення імперативного програмування.
Основні області застосування Прологу:
швидка розробка прототипів прикладних програм;
автоматичний переклад з однієї мови на іншу;
створення природно-мовних інтерфейсів для існуючих систем;
символьні обчислення для рішення рівнянь, диференціювання й інтегрування;
проектування динамічних реляційних баз даних;
експертні системи й оболонки експертних систем;
автоматизоване керування виробничими процесами;
автоматичний доказ теорем;
напівавтоматичне складання розкладів;
системи автоматизованого проектування;
базоване на знаннях програмне забезпечення;
організація сервера даних або, точніше, сервера знань, до якого може звертатись клієнтський додаток, написаний на якій-небудь мові програмування.
Області, для яких Пролог не призначений: великий обсяг арифметичних обчислень (обробка аудио, відео й т.д.); написання драйверів.
