Интеллектуальные робототехнические системы



Основы программирования в системе CLIPS.


CLIPS (C Language Integrated Production System) начала разрабатываться в космическом центре Джонсона NASA в 1984 году. Сейчас CLIPS и документация на этот инструмент свободно распространяется через интернет (http://www.ghg.net/clips/CLIPS.html). Язык CLIPS свободен от недостатков предыдущих инструментальных средств для создания ЭС, основанных на языке LISP. Язык CLIPS получил большое распространение в государственных организациях и учебных заведениях благодаря низкой стоимости, мощности, эффективности и переносимости с платформы на платформу. Например, даже Web-ориентированный инструментарий JESS (Java Expert System Shell), использующий язык представления знаний CLIPS, приобрел достаточную известность в настоящее время.

Следует отметить, что несмотря на многочисленные преимущества функционального программирования, некоторые задачи лучше решать в терминах объектно-ориентированного программирования (ООП), для которого характерны три основные возможности: ИНКАПСУЛЯЦИЯ (работа с классами), ПОЛИМОРФИЗМ (работа с родовыми функциями, поддерживающими различное поведение функции в зависимости от типа аргументов), НАСЛЕДОВАНИЕ (поддержка абстрактных классов). ООП поддерживает многие языки, в том числе Smalltalk, C++, Java, Common LISP Object System (CLOS). Язык CLIPS, в свою очередь, вобрал в себя основные преимущества С++ и CLOS.

Читатель может познакомиться с языком CLIPS, получив через Интернет полный комплект документации на английском языке, или прочитав изданную на русском языке книгу. В данном разделе лекции дается краткое неформальное введение в CLIPS, необходимое для программирования учебных задач.

Отличительной особенностью CLIPS являются конструкторы для создания баз знаний (БЗ):

defruleопределение правил;
deffactsопределение фактов;
deftemplate определение шаблона факта;
defglobalопределение глобальных переменных;
deffunctionопределение функций;
defmoduleопределение модулей (совокупности правил);
defclassопределение классов;
defintancesопределение объектов по шаблону, заданному defclass;
defmessagehandlerопределение сообщений для объектов;
defgenericсоздание заголовка родовой функции;
defmethodопределение метода родовой функции.




Содержание  Назад  Вперед