Актуальність та принцип роботи

Prolog - це здійснена компанією Borland Іnternatіonal реалізація мови програмування високого рівня. Prolog компиляторного типу. Її відрізняє більша швидкість компіляції й рахунку. Prolog призначений для видачі відповідей, які він логічно виводить за допомогою своїх потужних внутрішніх процедур. Так програма на Prolog у кілька рядків може замінити кілька сторінок тексту при програмуванні на якій-небудь іншій мові. Завдяки наявності потужних засобів зіставлення, Prolog придатний не тільки для використання в додатках, що ставляться до області штучного інтелекту й обробці природно-мовних конструкцій, але також застосовуємо в таких традиційних областях, як, наприклад, керування базами даних. Ідея використання логіки у мовах програмування виникла у початку 70-х років. Першими дослідниками, які розроблювали цю ідею, були Роберт Ковальський, Мартен ван Емден та Ален Колмерое з Единбургу. Своєю популярністю серед професіоналів створення штучного інтелекту Пролог зобов’язаний ефективною реалізацією цієї мови в Единбурзі Девідом Уорреном.

Існує безліч історично складених та протидіючих один одному поглядів на Пролог. Пролог швидко завоював популярність в Європі як практичний інструмент програмування. В Японії Пролог опинився у центрі розробки комп’ютерів нового покоління. З іншого боку, через визначені історичні факти, в США Пролог отримав визнання трохи пізніше. Один з цих факторів був пов’язаний з Мікропленнером, мовою, близькою до логічного програмування, але реалізованою неефективно. Цей негативний досвід, який відноситься до Мікропленнера, був невиправдано розповсюджений і на Пролог. Але пізніше після появи ефективної реалізації, запропонованої Девідом Уорреном, цей погляд було скасовано.

Своїм корінням Пролог сягає математичної логіки. Якщо традиційні мови програмування є процедурно-орієнтованими, Пролог заснований на декларативній точці зору на програмування. Ця якість Пролога змінює програмістське мислення та робить програмування мовою Пролога захоплюючим зайняттям, що потребує інтелектуальних зусиль.

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

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

parent(tom, bob).

Ця програма містить шість речень. Кожне речення оголошує один факт існування відношення «батько». Питання до системи – це завжди послідовність, що складається з однієї або кількох цілей. Для того, щоб відповісти на питання, система намагається досягти всіх вказаних цілей. Що означає досягти цілі? Досягти цілі – це означає показати, що твердження, які містяться в питанні, дійсні у реченні, що усі відносини програми дійсні. Іншими словами, досягти цілі – це означає показати, що вона логічно витікає з фактів та правил програми. Якщо питання містить змінні, система повинна до того ж знайти конкретні об’єкти, які забезпечують досягнення цілі.

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

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

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

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

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

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

У циклічні алгоритми входить послідовність команд, виконувана багаторазово. Така послідовність команд називається тілом циклу.

Алгоритми можуть бути описані різними способами:

· записані на природній мові;

· зображені у виді блок-схеми;

· записані на алгоритмічній мові;

· закодовані на мові програмування.

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

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

Команда Формат оператора
Введення даних INPUT <список змінних>
Команда PRINT <список змінних>
Присвоювання LET <змінна> = <арифметичне вираження>
Команда розгалуження IF <умова> THEN <оператори> ELSE <оператори>
Команда циклу <оператори>NEXT<змінна>
Команда циклу FOR <змінна> FROM <арифметичне вираження> TO <арифметичне вираження>

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: