На заре исследований по ИИ считалось, что знание расфасовано «пакетами» размером с предложение, и что лучшим способом ввода знаний в программу был бы некий метод, позволяющий переводить факты в пассивные пакеты данных. Таким образом, каждый факт соответствовал бы куску данных, которые могли бы использоваться программой. Примером такого подхода являлись шахматные программы, в которых позиции на доске были закодированы в форме матриц или неких списков и записаны в памяти, откуда они могли быть вызваны и обработаны с помощью подпрограмм.
Тот факт, что люди сохраняют информацию гораздо более сложным способом, был известен психологам уже давно, но специалисты по ИИ открыли его для себя сравнительно недавно. Теперь они стоят перед проблемой «блочных» знаний и разницы между декларативным и процедурным знаниями (эта разница связана, как мы видели в главе XI, с тем, какие знания доступны для интроспекции).
В самом деле, наивному предположению о том, что все знание должно быть закодировано в виде пассивных фрагментов данных, противоречит основной факт конструкции компьютеров: их умение складывать, вычитать, умножать и так далее не является закодированным в пакеты данных и записанным в памяти; это знание находится не в памяти, а в самих схемах аппаратуры. Карманный калькулятор не хранит в памяти умения складывать; это знание закодировано в его «внутренностях». В памяти нет такого места, на которое можно было бы указать, если бы кто-нибудь спросил: «Покажите мне, где в этой машине находится умение складывать?»
Тем не менее, в ИИ был проделан большой объем работы по изучению систем, в которых большинство знаний хранится в определенных местах — то есть декларативно. Само собой разумеется, что
Важно иметь в виду, что в принципе любой способ кодирования информации в схему данных или процедур так же хорош, как и все остальные, в том смысле, что все то, что можно сделать, работая с одной схемой, можно сделать и с другой — если вас не слишком волнует эффективность. Однако можно привести доводы, доказывающие, что один метод определенно лучше другого. Взгляните, например, на следующий аргумент в пользу исключительно процедурного представления: «Когда вы пытаетесь закодировать достаточно сложную информацию в виде данных, вам приходится развивать для этого нечто вроде нового языка или формализма. Таким образом, на самом деле, структура ваших данных начинает напоминать программу, части которой работают как интерпретатор. Не лучше ли сразу представить ту же информацию в процедурной форме и избежать лишнего уровня интерпретации?»
Этот довод звучит весьма убедительно; тем не менее, если интерпретировать его немного свободнее, он может быть понят как аргумент против ДНК и РНК. Зачем кодировать генетическую информацию в ДНК, если, сохраняя ее прямо в белках, можно избежать не одного, а
Этот вопрос был затронут Фрэнсисом Криком на конференции по общению с внеземными культурами: