January 3rd, 2007

Мозг с точки зрения программиста

В 60-е годы было очень модно называть компьютер "электронным мозгом". Тогда всерьез считали, что машины вот-вот будут открывать законы физики и понимать человеческие тексты.

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

Дальше этого, впрочем, дело не идет. А ведь в программировании уже накоплены немалые знания об устройстве информационных объектов - программ, операционных систем, целых комплексов. Уверен, что некоторые эти знания вполне можно перенести и на работу мозга. Очень многие вещи, которыми человек заслуженно гордится, природа открыла миллионы лет назад.

Это не означает, что мозг реально представляет собой цифровую вычислительную машину. Это не так. Просто аналогии можно черпать только из уже готовых объектов. Раньше мозг считали чем-то типа часов на шестеренках или каким-нибудь органом типа желчного пузыря. Сейчас мы можем проводить более точные аналогии. Мозг, несомненно, по принципам своей работы ближе к компьютеру, чем к часам или печени.

Мозг с точки зрения программиста

Два отличия мозга от компьютера сразу бросаются в глаза.

Во-первых, человеческий мозг - продукт эволюции, продолжавшейся миллионы лет, поэтому процент legacy в нем, наверное, зашкаливает. Думаю, что он просто кишит нелогичностью и противоречиями, которые кое-как замаскированы. Изделия рук человеческих все-таки более логичны (не все конечно. Например, одна известная редмондская фирма просто славится запутанностью и более чем странной логикой своих изделий).

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

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

Мозг с точки зрения программиста

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

От каналов можно избавиться, но тяжело, поскольку API нету. Лучшее описание этих вещей можно найти в книге Ю. Орлова "Восхождение к индивидуальности" (там он пишет о привычках).

Кстати сказать, понятия окружающего мира отображаются в мозге с помощью таких вот путей/очагов возбуждения. Для более краткого их вызова используются символические ссылки, называемые словами. Пути/очаги возбуждения естественно называть потоками. Мозг многопоточен по самой своей природе. Впрочем, к сознанию это не относится.

Мозг с точки зрения программиста

Лет двадцать назад было популярно писать о нераскрытых резервах мозгах. Цифры этих самых резервов различались, но у наибольших оптимистов доходили до 70, 80 и даже 90 процентов. Я думаю, что это полная ерунда и особых резервов в мозге нет. Примеры чудо-счетчиков тут ничего не доказывают, поскольку их чудеса, скорее всего, существовали за счет чего-то другого. Если в минуту опасности мозги начинают очень хорошо работать, это тоже не доказательство - значит, отбирается мощность у менее важных потоков.

Вычислительная мощность мозга идет на

1) Управление функционированием тела. Это наибольшая статья расходов - все эти регуляции гормонов, напряжения мышц, регулярное биение сердца, выброс желудочного сока. Часть расходов берет на себя периферическая нервная система, но ей тоже нужно управлять.

2) Организация общей работы мозга - все это создание динамических потоков тоже требует координации взаимодействия. Кстати сказать, алгоритмы организации тоже должны где-то храниться.

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

4) Органы чувств непрерывно посылают информацию, которая должна быть обработана в реальном времени. Особенно это относится к самому широкому каналу - зрению.

Может быть, есть скромный резерв - какой-нибудь процесс Idle, обычно бездействующий. Но вряд ли он занимает больше 5-10%.