4.4.1.
Символический уровень и уровень знаний
Совершенно
ясно, что среда символических вычислений весьма подходит для реализации
структур, необходимых для представления знаний, но символический уровень анализа
ничего не говорит нам о том, чем должны быть такие структуры. Нужен еще один
уровень анализа, расположенный выше символического, который будет ограничивать
набор возможных представлений при решении некоторой проблемы. Ньюэлл в работе
[Newell, 1982] назвал его уровнем знаний и предположил, что знания
должны быть охарактеризованы функционально, т.е. в терминах действия,
а не в терминах структурной организации.
Из предложения
Ньюэлла следует, что нельзя адекватно представлять знания, не располагая сведениями
о том, как они могут быть использованы. Возможно, это одна из причин, которая
побуждает нас разделить факты и знания. То, что норманны в 1066
году захватили Англию, — это только факт. Но мое знание этого факта может быть
использовано совершенно по-разному. В частности, это в равной степени позволит
мне успешно сдать экзамен по истории или спровоцировать драку между англичанами
и французами. Если цель состоит именно в том, чтобы получить более высокую оценку
на экзамене, то представление знаний лучше связать с другими фактами, например
сведениями о короле Гарольде или короле Вильяме. Если же цель — разжечь ненависть
между англичанами и французами, то лучше воспользоваться такими фактами, как
вандализм английский футбольных фанатов или эксцентричная манера вести себя
на дорогах, присущая французским мотоциклистам. Таким образом, не существует
"правильного" способа представить какой-то факт, но существует более
или менее полезное представление знания некоторыми фактами.
В синтаксисе и семантике языка LISP нет ничего такого, что подсказало бы вам, как организовать знания. Список — это удобная, но иногда неэффективная в работе структура данных, но он не имеет никаких преимуществ с точки зрения представления знаний по сравнению с массивом в языке FORTRAN и менее удобен, чем класс в языке C++. Утверждение о широких возможностях LISP имеет скорее отношение к тому, что для опытного программиста довольно легко создать на его основе производный язык по своему выбору. Но такой специализированный интерпретатор, функционирующий в среде LISP, оказывается очень непроизводительным, и в этом его основной недостаток.