Партнеры

Счетчики








Процедурный вопрос

Ишкушштвенный интеллект

Знания принято разделять на процедурные (процедуральные) и декларативные. Процедурные на первый взгляд столь привычны, что можно сразу и не догадаться, что они - знания. Но они точно знания, поскольку, в отличие от обычных программ, подключаются (в алгоритм-программу) автоматически.

Процедурные знания могут представляться с помощью процедур, правил, алгоритмов. В частном случае, это может быть одношаговая процедура. Например, "x:=x+1" или "Нажать кнопку". (Достояние знакомой военной кафедры: "Мы должны воспитать вас защитниками Родины, способными нажать кнопку - и умереть!". Разом или за два шага?).

Единицы хранения. Отдельные куски должны позволять автоматическую сборку. Из мелких кусков долго и сложно собирать. Но маленький кусок во много разных мест сгодится. Больших же кусков потребовалось бы больше.

Информационная стыковка. Каждая единица хранения должна иметь "гардероб", позволяющий вращаться в приличном информационном обществе. При этом все должны носить один размер. И хоть на пляж, но все в однотипных фраках. Иначе не распознают, и ни танцевать, ни плавать в информационном потоке вместе не будут. Но во фраках плавать неудобно. Какой-то просвет принесло объектно-ориентированное программирование. Тут больше гибкости, поскольку каждой единице-объекту "выдадут" всю информацию, положенную по наследству.

Последовательное и параллельное выполнение. Если совмещать все, что можно совмещать - быстрее будет. Но алгоритм это должен позволять. Нельзя женить и хоронить одну персону параллельно. Можно только в определенной последовательности, чтобы дама в нарядах не запуталась.

Накопление (и забывание) знаний. Желательно "велосипед изобретать" в последний раз на каждом компьютере. Но все изобретенное сохранить невозможно, поэтому надо знать, что и когда забывать. Не забывайте об этом никогда.

Невербализируемые знания. Не все можно "словом сказать и пером описать". Некоторые свои знания человечество пытается описать уже тысячу лет и не может толком, например, "любовь". Но все знают, что делать. Любое ремесло передается, прежде всего, не учебниками, а подзатыльниками. Упомянем и самое "неописуемое" процедурное знание - езду на велосипеде.

Как машине хранить и передавать процедурные знания?! Процедурные знания более-менее подходят к машине, хотя лучше сказать, что они с Фон-Неймановской машиной предаются процедурному пороку. Процедуры - это побочные эффекты, это постоянное перебрасывание данных из памяти в процессор и обратно. Наиболее неприятна обязательная двойная бухгалтерия, связанная с процедурами. Возьмем "x:=x+1". Что проще?! Но, во-первых, переменные в такой, извините за выражение - "математике", это не переменные, а изменяемые константы. А во-вторых, в этом несчастном операторе первый x нас интересует, как "адрес результата", а x в правой части - "старое значение переменной". И вообще, на виду все время столбнячный "x:=x+1", а в спрятанной от любопытных взоров памяти все бурлит, кипит, меняется. Процедурное программирование - это игра в шахматы вслепую, и руки в глубоких карманах. У некоторых получается. Отдельным даже нравится. И самой машине Фон-Неймана так удобнее. Она - сама процедура.

А.Е.Соловьев, soloviev.nevod.ru, 1994 год