Материал: 2488

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

ступать числа, символы, имена других фреймов, имена процедур. Фреймы в FRL строятся с помощью процедуры FASSERT.

В FRL имеется семь зарезервированных аспектов: VALUE, DEFAULT, IF-NEEDED, IF-ADDED, IF-REMOVED, IF-INSTANTIAD, REQUIRE. Данные из аспекта VALUE интерпретируются как значение слота, а из аспекта DEFAULT – как значение по умолчанию. Остальные пять аспектов связывают с фреймом процедуральные знания. Процедуры из аспекта IF-ADDED активизируются в том случае, если в слот добавлены новые данные, из аспекта IF-REMOVED – если из слота удаляются те или иные данные. Процедуры из аспекта IFNEEDED запускаются при создании экземпляров фрейма. Аспект REQUIRE содержит процедуры, которые ограничивают значение слота.

Важным свойством FRL является наличие в нем встроенного механизма «наследования свойств». Суть этого механизма заключается

вследующем. Все понятия предметной области в БЗ организовываются в виде иерархической классификационной системы, где каждое понятие связывается с помощью специальных отложений с более конкретными. Для реализации этих отложений существуют слоты АКО и INSTANSE. Слот АКО связывает понятие с более общим (родовым). Слот INSTANSE связывает понятие с более конкретным (видом). Свойства, присущие всему классу, описывают только во фрейме класса, а остальные фреймы этого класса могут наследовать это свойство

вслучае надобности.

Процедуры обработки FRL подразделяются на независимые и присоединенные. Независимо от типа эти процедуры пишутся обычно на языке реализации самого FRL. На сегодняшний день большинство FRL - систем написаны на LISP.

1.5.3. Язык логического программирования PROLOG

Свое наименование Пролог получил от сокращения «Программирование логики» (PRogramming in LOGic). Математической основой Пролога являются исчисление предикатов, преимущественно первого порядка, метод резолюции Робинсона, теория рекурсивных функций.

Основной конструкцией языка (в форме, принятой для Пролога), является импликация АВ1, В2, …., Вn, называемая правилом, где А1,В1,В2….,Вn – предикаты.

61

Смысл ее таков: «А истинно, если истинно В1 и истинно В2 и … и истинно Вn».

Предикаты Пролога имеют вид

<ИМЯ предиката> (<аргумент 1>, … <аргумент К>).

Имя предиката можно рассматривать как наименование отношения на множестве аргументов. Аргументом являются либо константа (атом, атомическое выражение), либо переменная. Переменные используются для построения более сложных зависимостей:

ВХОДИТ (Х, «ЗАВОД НПЗ1») ВХОДИТ (Х, «ЦЕХ_№-2»). Т.е. если некоторый объект (Х) входит в цех №2, то он входит в

НПЗ1;

ВХОДИТ (Х,У) ВХОДИТ (Х, Z), ВХОДИТ (Z,Y).

Здесь Х входит в У, если Х входит в Z, а Z входит в У.

При использовании переменных «в вопросе» можно получить их значения в качестве результата. Например: РЕЖИМ_УСТАНОВКИ (Х). Если режим установки известен и определен, то в качестве ответа получим логическое «да» или «истинно», а в качестве побочного эффекта получим значение переменной Х, т.е. действующий режим работы установки, например, Х= «РЕЖИМ_2».

Неотъемлемым элементом Пролога является рекурсия. В частности, приведенное выше определение предиката ВХОДИТ является рекурсивным, т.е. имя предиката, стоящего в левой части, совпадает с именем хотя бы одного из предикатов, стоящих в правой части. С помощью рекурсии можно реализовать также циклические процессы вычислений.

Существующие системы программирования Пролога имеют большой набор «встроенных» предикатов (т.е. предикатов, понимаемых самим Прологом), которые обеспечивают выполнение арифметических операций, строковую (символьную) обработку, функции ввода-вывода и целый ряд специфических функций. За счет наличия встроенных предикатов язык Пролог можно отнести к универсальным языкам программирования и даже к языкам системного программирования.

Важнейшей особенностью языка Пролог является наличие реляционной базы данных, причем доступ и работа с реляционными отношениями погружены в сам Пролог. Для пользователя эти отношения существуют лишь в виде предикатов. Отмеченное свойство дела-

62

ет Пролог очень удобным средством для описания организационных и технологических структур. Так, на Прологе эффективно реализуются задачи подсистемы «Кадры», выдающие всевозможную информацию о кадровой структуре подразделений и о предприятии в целом. Удобно использовать Пролог и для описания технологической схемы производства со множеством взаимосвязей отдельных узлов (установок) по материальным, энергетическим, информационным и другим потокам.

Наибольшую популярность получила система программирования Turbo Prolog – коммерческая реализация языка для IBM-совместимых ПК. Его первая версия была разработана датской компанией Prolog Development Center (PDC) в содружестве с фирмой Borland International. Система создавалась с серьезными отступлениями от неофициального стандарта языка, самым существенным из которых было введение строгой типизации данных, но это позволило значительно ускорить трансляцию и выполнение программ. Затем вышла значительно более мощная версия Turbo Prolog 2.0, включающая усовершенствованную интегрированную среду разработки программ, быстрый компилятор и средства низкоуровневого программирования. Кроме того, она предоставляла возможность работы с собственными внешними БД, dBase 111 и Reflex, интегрированным пакетом Lotus 1-2-3, графическим пакетом Paint Brush и другими приложениями. В июне 1992 г. появилась версия 3.31 – эффективный универсальный инструмент профессиональных программистов, который вскоре стал одним из наиболее широко используемых. PDC Prolog 3.31 работал в среде

MS-DOS, OS/2, UNIX, XENIX, PharLap DOS Extender, MS Windows.

Эта версия была хорошо совместима с традиционными языками программирования, в первую очередь с Си. В ней были расширены возможности создания приложений с интерфейсом GUI (Graphical User Interface), принятым в MS Windows и OS/2.

Хотя версия PDC Prolog 3.31 уже включала средства для написания программ, работающих под управлением графических операционных систем, процесс разработки подобных приложений все еще носил рутинный характер. Для того чтобы сделать более простыми, удобными и быстрыми процессы написания, тестирования и модификации приложений на языке PDC Prolog, специалисты Prolog Development Center создали систему программирования под названием Visual Prolog 4.0, выпущенную 7 января 1996 г.

При разработке приложений в среде Visual Prolog используется

63

подход, получивший название «визуальное программирование», при котором внешний вид и поведение программ определяются с помощью специальных графических средств проектирования без традиционного программирования на алгоритмическом языке. В результате получили систему программирования, отличающуюся исключительной логичностью, простотой и эффективностью.

ВVisual Prolog входят различные элементы: интерактивная среда визуальной разработки (VDE – Visual Develop Environment),

которая включает текстовый и различные графические редакторы, инструментальные средства генерации кода, конструирующие управляющую логику (Experts), а также являющийся расширением языка интерфейс визуального программирования (VPI – Visual Programming Interface), Пролог-компилятор, набор различных подключаемых файлов и библиотек, редактор связей, файлы, содержащие примеры и помощь. Visual Prolog поддерживается различными ОС, в том числе MSDOS PharLap-Extended DOS, всеми версиями Windows, 16- и 32-

битовыми целевыми платформами OS/2, а также некоторыми другими системами, требующими графического пользовательского интерфейса.

Взависимости от выбранного интерфейса разработчику обеспечивается доступ к множеству генераторов кода (Code Expert), всевозможным ресурсным редакторам и особым дополнительным VPIпредикатам, определениям и библиотекам. Ресурсные редакторы применяются для создания, компоновки и редактирования окон, диалогов, меню, панелей инструментов, строк помощи, строковых таблиц, ярлыков, курсоров, битовых карт и оперативной помощи. Генераторы кода на основе подобных структур создают необходимый первичный Prolog-код. В результате появляется первичный код («скелет»), готовый для компиляции, редактирования связей и выполнения.

По желанию программиста генераторы кода могут отобразить любую часть первичного текста программы в окне редактора для просмотра и дополнения в соответствии с логикой приложения, а также для преобразования «скелета» в полноценное приложение. Этот процесс реализуется с помощью различных функций: редактирования, выбора, поиска, перемещения и вставки.

Прикладной программный интерфейс высокого уровня облегчает проектирование Пролог-приложений с утонченным видовым пользовательским решением, использующим графические возможности со-

64

временных ОС и аппаратных средств отображения информации. Ресурсы и инструментальные средства, требующиеся для таких приложений (окна, меню, диалоги, органы управления, перья, кисти, курсоры мыши, графические курсоры, рисунки и т. п.), представляются в виде несложных Пролог-структур.

С помощью VPI можно создать мобильный исходный текст, а затем перекомпилировать его для работы как в 16-битовом режиме под управлением MS-DOS или Windows, так и в 32-битовом режиме под управлением Windows NT, OS/2 PM и других ОС.

В декабре 1997 г. фирма PDC выпустила Visual Prolog 5.0, а с января 1999 г. приступила к распространению версии 5.1.

Пролог – это язык, который до сих пор находится в развитии. Область его применения постоянно расширяется, в него вносятся новые дополнительные функциональные возможности, призванные удовлетворить возрастающие потребности пользователей.

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

1.5.4. Продукционный язык OPS

Язык OPS относится к числу продукционных. Являясь универсальным языком программирования, он в первую очередь предназначен для разработки систем ИИ и, в частности, экспертных систем. Идеология языка OPS нашла отражение в целом ряде практических реализаций, достаточно сильно отличающихся друг от друга. Одной из первых и наиболее известной является реализация OPS-5, выполненная на одной из версий Лиспа (Franz LISP). Поэтому синтаксис OPS-5 максимально приближен к синтаксису Лиспа. На языке OPS-5 создан ряд промышленно эксплуатируемых экспертных систем для фирмы DEC с объемом баз знаний от 1000 до 5000 правил. Одной из последних, но уже достаточно широко известной реализацией является OPS-83. Особенности этой реализации – наличие некоторых конструкций, характерных для процедурных языков программирования, а также сильная типизация данных.

Говоря об общих отличительных чертах семейства языков OPS,

65