Среда программирования экспертных систем
Среда программирования экспертных систем поддерживает несколько парадигм. Средства этой категории включают несколько программных модулей, что позволяет комбинировать в процессе разработки экспертной системы различные стили программирования, выбирая соответствующие сочетания различных методов.
Причиной их создания стали результаты работы экспертных систем с различными схемами представления знаний и логического вывода. Оказалось, что каждая из них имеет свои слабые стороны. В частности, продукционные правила позволяют представить в программе эмпирически выявлены связи между условиями и действиями. Однако они значительно хуже подходят для представления отношений между объектами предметной области, включая такие важные отношения, как «множество-элемент» или «множество-подмножество».
Кроме того, структурированные объекты, например фреймы, оказываются удобным средством для хранения и управления описанием объектов предметной области. Но, применение таких знаний требует включения в программу фрагментов программного кода, которые потом трудно анализировать.
В результате анализа приведенных реалий, логичным образом была сформирована идея объединения методик в единую среду, в котором преимущества одних компенсируют недостатки других. Одним из первых многофункциональных сред искусственного интеллекта стал соответствующий продукт под названием LOOPS (Bobrow and Steflk, 1983). В нем в рамках единой архитектуры обмена сообщениями, были объединены четыре парадигмы программирования.
Парадигмы программирования экспертных систем
Процедурно-ориентированное программирование. Эта парадигма была представлена языке LISP, в которой активным компонентом являются процедуры, а пассивным - данные. В рамках единой среды процедуры могут быть также использованы для отделки внешних данных.
Программирование, ориентированное на правила. Эта парадигма аналогична предыдущей, но роль процедур выполняют правила «условие-действие». В среде LOOPS наборы правил по своей сути являются объектами, которые можно рекурсивно вкладывать один в другой. Таким образом, часть «действие» одного правила, в свою очередь, может активизировать подчиненный набор правил.
Объектно-ориентированное программирование. Согласно этой парадигме структурированные объекты обладают свойствами как процедур, так и данных. Обработка входящей приводит к передаче данных или изменения их значений. Все манипуляции данными выполняются под управлением того компонента, который обратился к объекту. При этом, внешние объекты не информируется о том, каким образом хранятся данные и как они модифицируются внутри объекта.
Программирование, ориентированное на данные. В нем процессы доступа и обновление запускают определенные процедуры. С переменными, в которых хранятся значения данных, связаны определенные процедуры, подобно тому, как это делается в слотах фреймов. Основу системы составляет объектно-ориентированная парадигма. В рамках ее модулей можно комбинировать модули среды, поддерживающих различные стили программирования.
Обычно условия в продукционных правилах связываются со значениями слотов структурированных объектов, а правила модифицируют значение этих слотов. Именно такой стиль объединения парадигм реализован в языке CLIPS. В системах Кее и LOOPS поведение объектов описывается в терминах множества продукционных правил.
В среде Knowledge Craft к вышеперечисленным парадигм добавлено логическое программирование в стиле языка PROLOG. Одна из следующих версий Кее, известная под названием Карра-РС, предоставляет в распоряжение программиста еще более расширен набор стилей для комбинирования правил, объектов и процедур.