Friday, June 1, 2007

Кот не работает

В продолжение темы. Даже не знаю, лучше или хуже стало, но поспокойнее точно, когда я осознал, что метаанализ нужен не только в переводе, а и в просто понимании тоже. Типа, нужно понять, например, что имелось на самом деле в виду в какой-нибудь прямой речи. Да и вообще, полезно.

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

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

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

К чему бы все это? Да вот к размышлениям о том, как система может анализировать саму себя. Например, один уровень абстракции - анализировать другой. Это как человек устроен. Только вот у него далеко не все уровни являются наблюдаемыми, это начинается уже с довольно высокой ступени иерархии. Фиг проконтролируешь работу вегетативной нервной системы какой-нибудь. Ну и вот. Парсер, значит, должен уметь в какой-то момент понимать, что они с текстом только что натворили друг с другом, как преобразовали, и порефлектировать на эту тему. Сделать выводы. Возможно, перепарсить все нах. Грустно...

No comments: