Не баг, а фича
Записки системного архитектора
Наверняка многие в детстве задумывались о том, как другие видят красный цвет? Так же, как и я, или иначе? И как это проверить? Поскольку ответов обычно не находилось, вопросы списывались в разряд «кто кого сборет, кит или слон?» и забывались. Лишь те немногие, кто с возрастом добирался до философских книжек, узнавали, что у этой проблемы есть свое название: принцип приватности сознания. Он формулируется просто: ни у кого нет доступа к чужому сознанию. Или еще проще: человеку принципиально не даны ощущения других. Никому недоступно, как другой видит красный цвет, как ощущает вкус селедки, как слышит терцию, как думает и даже как воспринимает формы. Или можно сказать, что зрительно-слухово-обонятельно-эмоционально-мыслительная «картинка», которую я воспринимаю здесь и сейчас, находясь в сознании, дана только мне и больше никому. Она приватна. Доступа к ней нет ни у кого, кроме меня. Чтобы подчеркнуть категоричность этого утверждения, принцип приватности сознания следует усилить, добавив в формулировку эпитет «абсолютный», то есть говорить об абсолютности принципа приватности сознания или о принципе абсолютной приватности.
С обыденной стороны принцип приватности сознания выглядит вполне понятным и даже тривиальным: ну да, кто же, кроме меня, может смотреть моими глазами и слушать моими ушами? Но несмотря на эту тривиальность, с принятием мировоззренческого, философского содержания принципа приватности возникают проблемы. Как это мы живем каждый в своем мире и не можем эти миры сравнить, сопоставить? А как же объективная реальность, которая одна на всех? Что это за солипсизм такой? И конечно же, практически всех (особенно философствующих) дико раздражает уточнение про абсолютность принципа приватности: мол, не может быть ничего абсолютного в нашем мире. Особенно, когда речь идет о таких простых вещах, как вкус селедки и цвет верхней секции светофора. Все относительно, где-то мы видим по-разному, где-то наши ощущения совпадают. И конечно же, чаще совпадают, поскольку мы устроены одинаково и живем в одной на всех объективной реальности.
Но при углублении в тему, при первых же вопросах – а как нам сравнить мой и ваш вкус селедки? как провести эксперимент, из которого следовал бы вывод о совпадении или несовпадении того, как мы с вами видим красный цвет? – столь очевидному представлению о едином на всех мире не находится рационального обоснования. Аргумент об одинаковом физиологическом устройстве разбивается известным фактом различного цветового восприятия разных глаз одного человека. Например, у меня картинка от правого глаза более теплая, с желтоватым оттенком, а от левого сдвинута в синюю часть спектра. И это притом что оба глаза мои. Так значит, у другого человека спектр вполне может быть сдвинут куда угодно или вообще инвертирован. Хотя вывод про другого принципиально неверен. Единственное, что мы можем однозначно утверждать, так это бессмысленность, некорректность самого вопроса о совпадении или несовпадении ощущений. И тут следует особо отметить, что приватность сознания это не философская выдумка, не гипотеза, а по сути, эмпирический факт, подтверждаемый всем нашим опытом: мы принципиально не можем увидеть то, что видят другие, услышать то, что слышат другие, помыслить чужие мысли. Ну вот так устроен мир. И нам его не изменить.
Правда, чтобы сформулировать принцип приватности сознания, все же недостаточно одного нашего непосредственного опыта. Мы должны допустить, что у окружающих нас других, так же, как и у нас, есть сознание: им нечто дано, они видят, слышат, чувствуют, мыслят. То есть принцип приватности сознания основан на допущении наличия других сознаний. Хотя уже сам факт потребности в такой гипотезе свидетельствует о том, что сознание приватно. В противном случае у нас не было бы никакого сомнения в субъектности окружающих нас людей, сомнения в том, что у них есть сознание, что они не зомби – чего проще, заглянул в чужое сознание и убедился в его наличии. Итак, мы уверены в наличии сознания у нас – наш мир непосредственно дан нам в сознании, – и предполагаем наличие таковых миров у других людей, но без возможности подтвердить это – доступа в чужие миры у нас нет. Приватность абсолютна.
Но есть еще одно непосредственное знание, точнее эмпирический факт, который с первого взгляда противоречит представлению о приватности сознания: несмотря на перманентное пребывание в своем мире-сознании и на отсутствие доступа к сознаниям других субъектов, мы способны на совместную деятельность, на коммуникацию с ними. По сути, сейчас я сформулировал коммуникационную проблему, связанную с приватностью сознания: с одной стороны, у нас нет доступа к чужому сознанию, каждый из нас замкнут в своем сознании, а с другой – мы вместе преспокойно таскаем бревна и обсуждаем последний гол Месси.
Для разрешения описанной коммуникационной проблемы приватности сознания, по сути, требуется найти инвариант, который бы однозначно фиксировался в разных сознаниях. То есть надо найти нечто такое, о единстве чего обладатели разных сознаний могли бы прийти к согласию без нарушения принципа приватности, то есть без необходимости сравнивать, кто что и как видит, слышит, ощущает.
И как ни странно, найти такой инвариант оказывается несложно. Мы понимаем, что не можем сравнить то, как нам видится верхняя секция светофора, перед которым мы стоим, какого вкуса селедка на тарелке, как нам слышится последняя из прозвучавших нот. Принцип приватности абсолютен. Но… но есть то, что нам и не надо сравнивать, о чем нам и в голову не придет спорить, одинаково ли это в наших сознаниях или нет? То, в совпадении чего в разных сознаниях мы без раздумий уверены. И таким инвариантом оказывается самое обычное указание. Указание на светофор, на селедку, на ноту. Мы никогда не узнаем, как каждый из нас видит красный цвет, но когда мы пальцем показываем на один светофор, у нас нет ни малейшего сомнения в том, что наши указания совпадают (у каждого в своем приватном сознании). Так, и отправляя в рот куски селедки с одной тарелки, мы не будем сомневаться в том, что ощущать мы будем вкус одной и той же селедки. И мы никогда не спутаем последнюю ноту с первой. Понятно, что при этом надо исключить ситуацию наличия физических недостатков, когда кто-то вообще что-то не слышит, не ощущает, не видит (например, при дальтонизме). Не дано в сознании, так и указывать не на что.
Особо следует отметить, что и знаки/слова следует рассматривать именно как указатели. Ведь указать можно не только пальцем, а и словом. И опять же, мы не знаем, как другим слышится или видится конкретное слово, скажем, слово «сознание». Тем более, какое значение оно имеет для другого. Но если уж произнесено слово “сознание”, мы не сомневаемся, что имеется в виду именно значение, на которое указывает слово «сознание». Хотя оно (значение) у всех разное.
Итак, для решения коммуникационной проблемы приватности сознания необходимо ввести еще один принцип – принцип совпадения по указанию, или совпадения указаний. Звучит он так: нам недоступно, как даны объекты в других сознаниях, но указание (буквально пальцем или словом/знаком) одинаково интерпретируются субъектами. Или короче: указание инвариантно относительно сознаний. И этой инвариантности достаточно для коммуникации и совместной деятельности.
Рассмотрим пример: я вам показываю пальцем на мяч и произношу слово «мяч». В полном согласии с принципом приватности сознания, я не знаю, как вам дан мой палец, как вам слышится мое слово и как выглядит в вашем сознании феномен-мяч. Но если я в своем сознании указал пальцем на мяч и произнес слово «мяч», то уверен, что данный вам в вашем сознании феномен-мой-палец (как бы он ни выглядел для вас) укажет на то, что вы считаете мячом в своем сознании, и прозвучавшее слово для вас будет указывать на мяч же.
Здесь надо особо подчеркнуть, что совпадают именно и только сами указания, а не то, на что они указывают. Совпадают точки, в которую указывают пальцы, а не то, что расположено в этих точках в разных сознаниях. И слова совпадают только как указатели, то есть некорректно утверждать, что слово «сознание», произнесенное разными людьми, указывает на одно и то же значение, один и тот же смысл. Тут следует обратить внимание, что указание не является феноменом, указание не объект. Слово – феномен, мяч – феномен, палец – феномен, а вот указания словом и пальцем на мяч не феноменальны. Для подтверждения этого, можно заменить палец на указку, а слово «мяч» на «ball» – феномены поменялись, а указания не изменились. Они инвариантны относительно не только сознаний, но и указателей. Следовательно, при указании мы не нарушаем приватность сознания.
Принцип совпадения указаний можно концептуально расширить. К примеру, если два предмета в моем сознании расположены строго один над другим, то я уверен, что у нас с вами никогда не возникнет спора по поводу взаимного положения этих предметов в вашем сознании, вы не станете утверждать, что один предмет левее, а второй правее. Также мы всегда придем к консенсусу по поводу отношения раньше-позже. То есть принцип совпадения указаний можно трактовать и как взаимное «указание» вещей и событий друг на друга и сформулировать в виде принципа инвариантности пространственно-временных отношений. Но можно сделать еще один шаг и обобщить (или наоборот, сузить) последний до принципа инвариантности пространственных и временных границ. Он означает, что если я и вы фиксируем некоторую границу в пространстве (плоскость, линию, точку) или различаем некоторое событие как границу во времени, то мы обязательно согласимся, что имеем в виду одну и ту же границу.
Относительно принципа инвариантности границ следует отметить, что он, как и принцип приватности сознания, не является гипотезой, теоретическим конструктом, а непосредственно следует из нашего опыта. Вот, к примеру, перед нами на стене цветное пятно. Я никогда не узнаю, как вы его видите в своем сознании, а вам недоступно то, как вижу его я. Но вот я подхожу к стене и начинаю обводить пятно пальцем. Что вы видите в своем мире? Вы видите, как феномен-мой-палец, данный вам в вашем сознании, движется по границе данного в вашем же сознании пятна. Допустим, при «конструировании» (при рождении) моего и вашего миров произошли сбои, и мой мир выглядит как в вогнутом зеркале, а ваш как в выпуклом. Конечно, мы этого не замечаем, у каждого из нас мир «прямой», поскольку мы от рождения считаем эти вогнутые или выгнутые линии прямыми. Но понятно, что даже в этом случае, при любой геометрии, если я буду вести пальцем по границе пятна, то вы в своем мире увидите, что мой палец движется именно по границе данного вам пятна. Или, например, если вы сыграете на рояле три ноты, то как бы я их ни слышал, последовательность событий их звучания для меня не изменится. То есть границы в пространстве и границы во времени (события) инвариантны относительно разных сознаний. Эта инвариантность границ и событий и создает иллюзию, что мы существуем в одном мире, что все видят, слышат, ощущают одинаково.
Нарушает ли эта инвариантность границ приватность сознания? Нет. Ведь, сами границы, как не имеющие протяженности в пространстве и времени, не обладают феноменальными свойствами, и совпадение указаний на них нельзя интерпретировать как совпадение цвета, запаха, вкуса и пр. Инвариантность границ и событий лишь задает топологический каркас субъектных миров, который и позволяет нам нести одно бревно, не имея ни малейшего представления о том, как оно выглядит в мире напарника.
А сейчас попробую пояснить принцип приватности сознания, факт замкнутости нас в индивидуальных мирах с помощью компьютерной аллегории. Представим, что у каждого из нас есть свой монитор, свое индивидуальное рабочее место, окруженное непроницаемыми перегородками, и нам доступно только то, что демонстрируется на экранах наших мониторов. Ну и еще у нас есть мышка, с помощью которой мы можем производить определенные манипуляции с тем, что различаем на наших мониторах: что-то перетаскивать, удалять, совмещать, то есть совершать операции, которые можно представить как последовательности событий. И эти события через сеть передаются на другие рабочие места. То есть все как в жизни: несмотря на то, что нам принципиально недоступны мониторы других, мы каким-то образом умудряемся взаимодействовать между собой, реализовывать совместную деятельность на экранах, не покидая свои приватные клетушки.
Можно представить, что все рабочие места подсоединены к одному компьютеру, серверу, который принимает управляющие события от мышек, пересчитывает результаты операций и отправляет их на все мониторы. (Хотя лучше, конечно, тут говорить не об одном сервере, а о некоторой децентрализованной сети, о распределенной системе, чтобы не было единой точки отказа). Причем существенно, что в самой сети нет никаких картинок, а только поток событий. То, что мы воспринимаем, порождается нашими мониторами и отображается на экранах. Причем настройки мониторов могут быть какими угодно: цветопередача может быть сбита, геометрия искажена в любую сторону. Это никак не помешает взаимодействию. Если мы с вами, каждый на своем мониторе, подцепив указателем мышки, подтащим линейку к изображению одного и того же прямоугольника, выведенного на наши экраны, то оба отметим совпадение значения длины. И это совместное действие будет успешно выполнено совершенно независимо от того, как на наших экранах выглядит линейка и прямоугольник, какие настройки у наших мониторов.
Более того, можно представить, что некоторые рабочие места занимают существа, для которых мониторы преобразуют сетевые сигналы в комплексы запахов или звуков, а мышками эти существа управляют, например, испуская феромоны или посвистывая. И даже такая конструкция терминалов не влияет на возможность коммуникации. Если кто-то на своем рабочем месте инициировал событие «опасность», включив мышкой красную лампу, то на других рабочих местах это событие может отобразиться, как запах сероводорода или вой сирены. (Здесь надо отметить, что это лишь аллегория, гипотетическое представление необходимое для лучшего понимания; в непосредственном опыте сравнить, сопоставить данности на разных мониторах принципиально невозможно. Приватность абсолютна).
И тут я могу, а по сути, должен в очередной раз пересмотреть природу инварианта, позволяющего нам коммуницировать, не покидая клетушки своих приватных сознаний. (Напомню, что исходно в качестве инварианта было предложено совпадение указаний, которое потом было возведено в принцип инвариантности пространственных и временных границ). Так вот, с учетом того, что мониторы могут быть любой природы, единственное, что может быть у них общее, так это события, то есть границы во времени (выделение пространственных границ всегда можно представить как фиксацию событий их различения). Именно событие является тем инвариантом, который не изменяется при преобразовании управляющих сигналов на всех этапах, от мышки до формирования “картинки” на других мониторах. События перемещения, события возникновения, события уничтожения, поворота, указания и пр. нами воспринимаются инвариантно. Только через события, чаще всего события указания, возможна коммуникация между субъектами, замкнутыми в своих приватных сознаниях. В сеть уходят события, из сети мы получаем события, и каждый монитор из этих событий строит свою «картинку» из цветовых пятен, звуков, запахов. Еще раз напомню, что в сети, в системе нет никаких цветов, запахов и прочей приватной ерунды – там только потоки событий, не окрашенных в ощущения.
И тут еще раз резонно задать вопрос: а разве сказанное про инвариантность событий не нарушает принципа приватности? Нет, не нарушает. Событие как граница во времени не несет в себе никаких конкретных ощущений. Событие это то, что происходит с ощущениями: стало холодно, погасили свет, запахло горелым. На какой феноменальной основе реализованы события за перегородками мы никогда не узнаем. Мы можем только предположить, что инициированное нами событие может быть воспринято другим (через непонятные нам изменения его ощущений). И самое главное, другой может инициировать ответное событие: нечто изменить, на что-то указать на своем мониторе, и мы можем воспринять это на своем как событие подтверждения приема нашего сигнала. Вот так устроен мир. И это не гипотеза, а именно так он устроен: ощущения приватны, а события инвариантны. Об этом говорит наш непосредственный опыт.
А теперь самое главное, ради чего был написан этот текст. Зададим вопрос: будь я проектировщиком этого мира, этой системы, как бы я решил проблему согласования множества мониторов с разными конструкциями и настройками, да еще с учетом возможности появления в будущем новых мониторов, построенных на неизвестных сегодня принципах? Как может быть устроена система, обеспечивающая согласование действий пользователей с произвольных «рабочих мест»? Прежде всего я попытался бы отвязаться от конструкции мониторов, от способа отображения данных. Система должна работать, то есть обеспечивать взаимодействие контрагентов, независимо от формы представления данных (визуальной, обонятельной, слуховой). То есть надо предоставить полную свободу конструкторам мониторов. Это с одной стороны. А с другой, надо закрыть существам этого мира непосредственный доступ к чужим мониторам, обеспечив их взаимодействие только через сеть, создав для этого универсальный, инвариантный код.
Так и было сделано. Субъект, независимо от природы своей «картинки», взаимодействует с другими субъектами посредством событий изменения элементов этой «картинки», а по сути, изменения своих ощущений. А чтобы не смущать субъектов возможной абсурдностью чужих «картинок», Создатель закрыл доступ к ним на ключ приватности – смотрите только на свою.
И что же получается? Приватность сознания, которая якобы должна являться препятствием для реализации совместной деятельности, оказалась основным условием возможности этой самой деятельности. Приватность – это не баг, а фича. Недоступность чужих мониторов устраняет проблему несопоставимости их конструктивных особенностей, несогласованности их настроек, является основным архитектурным решением системы, условием ее целостности и масштабируемости. Гениальное решение Системного Архитектора.