Главная / Искусственный интеллект / PROUST / Знания из области программирования

Знания из области программирования

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

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

Таблица 2. Определение цели Сигнально-Контролируемый-Вход на языке описания задач в системе PROUST

В табл. 2 показано определение в системе PROUST цели Сигнально-Контролируемый-Вход. Это определение содержит ряд слотов, таких, как Частный-Случай, Форма, Основной-Сегмент и т. д., вместе с их заполнителями, т. е. Чтение-и-Обработка, Основной-Цикл:, ?Следующий. Эти слоты служат различным функциям, ряд из которых мы здесь обсудим. Наиболее важны слоты типа Частный-Случай и Примеры. В слоте Примеры перечисляются различные планы достижения данной цели, имеющиеся в базе данных системы PROUST. Заполнителем этого слота служит список из пяти элементов — имен соответствующих планов. Слот Частный-Случай указывает на класс, которому принадлежит данная цель. В данном случае классом целей является Чтение-и-Обработка — это цели, связанные с прочтением последовательности величин и их обработкой.

В табл. 3 приведен план, названный Обработка-Чтение-Whife, это один из примеров планов достижения цели Сигнально-Контролируемый-Вход. Здесь этот план несколько упрощен по сравнению с тем планом, который на самом деле используется в системе PROUST. Планы также определяются на языке слотов и их заполнителей. Наиболее важным в данном случае является слот Шаблон, дающий описание программы на языке Паскаль, призванной реализовать данный план.

Таблица 3. План достижения цели Сигнально-Контролируемый-Вход

Шаблоны содержат относящиеся к языку Паскаль операторы, подцели и метки, но они записываются не в обычном для Паскаля синтаксисе, а в списковых обозначениях. Например, форма (WHILE (<> ?Вход ?Стоп)...) на Паскале должна была бы иметь вид WHILE ?Вход <> ?Стоп DO ... . Символы, снабженные вопросительными знаками, представляют собой образцы переменных, и в ходе выполнения плана в них будут делаться подстановки. Так, вместо ?Следующий подставляется переменная языка Паскаль, содержащая входные данные, а вместо ?Стоп подставляется константа, а именно сигнальное значение. Оператор ?*—это образец типа «все, что угодно», вместо которого может быть подставлена произвольная последовательность операторов языка Паскаль. Для указания подцелей используются формы вида (ПОДЦЕЛЬ ...). Это те цели, которые в свою очередь должны быть достигнуты посредством других планов.