Языки программирования высокого уровня
Языки программирования высокого уровня могут быть эффективным средством быстрого создания прототипов экспертных систем. Они позволяют обеспечить гибкость процесса разработки, минимизации материальных затрат и сроков выполнения проекта.
Инструментальные средства этой категории лишают разработчика необходимости углубляться в детали реализации системы, такие как способы эффективного распределения памяти, низкоуровневые процедуры доступа к данным и манипулирования ими. Как правило, среда разработки таких языков позволяет совмещать вставку, изменение и тестирования фрагментов программного кода. Опытный программист, применяя для проектирования экспертных систем языка высокого уровня, получает гораздо большую свободу действий, чем при использовании оболочки. Особенно это касается программирования процедур управления и обработки неопределенности.
Эти процедуры очень полезны для создания экспериментальных систем, в которых не представляется возможным заранее выбрать оптимальный режим управления.
Язык программирования OPS5
Инструментальные средства экспертных систем, как правило, используют тип языков программирования высокого уровня, известный под названием языков описания продукционных правил. Одним из самых известных представителей таких языков является OPS5. Для этого языка характерен сравнительно простой синтаксис и механизм активизации правил.
В нем используются различные версии rete-алгоритма для оптимизации процессов согласования фактов с правилами. Напомним, rete-алгоритм лишает машину логического вывода необходимости согласовывать факты с каждым правилом. Для языка OPS5 характерным признаком является трудности при реализации некоторых типов структур управления ходом выполнения.
Например, к ним можно отнести рекурсивные и итерационные циклы, поскольку они требуют серьезного осложнения описание процесса обработки правил. Разработчики языков, подобных OPS, всегда вынуждены искать компромисс между наглядностью средств языка программирования и эффективностью выполнения программного кода.
По мнению специалистов, наиболее рациональный путь преодоления недостатков программирования продукционных правил заключается в объединении их с другими парадигмами программирования. Примером такого объединения может быть комбинирование продукционных правил и фреймов, что позволяет сопоставлять условия, специфицированных в правилах, с содержанием слотов фреймов.
Объектно-ориентированные языки программирования
Другим типом языков программирования высокого уровня, который применяется в инструментальных средствах экспертных систем, является объектно-ориентированные языки. В этом контексте, языками объектно-ориентированного программирования создается программная среда для организации знаний в терминах декларативного представления объектов предметной области.
Все действия, связанные с процедурной стороной решения проблем, распределяются между этими объектами, которые располагают собственные процедуры и могут общаться друг с другом посредством интерфейсов передачи сообщений. К еще одному полезному аспекта объектно-ориентированного программирования, относится возможность интеграции символических вычислений в операционную среду, которое базируется на средствах графического интерфейса.
Оснащение экспертной системы этими средствами позволяет лучше представить пользователю процессы, происходящие в системе. Основная причина сложности использования объектно-ориентированного стиля в программировании экспертных систем состоит в организации соотношение программных объектов с абстрактными понятиями и категориями предметной области.
То есть, в экспертных системах объекты должны представлять факты и цели, наборы правил или отдельные гипотезы, а не модели элементов реального мира, как в классических задачах. Поэтому, схемы отражения этих понятий и категорий на программные объекты, а также сообщения, которыми они обмениваются, должны быть тщательно продуманы.
Языки логического программирования
Кроме рассмотренных языков программирования высокого уровня, в инструментальных средствах экспертных систем также применяются языки логического программирования. Типичной языке логического программирования экспертных систем является PROLOG. Для этого PROLOG обладает достаточно полезными возможностями, а именно:
- встроенный в PROLOG режим управления примерно соответствует стратегии обратной логического вывода;
- индексированную базу данных фраз языка PROLOG можно использовать для представления правил;
- рекурсивные структуры данных (графы и деревья) можно организовать с помощью фраз языка PROLOG;
- универсальный механизм сопоставления языка PROLOG позволяет выполнять сопоставление данных и шаблонов, включающих переменные;
- языковые средства PROLOG позволят программисту разработать собственный механизм обработки неопределенности.
Однако, практика применения идей логического программирования в экспертных системах не лишена недостатков.
В частности, наличие синтаксических и семантических ограничений, присутствующих в стандартных версиях PROLOG не были преодолены, ни в системах МЕСНО и PLANNER, ни в других системах, основанных на аналогичной идеологии.