Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МОДЕЛІ ПОДАННЯ ЗНАНЬ.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
248 Кб
Скачать
☆

7.8. Основні ідеї Прологу

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

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

Пролог є дуже різнобічною мовою. Зауважимо, що Пролог можна за­стосовувати для програмування всіх видів алгоритмів, не тільки для тих, для яких він був спеціально створений. Використання Прологу не пов'яза­не з якимось одним класом алгоритмів, логікою програми чи форматом файлів. Тому Пролог не менш потужний, ніж Pascal, С або C++, а у бага­тьох аспектах навіть потужніший. Доцільність його застосування, очевид­но, має визначатися конкретною ситуацією.

Перші повідомлення про Пролог з'явились на початку 70-х років. Він належить до класу логічних мов програмування, основні ідеї розробки яких запропонували Р. Ковальські і П. Хейс. Перший інтерпретатор Про­логу був розроблений у Марселі (Франція) під керівництвом А. Колмерое в 1973 р. Наступна версія, виконана Д. Уореном — Единбурзька реалізація Прологу на машині DEC-10 — перевела Пролог і разом з ним логічне про­грамування з площини теоретичних досліджень у площину практичного програмування, зробила його корисним інструментом для вирішення різ­них задач штучного інтелекту.

Для Прологу характерним є і той факт, що програміст повинен мислити в термінах цілей. Що під цим розуміється? На відміну від традиційних мов програмування, Пролог вимагає від програміста змінити форму мислення по написанню програм. Прологівська програма являє собою набір визна­чень ситуацій і формулювань задач замість того, щоб детально описувати варіанти рішень цих задач. Основою Прологу є обмежений, але на диво потужний і гнучкий набір програмних механізмів, який включає: зістав­лення зразків, задання структур даних типу дерева та автоматичне повер­нення. Назва "Пролог" утворилась як скорочення від "програмування в тер­мінах логіки". Отже, "Пролог" можна віднести до мов програмування, які будуються на описовому або декларативному підході до програмування.

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

Спочатку Пролог належав до теоретичних мов програмування і в основ­ному використовувався як інструментарій у наукових дослідженнях. На це впливало і те, що довгий час учені із США не сприймали його переваг для вирішення задач штучного інтелекту. Дж. Малпас пояснює цей факт тим, що, по-перше, серед учених США сильними залишались лісповські традиції (мова Лісп створена в Массачусетському технологічному інсти­туті) і, по-друге, — попереднє знайомство з мовою логічного типу Мікро- пленнер було невдалим. Остання реалізовувалася дуже неефективно. Та зі створенням швидких інтерпретаторів і компіляторів Пролог посів почесне місце не тільки серед найвживаніших мов вирішення задач штучного інте­лекту, а й серед мов, які використовуються спеціалістами в галузях реля- ційних баз даних, програмної інженерії, задання знань, експертних систе­мах і багатьох інших.

Резюмуючи сказане, можна відмітити такі переваги Прологу:

  • Пролог має чітку математичну основу, дуже близьку до людського мислення.

  • Використання єдиної мови специфікацій (числення предикатів) для опису вимог до програм і опису самої програми на Пролозі дозволяє поєднувати процес написання програми з її верифікацією.

  • Застосування відношення як базового поняття мови дає змогу зручно працювати з реляційними базами даних.

  • Паралельний принцип організації обчислень дозволяє просто і при­родно реалізовувати Пролог-програму на паралельному комплексі.

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

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

Поряд із зазначеними перевагами спеціалісти відзначають такі вади Прологу.

  • Складність розуміння процесу виконання програми на Пролозі, по­в'язаної з "невидимим" порядком побудови виведення результату програмою.

  • Погані засоби для вияву екстралогічних властивостей (оператори ди­намічного приєднання і вилучення тверджень).

  • Відсутність досконалих засобів для розробки і відлагодження вели­ких програм.

  • Недостатні засоби підтримки модульного принципу програмування.

У комерційних цілях Пролог часто використовують у створенні екс­пертних систем, інтелектуальних баз даних і програм, з якими можна спіл­куватись звичайною мовою [175].

Пролог має багато спільного з Ліспом [267]— мовою, яку традиційно застосовують у дослідженнях зі штучного інтелекту. Обидві мови роблять досить простим виконання складних обчислень над складними даними. Крім того, вони досить потужні, щоб елегантно запрограмувати складні алгоритми. І Пролог, і Лісп використовують динамічне виділення пам'я­ті, тому нема потреби декларувати змінні перед тим, як їх застосовувати. Ці мови також дозволяють програмам перевіряти та модифікувати самих себе, тому програма може "вчитись" на тій інформації, яку вона отримує під час своєї роботи.

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

Чи Пролог об'єктно-орієнтований? Не зовсім. Пролог — інше, нове і різнопланове вирішення проблеми, яку об'єктно-орієнтовані мови повинні були розв'язати. Пролог дозволяє говорити про властивості та зв'язки пря­мо, замість того, щоб добиратись до них через механізм наслідування.