Главная arrow книги arrow Копия Глава 8. Логика первого порядка arrow Дополнительные сведения о представлении
Дополнительные сведения о представлении

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

Среди наиболее широко распространенных формальных языков наиболее крупным классом являются языки программирования (такие как C++, Java или Lisp). Сами программы представляют, в прямом смысле этого понятия, только вычислительные процессы, а структуры данных, применяемые в программах, могут представлять факты; например, в программе для представления содержимого мира вам-пуса может использоваться массив 4x4. Поэтому операторязыка программирования представляет собой довольно естественный способ формирования утверждения о том, что в квадрате [2,2] имеется яма. (Такие способы представления могут рассматриваться как выбранные произвольным образом; системы баз данных были разработаны именно для предоставления более общего способа хранения и выборки фактов, независимого от проблемной области.) В языках программирования недостает какого-то общего механизма логического вывода фактов на основе других фактов; каждое обновление в структуре данных осуществляется с помощью процедуры, характерной для данной проблемной области, подробности устройства которой уточняются программистом на основании его знаний о проблемной области. Такой процедурный подход представляет собой резкий контраст с декларативным характером пропозициональной логики, в которой не смешиваются знания и методы логического вывода, а логический вывод осуществляется полностью независимо от проблемной области.

Еще одним недостатком применения структур данных в программах (а также, в этом отношении, и баз данных) является отсутствие удобного способа сформировать, например, такое утверждение: "В квадрате в [2,2] или [3,1] имеется яма" или "Если вампус находится в квадрате [ 1,1 ], то его нет в квадрате [2,2]". Программы позволяют хранить для каждой переменной единственное значение, а некоторые системы допускают использование "неопределенных" значений, но в них не хватает выразительности, которая требуется для обработки частичной информации.