Языки логического программирования
Согласно логическому подходу к программированию, программа представляет собой совокупность правил, или логических высказываний. Кроме того, в программе допустимы логические причинно-следственные связи. Таким образом, языки логического программирования базируются на классической логике и применимы для систем логического вывода, в частности, для так называемых экспертных систем. На языках логического программирования естественно формализуется логика поведения, и они применимы для описаний правил принятия решений, например, в системах, ориентированных на поддержку бизнеса.
Важным преимуществом такого подхода является достаточно высокий уровень машинной независимости, а также возможность откатов – возвращения к предыдущей подцели при отрицательном результате анализа одного из вариантов в процессе поиска решения (скажем, очередного хода при игре в шахматы), что избавляет от необходимости поиска решения путем полного перебора вариантов и увеличивает эффективность реализации.
Программы на языках логического программирования выражены как формулы математической логики, а компилятор пытается получить следствия из них. Родоначальником большинства языков логического программирования является язык ПРОЛОГ (Prolog, 1971). У него есть ряд потомков – Parlog (1983, ориентирован на параллельные вычисления), Delta Prolog и др.
ПРОЛОГ – это язык, предназначенный для поиска решений. Это декларативный язык, т.е. формальная постановка задачи может быть использована для ее решения. ПРОЛОГ определяет логические отношения в задаче как отличные от пошагового решения этой задачи.
Центральной частью ПРОЛОГа являются средства логического вывода, которые решают запросы, используя заданное множество фактов и правил, к которым обращаются как к утверждениям. ПРОЛОГ также не имеет деления переменных на типы и может динамически добавлять правила и факты к средствам вывода.
Для удобства восприятия приведем таблицу с характеристиками основных языков программирования (табл. 22.1).
Таблица 22.1. Характеристика основных языков программирования
Язык |
Основное использование |
Описание |
Ada |
В оборонной промышленности |
Высокого уровня |
АССЕМБЛЕР |
Для работ, требующих детального контроля за аппаратным обеспечением, быстрого исполнения и программ малого размера |
Быстрый и эффективный, но требующий определенных усилий и навыков |
БЕЙСИК |
В образовании, бизнесе, дома |
Прост в изучении |
С |
В системном, универсальном программировании |
Быстрый и эффективный, широко используется как универсальный язык |
C++ |
В объектно-ориентированном программировании |
Основан на языке С |
КОБОЛ |
В программировании в бизнесе |
Жестко ориентирован на коммерческие задачи, легко научиться, но очень много операторов |
ФОРТРАН |
Для научной работы и вычислений |
Основан на математических формулах |
ЛИСП |
Для искусственного интеллекта |
Язык символов с репутацией трудно изучаемого |
МОДУЛА-2 |
В системном программировании, программировании в режиме реального времени и универсальном программировании |
Высоко структурирован, разработан взамен ПАСКАЛя |
Язык |
Основное использование |
Описание |
ОБЕРОН |
В универсальном программировании |
Небольшой, компактный язык, соединяющий многие черты ПАСКАЛЯ и МОДУЛЫ-2 |
ПАСКАЛЬ |
Универсальный язык |
Высоко структурирован |
ПРОЛОГ |
Для искусственного интеллекта |
Символьно-логическая система программирования, в начале предназначенная для решения теорем, но сейчас использующаяся чаще для решения задач, связанных с искусственным интеллектом |