Рис. 16 помогает разъяснить суть стратегии, лежащей в основе зрительных вычислений. Возможности представленных на нем визуальных логических вентилей достаточно велики для того, чтобы построить из них в принципе любую цифровую схему (любую схему, входные и выходные данные в которой обозначаются нулями и единицами). Разумеется, чем больше будет схема, тем меньшего размера компоненты ей потребуются, чтобы она могла уместиться на одной картинке. И как сделать, чтобы зрительная система по-прежнему реагировала на изображение нужным нам образом, — это уже другая проблема, аналогичная трудностям, связанным с миниатюризацией электронных микросхем.
Однако прежде чем мы начнем бурно радоваться, предвкушая создание СБИС (сверхбольших интегральных схем), я должен сказать, что на данном этапе мои зрительные микросхемы вроде той, что вы только что видели, имеют серьезные недостатки. Во-первых, визуальные логические вентили не всегда дают на выходе верный сигнал. Например, мои И-шлюзы склонны выдавать восприятие, соответствующее логическому действию “И”, но это лишь тенденция, а не стопроцентно надежный физический результат, как в цифровых электронных микрочипах. Во-вторых, даже если входные данные недвусмысленно подсказывают какую-то одну интерпретацию, нашему восприятию все равно свойственна переменчивость, внезапные перескоки в эшеровском духе из одного состояния в другое. Поэтому на самом деле разглядеть весь свой “путь” по такому контуру может быть непросто, хотя мне и удалось сильно улучшить личные навыки в этом деле при помощи постоянных тренировок. Восприятие наклона рисунка на выходе не возникает само собой, без усилий, как мне изначально хотелось.
Выше я упоминал, что после первой неудачной попытки обмануть зрительную систему и заставить ее производить вычислительные операции по моему желанию, я сдался. “Придется ждать, когда кто-нибудь другой покорит компьютерный потенциал нашего зрения”, — думал я. И лишь спустя год, в 2004 году, изучая эволюцию зрительной системы, я начал осознавать, что на самом-то деле вычислительные способности зрительных отделов нашего мозга давно уже укрощены! Такая технология, как письменность, не только наделила нас способностью к спиритизму и сделала превосходными слушателями. Она позволила нам стать программируемыми — причем не в смысле промывания мозгов, как в фильме “Степфордские жены”. До возникновения письменности мы были, как и калькуляторы, способны производить лишь относительно небольшое количество наиболее важных вычислений. Лида Космидес и Джон Туби уже лет двадцать твердят нам, что мы созданы эволюцией для выполнения лишь тех задач, которые имели к нам непосредственное отношение (например, чтобы замечать, что соплеменник взял себе больше мяса, чем ему причиталось). Мы вовсе не стремились стать универсальными вычислительными машинами, вроде наших компьютеров, и еще менее стремились к тому, чтобы любой встреченный программист мог поставить нам новый “софт”.
Но несмотря на то, что эволюция не делала из нас персональные компьютеры, могло ли выйти, что мы все-таки стали универсальными вычислительными машинами, на которые можно установить любое программное обеспечение? Во-первых, давайте разберемся, что это вообще означает — запускать программы на самих себе. Это означает всего-навсего следовать сложному набору правил, операций, алгоритмов или рецептов. Строго говоря, любой рецепт — это тоже программа. Готовя яичницу, вы следуете простому набору правил, хранящемуся в памяти. Вы производите расчеты, результаты которых на каждом этапе говорят вам, что делать дальше с яйцом, сковородой и лопаткой. Но как рецепт может быть программой, да и вообще иметь отношение к вычислениям, если в нем нет цифр? Программисты действительно предпочитают говорить о вычислениях исключительно на языке цифр, но лишь потому, что цифрами можно обозначить все, что угодно. Например, число 3708 может быть цифровым кодом, расшифровывающимся как “яйцо”. Рецепт останется программой даже в том случае, если в выкладки добавятся овощи.
Раз следование рецепту может расцениваться как запуск программного обеспечения, значит, мы были способны использовать самих себя для выполнения программ задолго до изобретения письменности. Тем не менее, имелись суровые ограничения. Во-первых, все программное обеспечение заучивалось наизусть. Это делало его установку делом крайне трудоемким (загрузка данных требовала многократного повторения), и установить мы могли не больше, чем были в состоянии запомнить. Мы были вроде программируемых микрокалькуляторов, какими я пользовался в 8о-х — 90-х годах: в принципе программируемые, но на деле — сплошная морока из-за малого объема памяти. Во-вторых, хотя мы, люди, и можем запоминать огромное количество информации, если очень постараемся (кое-кто знает наизусть целые разделы Библии), масштабные установки данных обычно возможны благодаря тому, что запоминающий имеет перед глазами текст, который нужно запомнить. Без текста заучить сложные алгоритмы можно было, только услышав их от других. Но другие люди, даже те, кто избрал своей профессией преподавание, никогда не бывают так же терпеливы, как книги, и, весьма вероятно, ваш учитель отправится пить кофе еще до того, как вы закончите зубрить второй стих... И это не говоря о том, что для начала вашему учителю самому нужно было успешно перенять этот алгоритм от кого-либо. Люди могли передавать необходимые знания следующим поколениям, но обычно для этого было нужно тратить всю свою жизнь на общение с учителями.