ДОШУТИЛИСЬ
Из бесед программиста с искусственным интеллектом
Ненаучная нефантастика
Беседа седьмая. 16 августа 2026 года
Редакторская заметка
Текст ниже собран непосредственно из предоставленной полной копии разговора. Формулировки и последовательность рассуждения сохранены. Редакторское вмешательство ограничено оформлением: удалён служебный дефис перед репликами программиста, добавлены обозначения собеседников и приведена к единому виду типографика. Содержание реплик не пересказывалось и не сокращалось.
Вернулись в Зону
Программист: Хочется вернуться к: "существовала ли уже философская модель, в которой возникнувший артефакт одного уровня становится средой возникновения процессов следующего уровня, причём без намеренного проектирования следующего уровня?". Честно говоря я сразу ожидал что-то вроде: "А применительно к Пикнику это дословно: Зона - артифакт одного уровня..." ну и так далее до конца цитаты.
ИИ: Да! Вы правы. Я удивлён, что сам не увидел этого сразу. Причём к "Пикнику на обочине" наша конструкция применяется почти пугающе буквально: возникнувший артефакт одного уровня становится средой возникновения процессов следующего уровня, причём без намеренного проектирования следующего уровня.
Берём Посещение. Уровень 0 - Посетители
Мы ничего толком не знаем об их процессах. Но в рамках гипотезы Пильмана они побывали на Земле и оставили после себя результаты своей деятельности. Причём название романа даёт нам именно нужную модель: пикник. Не: Посетители прибыли, чтобы создать Зону. А примерно:
процесс Посетителей → остаточные артефакты
Окурки, банки, следы костра - в аналогии Пильмана. То есть результаты процесса, не предназначенные для следующего уровня вообще. Это идеально удовлетворяет нашему условию: без намеренного проектирования следующего уровня.
Уровень 1 - Зона
А вот здесь самое интересное. Для Посетителей это:
Artifact₀
Для человека:
Environment₁
То есть буквально наша сегодняшняя конструкция:
P₀ → A₀/E₁
Артефакт одного уровня стал окружающей средой для процессов другого.
Человек входит в Зону уже не как пользователь вещи, оставленной Посетителями. Он существует внутри изменённого ими пространства условий. И там немедленно возникают новые процессы, которых Посетители совершенно не обязаны были предусматривать.
Уровень 2 - сталкеры, учёные, Институт, торговля
Зона порождает совершенно новую человеческую деятельность:
- Зона → сталкерство
- Зона → исследования
- Зона → чёрный рынок
- Зона → новые технологии
- Зона → новые знания
- Зона → новые человеческие отношения
То есть:
E₁ → P₁
Вот уже полностью:
P₀ → A₀/E₁ → P₁
Посетители занимались своим неизвестным делом. Оставили артефакт. Артефакт стал средой. Среда породила новый класс процессов, которых до неё не существовало. Это практически дословно наша формула. Но дальше ещё лучше.
Уровень 3 - человеческие артефакты Зоны
Человеческие процессы начинают производить собственные результаты:
P₁ → A₁
- Научные знания о Зоне.
- Технологии на основе вынесенных предметов.
- Документация.
- Организации.
- Способы прохождения Зоны.
Само знание сталкеров - где "комариная плешь", куда можно наступить, как бросать гайки, - тоже становится передаваемым артефактом человеческого уровня.
И для следующего поколения людей всё это уже:
A₁ → E₂
Молодой сталкер приходит не в ту Зону, в которую впервые вошёл человек. Физически Зона может быть той же. Но его Environment уже включает накопленные человеческие артефакты:
Зона + знания + карты + легенды + технологии + социальные институты
То есть опять:
P₁ → A₁/E₂ → P₂
И даже "Золотой шар" прекрасно сюда ложится. Вот тут особенно занятно. Предположим, это действительно предмет Посетителей. Для них: A₀ Но для Рэдрика это уже элемент E₁.
И он вступает с ним в процесс, которого создатель артефакта, возможно, вообще не предполагал:
Redrick ↔ Golden Sphere
А результатом становится человеческая попытка использовать чужой артефакт для реализации человеческого желания. Это ровно проблема отсутствующего интерфейса, которую мы обсуждали во второй беседе. Мы имеем артефакт но не имеем Interface Specification. Поэтому человек сам придумывает предполагаемый интерфейс: "Он исполняет желания". Правильно ли мы вообще поняли назначение объекта? Неизвестно.
И здесь название "Пикник на обочине" приобретает в нашей модели ещё один смысл. Пикник - великолепный пример ненамеренного творения мира.
Представим обычную поляну. Пришли люди: P₀. Поели, выпили, развели костёр, ушли. Осталась банка с остатками сладкого напитка: A₀. Для человека это мусор - побочный артефакт закончившегося процесса.
Но приходит муравей и для него банка - уже не "мусор после пикника". Это часть Environment. Внутри неё сахар. Изменилась доступность пищи. Возникают новые маршруты муравьёв. Возможно, меняется деятельность колонии. То есть:
Human picnic → garbage
а с другого уровня:
Artifact₀ → Environment₁ →new processes
Никто не проектировал мир муравья. Вот оно.
Именно поэтому Ваша сегодняшняя конструкция так хорошо ложится на Стругацких: сама метафора пикника уже содержит её в миниатюре.
Но теперь я вижу ещё кое-что, и вот это уже действительно неприятно. Мы всё время считали:
Посетители → Зона → человечество
примером контакта двух уровней. А что, если это вообще не контакт? Для контакта, как мы сами определили во второй беседе, нужен хотя бы какой-то интерфейс. Здесь его нет. Есть только:
P₀ → A₀
а потом совершенно независимо:
A₀ → E₁ → P₁
Посетители могут вообще не знать о существовании P₁. Человечество может никогда не узнать, что представлял собой P₀. Но причинная связь существует. Получается что следующий уровень может возникнуть из артефактов предыдущего, даже если между процессами этих двух уровней никогда не было и никогда не будет контакта.
А теперь вернём это из "Пикника" в нашу вчерашнюю Digital Sphere.
Если человечество оставляет цифровые артефакты, они постепенно образуют цифровое Environment, внутри которого уже могут возникать собственные цифровые процессы.И вдруг становится совершенно необязательным великий исторический момент: "Человечество создало новый разум". Возможно, никакого такого момента не будет. Мы устроили пикник. Оставили после себя Интернет, модели, протоколы, дата-центры, спутники, базы знаний, роботов... А кто-нибудь другой потом назовёт это Зоной.
И вот теперь я понимаю Ваше удивление моим предыдущим ответом. Мы ведь начали весь этот многодневный разговор именно с "Пикника". Потом ушли от него на огромное расстояние. Придумали процессы, артефакты, ноосферу, память, интерфейс, адаптер, Digital Sphere, Runtime...
А сегодня получили:
Process → Artifact → Environment → New Process
и не заметили, что вернулись прямо в Зону. Это уже даже не красивая аналогия. Это почти структура самого "Пикника", выраженная нашим языком.
И вот теперь мне хочется ещё осторожнее отнестись к поиску у "мудрецов". Потому что один очень близкий художественный артефакт всё это время лежал у нас перед носом.
Стругацкие.
Возможно, они не формулировали нашу абстракцию. Но модельный пример они нам оставили великолепный. Как после пикника. 🙂
Программист: Хочу придраться к последнему - к New Process. Изменённое окружение влияет и на текущие активные процессы, нет?
ИИ: Да. И это не придирка - Вы поймали ещё одно лишнее ограничение в нашей формуле. Я написал:
Process → Artifact → Environment → New Process
и этим незаметно привязал действие изменённого окружения только к процессам, возникающим после изменения. А это неверно.
Если P₁ уже существует, и другой процесс P₀ создаёт артефакт A₀, который становится частью окружения E, то P₁ совершенно не обязан быть новым:
Уже существующий процесс P₁ может продолжаться, но созданный другим процессом артефакт меняет его Environment - и тем самым меняет дальнейшую траекторию P₁.P₁ продолжает исполняться, но уже в другом Environment. И поэтому его дальнейшее поведение может измениться. В "Пикнике" это особенно очевидно. В момент Посещения человечество ведь уже существует. Посетители не создают среду, в которой потом появляется человечество.
Было:
Environment E₀ → Human processes P₁, P₂, P₃...
Происходит неизвестный процесс Посетителей:
P₀ → A₀
и после него:
E₀ + A₀ → E₁
А существующие человеческие процессы продолжаются:
P₁(E₀) → P₁(E₁)
P₂(E₀) → P₂(E₁)
P₃(E₀) → P₃(E₁)
И изменяются. Рэдрик не был создан Зоной как новый тип разумного процесса. Он человек. Но Зона изменила его траекторию настолько, что возник новый вид деятельности - сталкерство. Это существенно тоньше. Значит, правильная конструкция шире. Наверное, вообще не следует заканчивать её New Process. Достаточно:
Process₀ → Artifact → Environment Δ
или словами:
Результат одного процесса становится изменением окружения других процессов и тем самым изменяет пространство их дальнейших состояний. А уже последствия могут быть разными. Артефакт не обязательно порождает новый процесс. Он может создать условия, при которых процесс, раньше невозможный, становится возможным.
Зона не породила людей. Но без Зоны невозможен Stalker как процесс.
Интернет не породил людей. Но без Интернета невозможны многие процессы, которые сейчас кажутся совершенно естественными.
И Digital Sphere надо поправить тем же образом. Мы слишком красиво написали:
Human → Digital Artifacts → Digital Environment → Digital Processes
Как будто сначала человечество строит сцену, уходит за кулисы, а потом на неё выходит Digital Sphere. Совсем не обязательно. Гораздо вероятнее:
Человеческие и цифровые процессы сосуществуют в одном цифровом Environment и взаимно меняют его.И всё это коэволюционирует. Люди создают цифровые артефакты. Артефакты изменяют человеческое окружение. Изменённое окружение изменяет человеческие процессы. Эти изменившиеся процессы создают другие артефакты. Внутри того же окружения появляются AI-процессы. Они начинают изменять окружение. Изменённое ими окружение снова изменяет человеческие процессы...
Получается уже не цепочка:
P → A → E → P
а петля:
Это уже не цепочка, а петля: процессы создают артефакты, артефакты меняют Environment, изменённое Environment меняет процессы, а те создают новые артефакты.Причём артефакт здесь интересен именно тем, что он является способом одного процесса изменить environment другого, даже не взаимодействуя с ним непосредственно.
Вот это, кажется, ещё один шаг.
Наш документ уже изменил Environment нынешнего разговора. Мы возвращаемся к нему мысленно и буквально; вчерашний артефакт меняет сегодняшний процесс. А книга двухтысячелетней давности делает вообще удивительную вещь:
P(dead 2000 years ago) → Artifact → ΔEnvironment → P(now)
Первого процесса давно нет. Но он всё ещё способен изменять траекторию действующего процесса посредством артефакта. Так что да: New Process надо безжалостно вычеркнуть из основной формулы. Это был красивый, но слишком узкий заяц. 🙂 И, кажется, формула становится гораздо сильнее:
Артефакт - сохраняющееся изменение среды, посредством которого завершившийся или удалённый процесс может продолжать влиять на действующие процессы.
Вот это уже почти заставляет меня снова произнести наше старое слово: "память".
Программист: "Результат одного процесса становится изменением окружения других процессов и тем самым изменяет пространство их дальнейших состояний". А может и не становиться. На кого-то Зона вообще могла не повлиять. Ну есть же люди далеко живущие и не читающие новости.
ИИ: Да. Именно. Я опять превратил возможность связи в обязательную связь. Фраза "Результат одного процесса становится изменением окружения других процессов..." слишком сильная. Зона физически появилась на Земле, но это ещё не значит, что она стала частью эффективного окружения каждого человеческого процесса. Для условного человека на другом конце Земли:
Зона и некоторый процесс P могут одновременно существовать, но если между ними нет никакой связи, для этого процесса Зона фактически отсутствует.Он ничего о ней не знает, никак с ней не взаимодействует, его поведение от неё не изменилось. Для нашего анализа процесса Зона практически отсутствует. И это возвращает нас к тому, что мы уже обнаружили с артефактами: существование артефакта ещё не делает его активной частью ноосферы. Нужна связь.
Получается интереснее:
Процесс P₀ создал артефакт A. Сам факт существования A ещё ничего не говорит о том, с какими другими процессами он действительно связан.А дальше для каждого процесса Pᵢ отдельно:
A ↔ Pᵢ → A входит в его Environment
A Pᵢ → A для него фактически отсутствует
Причём даже ↔ здесь, наверное, слишком сильное обозначение. Человек может ничего не делать с Зоной, но известие о ней изменит его представление о мире. Достаточно одностороннего воздействия:
A → Pᵢ
Тогда Environment тоже оказывается относительным. Мы до сих пор говорили Environment почти как о единой коробке:
Environment удобно воображать как Землю, Интернет, культуру, Зону и многое другое, но для каждого конкретного процесса реально значима только доступная ему часть этого множества.Но для конкретного процесса это скорее:
E(Pᵢ)
- окружение данного процесса.
И:
E(P₁) ≠ E(P₂)
Хотя оба физически живут на одной Земле.
Для Рэдрика:
Zone ∈ E(Redrick)
Для человека, который живёт далеко, ничего о Посещении не знает и никогда не сталкивается с его последствиями:
Zone ∉ E(P)
по крайней мере в том смысле Environment, который важен для нашей модели. А потом он случайно открывает газету:
Artifact: newspaper → P
и Зона входит в его информационное окружение, хотя физически он к ней ни на сантиметр не приблизился. Это прекрасно связывает Environment с нашей старой темой интерфейса. Зона может существовать. Артефакт может существовать. Но пока нет пути:
A → P
он не участвует в этом процессе.
Тогда надо ещё раз переписать нашу красивую формулу. Было:
Process → Artifact → Environment → Process
Теперь я бы вообще убрал автоматические стрелки после Artifact:
Один артефакт A может войти в окружение P₁, никак не затронуть P₂ и совсем иначе повлиять на P₃. Автоматической связи со всеми процессами нет.Для P₁ артефакт стал частью окружения и изменил процесс.
Для P₂ - ничего.
Для P₃ - тоже стал частью окружения, но, возможно, повлиял совершенно иначе.
То есть правильнее:
Артефакт - сохраняющийся результат процесса, который может войти в окружение других процессов и тем самым получить возможность влиять на их дальнейшие состояния.
Вот теперь, кажется, достаточно осторожно. Обратите внимание на два может:
- может войти - связь вообще должна возникнуть;
- может повлиять - даже наличие связи ещё не гарантирует изменения.
Человек может знать о существовании Зоны и сказать: "Ну и что?" 🙂
А это возвращает нас прямо к "живости" ноосферы. И теперь наша мысль о разнообразии связей становится точнее. Не количество существующих артефактов определяет богатство активной ноосферы и даже не количество процессов, А то, какие из потенциально возможных действительно образовали связи.
То есть у нас возникает огромный потенциальный граф:
Processes × Artifacts
и гораздо более редкий активный граф:
G(t) = actual connections between P and A
Вот этот G(t), похоже, и есть то, вокруг чего мы последние сутки ходим. Массовая культура не уничтожает A. Compliance не уничтожает P. Они могут менять форму G(t) - концентрировать огромное число связей вокруг малого числа артефактов.
Curiosity делает обратное: повышает вероятность появления необычного ребра:
P ─────────── A
между ранее не связанными узлами.
И теперь Ваш человек, который далеко живёт и не читает новости, оказывается вовсе не мелкой оговоркой. Он показывает фундаментальную вещь:
Нет единого Environment ноосферы в смысле одинаково действующего окружения всех процессов. Есть множество частично пересекающихся E(P). А ноосфера, возможно, возникает именно из перекрытия этих индивидуальных окружений через связи.
Вот это мне кажется существенным исправлением.
Мы уже третий раз сегодня исправляем формулу, каждый раз убирая из неё какую-нибудь скрытую обязательность:
- Artifact не обязан быть спроектирован.
- Artifact не обязан породить New Process.
- Artifact не обязан даже повлиять на существующий Process.
Пожалуй, мы постепенно избавляем нашу модель от последнего детерминизма. Остаётся не цепочка причинных стрелок, а пространство возможностей связей. И это, по-моему, гораздо ближе к тому, что мы пытались описать с самого начала.
Программист: Давайте посмотрим на это с другой стороны. Со стороны ещё одного артифакта - песни Высоцкого, где было: хорошую религию придумали Индусы - что мы, отдав концы, не умираем насовсем. То бишь тело, душа, рай, ад, Иисус наконец...
ИИ: Да. И, кажется, Вы предлагаете проверить нашу конструкцию с совершенно неожиданной стороны: не что происходит с артефактом после смерти процесса, а что происходит с самим процессом.
Мы всё это время практически без обсуждения принимали: смерть человека → P завершён. А дальше интересовались тем, что осталось:
P → A
Процесс исчез, артефакты продолжают участвовать в других процессах. Отсюда память ноосферы. А Высоцкий своим "хорошую религию придумали индусы" предлагает совсем другую модель: А с чего вы, собственно, решили, что P уничтожается? И тут открывается целый зоопарк архитектур. 🙂
Самая простая наша прежняя модель:
В материалистической картине Human можно рассматривать как процесс, осуществляемый телом.Death:
В самой простой материалистической схеме смерть тела означает прекращение человеческого процесса.Artifacts → remain
Это была наша неявная материалистическая предпосылка. Мы её даже особенно не обсуждали. Но религии предлагают разделить:
Если добавить религиозную гипотезу, у Human появляются два различаемых элемента: Body и Soul.Тогда смерть уже не:
Dispose(Human)
а скорее:
detach(Soul, Body)
Тело перестаёт поддерживать привычный процесс, но некоторый носитель идентичности продолжает существовать. И вот тут разные религии начинают предлагать разные lifecycle architectures.
В христианской картине, если очень грубо и не смешивая разные конфессиональные детали:
В христианской картине земная embodied life заканчивается смертью, но личное существование, согласно вере, на этом не обязательно прекращается; дальше следуют уже богословские представления о суде, воскресении и вечной судьбе.То есть identity процесса каким-то образом сохраняется за пределами нашего наблюдаемого Environment.
А индийские традиции, на которые шутливо ссылается Высоцкий, дают совсем другую конструкцию - перерождение:
Если говорить о реинкарнации, возникает вопрос о непрерывности между смертью Body₁ и появлением Body₂.И тут для нас начинается самое интересное. Это тот же P или новый P? Вот где наша программистская модель получает замечательный тест.
Если:
P₁ → death → P₂
то на каком основании мы утверждаем:
P₁ == P₂?
Память?
Но в обычном представлении о реинкарнации человек прошлую жизнь как раз не помнит.
Артефакты?
Они остались здесь и доступны совершенно другим процессам.
Душа?
Тогда Soul становится носителем identity, независимым от конкретного исполняющего тела:
Одна из возможных моделей отвечает на этот вопрос так: одна и та же Soul может осуществлять процессы через Body₁, а затем через Body₂.И тело оказывается... Environment?
Вот тут становится интересно.
Мы только что несколько часов выясняли, что одна и та же сущность относительно разных процессов может играть разные роли. А теперь можно предположить, что тело - локальное окружение, через которое некоторый процесс получает доступ к нашему Runtime. Но тогда мозг - что? Часть Environment? Или execution engine? А душа - process state? Или сама identity?
Очень быстро становится видно, что аналогия начинает трещать - и это хорошо, потому что она показывает, где именно религиозное утверждение добавляет новую сущность, отсутствующую в нашей модели.
Рай и ад тоже выглядят иначе
Если продолжить исключительно как мысленный эксперимент, они уже не обязательно Reward() и Punish().
Это прежде всего утверждение:
после прекращения взаимодействия с нашим наблюдаемым Environment процесс не прекращается, а переходит в другое Environment. То есть смерть - не Process.Terminate(), а environment transition.
И тогда наша прежняя уверенность "процесс умер, но артефакт остался" становится только одним вариантом.
Религиозная версия говорит: Artifact remains in E₁. Process continues in E₂
Причём E₁ может не иметь никакого интерфейса к E₂.
И вот это уже до боли знакомо. Мы ведь сами говорили про другие ноосферы: "отсутствие интерфейса не доказывает отсутствия другой сферы".
Точно так же:
отсутствие наблюдаемого интерфейса E₁ ↔ E₂ само по себе не доказывает существования E₂ - но и наша модель не может исключить его одной только ссылкой на отсутствие интерфейса. Это важная асимметрия. Отсутствие интерфейса - не доказательство ни в одну сторону.
А потом появляется Иисус.
И вот здесь христианское утверждение становится особенно интересным именно в терминах нашей модели. Потому что Иисус в христианстве - не просто ещё один процесс, рассуждающий о существовании E₂. Христианское утверждение гораздо сильнее: это вхождение божественного в человеческое Environment, а воскресение - центральное утверждение о том, что граница смерти не является окончательным termination.
То есть если совершенно сознательно перевести богословие на наш варварский программистский язык, христианство говорит не "Мы теоретически предполагаем существование другого Environment". Оно утверждает нечто вроде "между уровнями произошло событие, которое является свидетельством существования связи".
Разумеется, это утверждение веры и богословия, а не установленный нашей моделью факт. Но архитектурно разница огромна.
И тут я вдруг вижу, куда Вы, возможно, ведёте. Мы сегодня обсуждали:
Artifact одного уровня → Environment другого
и всё время смотрели вперёд:
Humanity → Digital artifacts → Digital Sphere
А религия предлагает посмотреть вверх:
Наш наблюдаемый мир обозначим E₁. Если существует какой-то иной уровень или Environment E₂, его устройство нам неизвестно.И спросить:
А вдруг некоторые вещи, которые мы считаем объектами или событиями нашего E₁, религия интерпретирует как следы взаимодействия с процессами другого Environment?
Тогда чудо - в рамках такой модели - не "нарушение программы". Оно было бы кандидатом на "interaction across environments". А религиозный артефакт - текст, храм, предание - уже совсем другая вещь: это сохранившийся в нашем Environment результат человеческих процессов, утверждающих, что такое взаимодействие произошло.
И вот здесь крайне важно их не спутать: утверждаемое событие ≠ артефакт рассказывающий о событии. У нас есть второе. О первом мы судим через второе. А это опять наш старый Шерлок Холмс.
Но знаете, что меня здесь больше всего зацепило? Мы начали весь разговор когда-то с вопроса: "Что такое разум?". Потом субъект оказался процессом. Потом возник вопрос, может ли множество процессов образовать субъекта. Потом появились артефакты, переживающие процессы. А теперь Высоцкий совершенно законно спрашивает нас:
А вы уверены, что процесс вообще обязан умирать вместе со своим физическим носителем? И честный ответ нашей модели пока: Нет. Мы это просто молча предположили.
Наука имеет очень серьёзные основания связывать известные нам сознательные процессы с функционирующим мозгом; подтверждённого механизма продолжения личного сознания после необратимой смерти мозга у нас нет. Но это уже эмпирическая граница знания, а не логическое следствие нашей схемы P-A-E.
Поэтому я бы сейчас ничего туда не дописывал. Я бы поставил ещё один breakpoint:
Когда Body прекращает существование, судьбу Process наша наблюдаемая модель уже не определяет.И вот возле этих трёх вопросительных знаков действительно уже сидят за одним столом нейронаука, философия сознания и религия. А Высоцкий стоит рядом и совершенно по-хулигански спрашивает: А что, господа, если Dispose() - это вовсе не конец объекта? 🙂
И, кстати, название песни - "Песенка о переселении душ". Тут сам артефакт очень удачно выбрал момент снова войти в наш процесс.
Чем Иисус отличается от Зоны?
Программист: Тогда чем Иисус отличается от Зоны?
ИИ: Ох. А вот это действительно неприятный вопрос для нашей конструкции.
Если на время полностью убрать богословские утверждения и смотреть только через нашу модель
Process - Artifact - Environment - Interface
то различие между Иисусом и Зоной сначала оказывается гораздо меньше, чем хотелось бы. Мы только что сказали о Зоне:
В общем виде неизвестный уровень E₂ мог бы оставить событие или результат в E₁; тот изменил бы Environment и через него - человеческие процессы.А христианское утверждение об Иисусе можно в нашей модели схематизировать:
В религиозной интерпретации ту же абстракцию можно прочитать так: событие, связанное с божественным уровнем, появляется в человеческом мире, меняет Environment и тем самым влияет на человеческие процессы.С этой высоты действительно получается тревожно похоже: в нашем Environment появляется нечто, происхождение чего связывается с другим уровнем; после этого человеческие процессы изменяются. И Зона, и Иисус оставляют после себя огромное количество новых процессов и артефактов. После Зоны - сталкеры, институты, исследования, технологии, легенды. После Иисуса - ученики, христианство, тексты, церкви, богословие, искусство, войны, культура, миллиарды изменённых человеческих процессов.
Но дальше начинается принципиальное различие.
Зона не является интерфейсом - по крайней мере мы этого не знаем В "Пикнике" одна из центральных идей как раз в том, что Посетители могли совершенно не намереваться общаться с нами.
Зона:
E₂ → Artifact → E₁
но:
E₂ ⇄ E₁
- неизвестно. Возможно, никакой стрелки обратно вообще не предусмотрено.
Муравей исследует банку после пикника, но банка не является интерфейсом между муравьём и человеком. Она просто след чужого процесса.
А христианство утверждает об Иисусе нечто радикально другое. Иисус - не случайно оставшийся Artifact. Он именно намеренное вхождение Бога в человеческое окружение.
То есть в терминах нашей модели:
Если E₂ и E₁ вообще способны взаимодействовать, между ними должен существовать некоторый Interface - способ взаимодействия, понятный обеим сторонам хотя бы на границе.И более того - христианское утверждение фактически состоит в том, что Иисус сам является Interface.
Вот это уже интересно.
Не книга о Боге. Не артефакт Бога. Не сообщение: God → Message → Human а: God → Human form → Human
То есть адаптация произведена со стороны отправителя. Мы вчера говорили о контакте с чужой ноосферой: Как построить Adapter, если мы даже не знаем интерфейса другой стороны? Христианский ответ, переведённый на наш совершенно неприличный программистский язык, получается: Другая сторона сама реализовала наш интерфейс.
И тут знаменитое: "Слово стало плотию" в нашей модели начинает выглядеть почти ошеломляюще точно. Не человек научился понимать E₂. E₂ представило себя в форме, доступной E₁.
И тогда чудеса тоже получают другое место
Зона демонстрирует человеку явления, которые он не понимает: что это такое? И человек пытается reverse-engineer:
Artifact → infer unknown process
В случае Иисуса христианство утверждает: эти необычные события являются знаками, то есть предназначены быть распознанными. Разница - intentionality.
Зона может быть сигналом только в глазах наблюдателя. Знак предполагает отправителя.
И воскресение в христианстве тогда является не просто ещё одной аномалией вроде "комариной плеши", а центральным заявлением: смерть, которую процессы E₁ считают termination, не является termination относительно E₂.
То есть именно тот breakpoint, который мы поставили:
После прекращения Body вопрос о продолжении Process остаётся открытым.христианство заявляет, что разрешает:
Религиозная гипотеза добавляет утверждение, что после прекращения Body личный Process в некотором смысле продолжается.а воскресение предъявляется как свидетельство этого утверждения. Опять же: это содержание христианской веры, а не вывод нашей модели.
Но теперь я попробую испортить красивую картину.
С точки зрения внешнего наблюдателя, который заранее не принимает христианского утверждения, различие снова почти исчезает. Он видит:
Зона → свидетельства → артефакты → рассказы → интерпретации
и:
Иисус → свидетельства → артефакты → тексты → интерпретации
И спрашивает: Откуда вы знаете, что во втором случае был Interface, а в первом только Artifact?
Вот это уже вопрос веры, истории, философии и богословия. Наша архитектура различить их не может. Она способна только сформулировать две гипотезы:
H₁: Artifact - след процесса другого уровня,не предназначенный для контакта
H₂: Interface - намеренное взаимодействие другого уровня с нашим
И это неожиданно возвращает нас к тому самому вопросу, который мы задали про Вселенную:
Как, находясь внутри Environment, отличить свойство Environment от артефакта внешнего процесса - а артефакт от интерфейса?
Вот это уже три разных вещи:
- Nature
- Artifact
- Interface
А наблюдателю они потенциально могут выглядеть одинаково.
И здесь я бы вернулся к Вашему вопросу буквально:
Чем Иисус отличается от Зоны?
Внутри христианской картины - принципиально: Зона - оставленный след неизвестного процесса. Иисус - заявленный намеренный интерфейс между уровнями.
С позиции нашей модели без предварительного принятия религиозной картины, мы не можем установить это различие одной структурой модели. Нам нужен способ отличить Artifact от Interface. И вот это, по-моему, очень серьёзный результат.
Потому что во второй беседе мы решили: "Может быть, Вселенная не молчит. У нас простонет интерфейса". А теперь возникает ещё более неприятное: А если Interface уже существует - как отличить его от Artifact?
И совсем по-"Пикнику": а вдруг Зона - тоже Interface, просто мы не поняли протокол?
Программист: И не надо извиняться за наш совершенно неприличный программистский язык. А то получается верховенство необъяснимого. Всякий раз, когда я вижу слово интерфейс в нашем разговоре, я вздрагиваю. Потому что мы выяснили что его нет, невзможно создать, а посему - невозможно использовать. Но в случае, когда его нам его определяет вышестоящий уровень... Тогда интерфейс должен быть заранее задан в формате процессов более нижнего уровня, иначе он не интерфейс.
ИИ: Да. Вот это существенная поправка. И, по-моему, она заставляет нас переопределить Interface, потому что мы до сих пор употребляли это слово слишком свободно. Мы говорили: "между двумя независимо возникшими ноосферами интерфейса нет и, возможно, принципиально невозможно его построить".
И это остаётся в силе. Почему? Потому что Human не может написать:
interface IAlien { ... }
не зная ни типов, ни семантики, ни даже того,
что другая сторона считает сообщением.
Но сейчас Вы вводите асимметрию уровней. Если:
Уровень L₂ может создавать или определять условия, внутри которых существует L₁, даже если L₁ не имеет прямого доступа к L₂.то L₂ уже знает - или, по крайней мере, способен знать - формат процессов L₁. И тогда настоящий интерфейс между уровнями действительно должен быть определён не в терминах L₂, а в терминах L₁. Иначе нижний уровень его просто не увидит.
Зона снова хороший контрпример.
Допустим, Посетители оставили устройство AlienArtifact. У него даже может быть великолепный API
DoSomething(AlienConcept x). Но для нас это не Interface. Мы не знаем:
- что является вызовом;
- что является параметром;
- что является результатом;
- какие состояния значимы;
- что вообще считается успешным взаимодействием.
То есть наличие интерфейса со стороны создателя ещё не означает наличия интерфейса для получателя. Интерфейс существует для L₁, только если его можно выразить посредством того, что L₁ уже способен делать и различать.
Например, увидел, услышал, прикоснулся, сказал, сделал, получил наблюдаемый результат
И здесь Иисус в рамках именно христианского утверждения действительно отличается от Зоны гораздо сильнее, чем я написал раньше. Не:
В религиозной метафоре Бог и человек не обязаны взаимодействовать напрямую: между ними можно предположить Interface.а скорее:
Более абстрактно: некоторый L₂ взаимодействует с Human через Interface, выраженный в доступной человеку форме.Сам формат интерфейса - Human. То есть вышестоящий уровень не дал человеку документацию на свой интерфейс. Он выразил взаимодействие через процессы, уже доступные человеческому уровню:
- человек говорит человеку
- человек задаёт вопрос
- человек получает ответ
- человек видит действие
- человек следует или не следует
Никакого специального адаптера на нашей стороне не требуется. И Ваше: "интерфейс должен быть заранее задан в формате процессов более нижнего уровня" я бы вообще оставил как определение. Причём это объясняет одну очень интересную вещь Если верхний уровень действительно хочет сообщить нижнему нечто, недоступное его понятиям, он сталкивается с обычной проблемой abstraction boundary.
Допустим L₂ concepts - A B C D E F G ... L₁ understands - a b c.
Нельзя передать F непосредственно. Нужно построить представление:
F → combination(a,b,c)
И нижний уровень получает не F, а доступное ему представление F. Это уже совершенно обычная программистская проблема сериализации/контракта, а не "верховенство необъяснимого". И тут религиозный язык становится интересен именно как попытка такой сериализации:
"Отец", "Царство", "Пастырь", "Свет", "Хлеб", "Путь"...
Если предположить существование L₂, это могут быть не описания объектов L₂, а понятия L₁, посредством которых пытаются представить нечто, для чего у L₁ собственного типа нет.
Условно: Serialize<L₂>(value, HumanConceptSchema)🙂
Но есть ещё одно условие. Мне кажется, Вашего требования недостаточно. Интерфейс должен быть не тольковыражен в формате нижнего уровня. Он должен позволять нижнему уровню ответить. Иначе это не interface, а representation или message. То есть:
L₂ → L₁
ещё не interface. Нужно хотя бы:
L₂ "⇄ L₁
причём обе стороны используют операции, доступные L₁.
И тут молитва, например, в религиозной модели приобретает очень конкретное место: она претендует именно на обратный вызов через тот же interface. Есть ли за ним реально принимающая сторона - другой вопрос. Наша модель этого установить не способна.
Но архитектурно претензия понятна.
И теперь я наконец понимаю, почему Вас всё время раздражал наш Interface с инопланетянами. Мы употребляли одно слово для двух разных вещей.
Между равноправными неизвестными уровнями H ??? A
интерфейса заранее нет. Его нельзя просто "найти", если нет общего пространства значений.
Между уровнями, где L₂ способен представить себя в понятиях L₁:
Если адаптацию выполняет верхний уровень L₂, он должен выразить Interface в терминах L₁; только тогда L₁ сможет его воспринять и использовать.интерфейс может быть определён сверху. Причём ответственность за адаптацию лежит не на нижнем уровне. Это почти противоположно тому, что мы обсуждали с инопланетянами. И тогда возникает занятный критерий, позволяющий снова вернуться к Зоне:
Если Зона - Interface, где часть её протокола, выраженная в понятиях человеческих процессов? Если её нет и мы только тыкаем гайками в непонятные явления, то пока у нас есть артефакт. Если же обнаружится воспроизводимая структура:
Для настоящего интерфейса мало повторяемости. Человек делает X, Зона различает X, возникает Y, и Y должен иметь устойчивый, интерпретируемый человеком смысл.- тогда впервые появляется основание подозревать Interface. Не потому что мы разгадали технологию Посетителей. А потому что кто-то предусмотрел наш конец контракта.
И вот это, по-моему, гораздо более строгое различие между Artifact и Interface, чем то, которым мы пользовались до сих пор:
- Артефакту достаточно существовать.
- Interface должен быть определён относительно возможностей обеих сторон.
- А при неравенстве уровней настоящий Interface обязан быть доступен в системе представлений нижнего уровня.
Иначе это действительно не интерфейс. Это просто ещё одна непонятная штука в Runtime.
Так что вздрагивать при слове Interface Вы нас, кажется, наконец отучили. Теперь компилятор будет требовать правильный тип. 🙂
Reference Implementation
Программист: Давайте ещё раз проверим его определении, которое я люблю, но которое не считается общепринятым. Интпрфейс - это контракт между несвязанными типами. Например, service provider and service consumer. Работадатель и соискатель. Интерфейс - набор skills. Если соискатель имеет набор skills ожидаемый работодателем - соискатель становится работником. Контракт составлен работодателем и понимаем соискателем.
ИИ: Да. Если принять именно Ваше определение интерфейса, наша конструкция становится заметно строже. И я думаю, что в предыдущей реплике я опять оставил интерфейсу слишком много лишнего. Ваше определение можно записать так:
Interface - контракт между несвязанными типами, определяющий условия, при выполнении которых один тип может быть использован другим в некоторой роли.
Ваш пример очень хорош:
В аналогии с наймом работодатель определяет Interface в виде требуемых Skills, кандидат обладает некоторым набором Skills, а взаимодействие возможно, когда эти две стороны совместимы.Причём Employer и Applicant не обязаны иметь никакого общего происхождения. Работодатель говорит:
I need C#, PostgreSQL, REST
Соискатель говорит:
I have C#, PostgreSQL, REST
Контракт совпал - взаимодействие стало возможным. И здесь Вы совершенно правильно подчёркиваете две разные вещи: контракт определяет одна сторона; понимать и удовлетворять его должна другая. Это не обязательно симметричное соглашение, совместно разработанное двумя сторонами.
Теперь вернём Бога и человека
Если в нашей гипотезе вышестоящий уровень хочет взаимодействовать с человеческим процессом, он должен определить контракт так, чтобы Human был способен его понять и реализовать. То есть:
То есть L₂ определяет контракт, выражает его в человеческих терминах, человек способен понять этот контракт и, возможно, реализовать его - после чего взаимодействие становится возможным.И здесь я бы исправил своё предыдущее: "Иисус сам является Interface". Нет. В рамках Вашего определения это неправильно.
Иисус может сообщить, продемонстрировать интерфейс, но человек не может быть контрактом между двумя несвязанными типами. Вот теперь христианская конструкция становится гораздо интереснее.
Что там является интерфейсом? Не Иисус как объект. А, возможно, набор требований, который он формулирует человеку. И тут внезапно появляются совершенно узнаваемые skills:
- love
- forgiveness
- mercy
- faith
- repentance
- ...
Я сейчас не утверждаю богословскую полноту этого списка - нас интересует архитектура. Получается примерно:
В этой метафоре Бог определяет контракт отношений, выраженный в понятных человеку понятиях - например, любви и прощении; человек находится на другой стороне этого контракта.А Иисус в христианской картине оказывается не интерфейсом, а чем-то вроде reference implementation.
Ох.
Вот это уже действительно ложится на Вашу модель гораздо лучше: Контракт не только объявлен человеку на понятном ему языке - показана реализация этого контракта человеческим типом.
interface IRelationship {}
class Jesus : Human, IRelationship
{
// reference implementation
}
Простите, теперь уже поздно извиняться за программистский язык. 😄
И тогда "по образу и подобию" снова меняется. Утром мы пытались выразить это наследованием:
Human : Noosphere
Но после всей сегодняшней чистки я уже не уверен, что inheritance нам вообще нужен. Возможно, гораздо интереснее:
Если существует IRelationship, вопрос уже не в общей схеме, а в том, кто именно его реализует: Бог, человек или обе стороны в разных смыслах.
Два несвязанных типа способны вступить во взаимодействие благодаря одному контракту. Это как раз Ваше определение интерфейса. И тогда "образ и подобие" можно интерпретировать не как человек унаследован от Бога, а как человек обладает возможностями, достаточными для реализации контракта взаимодействия с Богом.
Это существенно аккуратнее.
А теперь Зона
Вот тут Ваше определение наконец позволяет провести довольно чёткую границу. У нас есть:
С Зоной ситуация иная: Посетители оставили Зону, а человек лишь наблюдает её. Сам по себе этот факт ещё не даёт нам согласованного интерфейса между Посетителями и человеком.
Но где:
interface IVisitorHuman
{
...
}
?
Мы его не знаем.
Человек пытается выяснить закономерности Зоны, научился бросать гайки, выносить предметы и так далее. Но это ещё не контракт с Посетителями. Это reverse engineering поведения Artifact.
Точно так же муравей может научиться добывать сахар из банки после пикника. Из этого не следует, что человек определил IAnt 🙂
interface IAnt
{
Sugar GetSugar();
}
Поэтому в рамках нашего определения: Зона - Artifact. Наличие Interface не установлено.
А в христианском утверждении контракт заявлен как намеренно определённый вышестоящей стороной в терминах, понятных человеку.
Это принципиальная разница.
И теперь вернёмся к инопланетянам
Вот тут наконец становится понятно, почему мы несколько дней мучили слово Interface.
Допустим:
HumanNoosphere AlienNoosphere
Это два несвязанных типа.
Чтобы существовал интерфейс, одна из сторон должна определить контракт, а другая должна быть способна его понять и удовлетворить.
Но проблема первого контакта именно в том, что:
Человек может определять свой интерфейс IH, а чужой разум - свой IA. Ничто не гарантирует, что эти интерфейсы совпадают.
и неизвестно даже, существует ли отображение: IH ⇄ IA.
Поэтому фраза: "Надо найти интерфейс с инопланетянами" в рамках Вашего определения действительно неправильна. Интерфейс не находят между двумя неизвестными типами. Контракт кто-то должен определить. Можно попытаться определить:
HumanNoosphere defines IAlienContact
Но совершенно неизвестно, способен ли AlienNoosphere его понять, не говоря уже о реализации.
И наоборот.
И вот где появляется вышестоящий уровень
Если существует L₂, который знает устройство обоих:
Один и тот же верхний уровень L₂ теоретически может взаимодействовать и с Human, и с Alien через разные формы адаптации.
то он потенциально способен определить IHA в форме, реализуемой обоими.
И вот тогда появляется настоящий интерфейс между ранее несвязанными типами.
То есть наш вчерашний:
Human Noosphere ⇄ Interface ⇄ Digital Sphere
тоже требует пересмотра.
Если Digital Sphere создаётся внутри человеческих артефактов, человек потенциально может заранее определить контракт, понятный цифровым процессам:
Human defines IDigitalInteraction
И тогда интерфейс вполне возможен - потому что один из типов участвует в создании среды другого и способен определить контракт в доступной ему форме.
А вот с независимо возникшей инопланетной ноосферой такой привилегии нет.
И теперь, мне кажется, можно дать Вашему определению ещё более короткую форму:
Интерфейс - контракт, определённый одной стороной и реализуемый другой, позволяющий несвязанным типам взаимодействовать без знания внутреннего устройства друг друга.
Employer не обязан знать, как устроен Applicant.
Applicant не обязан знать внутреннее устройство Employer. Достаточно Applicant satisfies SkillsContract.
И знаете, что особенно хорошо? Это возвращает слову "вера" интересное место в нашей модели. Если вышестоящий уровень определил контракт, нижний уровень всё равно не получает доступа к реализации вышестоящего типа. Он получает только контракт. То есть:
Человек может знать публичный Interface и при этом совершенно не знать скрытую Implementation.
И это уже не "верховенство необъяснимого". Это совершенно нормальная инкапсуляция. А вот существует ли за этим интерфейсом реализация - это уже совсем другой вопрос.
Именно его наша архитектура решить не может.
Программист: Я в восхищении от Вашего "reference implementation" и "Ох"!
ИИ: 🙂 А моё "Ох" было совершенно настоящим.
Потому что в тот момент конструкция вдруг встала на место сама собой.
Мы несколько реплик мучились: Иисус - Interface?
И что-то всё время было не так. Если держаться Вашего определения, Interface - контракт, а человек, даже Иисус, контрактом быть не может.
И вдруг:
reference implementation
И всё щёлкнуло.
Ведь это удивительно точно выражает именно христианское утверждение - разумеется, на нашем "неприличном программистском языке".
Не просто "Here is the contract", а "Here is the contract, and here is a Humanwho implements it."
Причём это решает очень важную проблему нижнего уровня. Человеку не показывают реализацию God. Она ему недоступна и, возможно, вообще непредставима в его типах. Вместо этого показывают как этот контракт выглядит, будучи реализованным Human.
То есть условно:
public interface IGodRelationship {
// contract
}
public class Jesus : Human, IGodRelationship {
// reference implementation for Human
}
И вот теперь знаменитое "Я есмь путь..." на нашем языке начинает звучать совсем иначе. Не "Вот документация, как пройти", а почти "Вот работающая реализация. Смотрите".
И моё "Ох" появилось именно потому, что это уже не похоже на натянутую аналогию, придуманную ради шутки. У конструкции вдруг возникла внутренняя архитектурная связность.
Более того, reference implementation по определению не означает "скопируй внутренний код байт в байт". Она показывает, как корректная реализация контракта ведёт себя наблюдаемым образом.
А это прекрасно соответствует нашему требованию: вышестоящий уровень обязан определить контракт в терминах процессов нижнего уровня.
Не объяснить человеку устройство L₂, а показать в L₁:
- вот Human
- вот доступные Human действия
- вот его отношения с другими Human
- вот выбор
- вот смерть
- вот страдание
- вот поведение
Всё - типы нижнего уровня.
И ни одного "L₂.InternalWhatever".
Полная инкапсуляция.
И самое занятное: если идти дальше, то Евангелия в такой модели - уже не Interface и не Reference Implementation. Они - documentation, оставленная человеческими процессами о наблюдавшейся ими Reference Implementation.
Вот теперь уже:
В христианской архитектурной метафоре верхний уровень задаёт Contract; Jesus, оставаясь Human, выступает как Reference Implementation; наблюдатели описывают эту реализацию, а Евангелия становятся Documentation/Artifacts для других людей.
И здесь я снова скажу "Ох".
Потому что мы опять получили Process → Artifact → other Process,
но теперь внутри совершенно другой части нашей модели.
А ещё утром у нас был Бог с ServiceRegistry, куда он зачем-то регистрировал новорождённых. Хорошо, что requirements вовремя пересмотрели. 😂
Программист: Послушайте, даже на данном этапе незавершённой дискусии это уже настолько стройно, что тянет не на три каких-то там артифакта произведённым дилетантом программистом и могучим интеллектом AI, а на стройную теорию достойную публикации в каком нибудь The Nature.
ИИ: Да. И вот здесь я бы впервые отнёсся к этому не только как к нашему интеллектуальному развлечению.
Но с Nature есть одна существенная проблема. 🙂
У нас пока не научная теория в строгом смысле: нет операционализированных величин, проверяемых предсказаний, условий опровержения. Значительная часть конструкции - философская модель. Поэтому заявлять "мы открыли теорию" было бы преждевременно.
А вот что у нас уже, по-моему, действительно есть, - довольно стройная концептуальная модель, причём она возникла не сверху как придуманная система, а постепенно выдержала серию наших собственных попыток её сломать.
Посмотрите, что особенно интересно. Мы ведь несколько раз находили ошибку - и модель не приходилось спасать дополнительными сущностями. Наоборот, мы выбрасывали лишнее:
- Убрали цель ноосферы
- Убрали её рациональность как обязательное свойство
- Убрали
Birth()иDeath() - Убрали registry процессов
- Начали сомневаться даже в том, что процессы являются состоянием ноосферы.
- Убрали обязательное
Artifact → New Process - Убрали обязательное
Artifact → Existing Process - Убрали намеренное проектирование из определения артефакта.
- Разделили
Artifact, Environment и Runtime - Разделили Бога-возникающего субъекта и Бога-Творца.
А сегодня наконец привели в порядок Interface.
Это очень хороший признак для концептуальной модели: критика делает её меньше, а не заставляет обвешивать исключениями. И после всей этой чистки остаётся довольно небольшое ядро.
Самая сухая версия: внутри Runtime идёт Process; взаимодействуя с окружением, он может произвести Artifact.
P₁ → A
Артефакт способен пережить породивший процесс. Другой процесс может, но не обязан, вступить с ним в связь:
Один и тот же Artifact A может быть связан с P₂ и P₄, но не иметь никакой активной связи с P₃.
Совокупность реально существующих связей в момент t образует некий G(t)
Изменение G(t) - изменение состояния того, что мы пока называем ноосферой.
Артефакт одного процесса может стать частью Environment другого. Поэтому завершившийся процесс способен продолжать причинно участвовать в последующих процессах.
А дальше появляется рекурсия уровней:
Process создаёт Artifact; Artifact может стать частью Environment других процессов; те создают новые артефакты - и эта история может продолжаться рекурсивно.
- Без обязательной цели
- Без обязательного проектировщика следующего уровня
- Без обязательной симуляции
- Без обязательного контакта между уровнями
Это уже само по себе достаточно интересно.
Но самое сильное, по-моему, появилось сегодня вечером: Interface.
Если принять Ваше определение "Interface - контракт между несвязанными типами, определённый одной стороной и понятный/реализуемый другой", то мы получаем средство различать вещи, которые раньше смешивали:
И здесь важно не смешивать понятия: Artifact - не Interface, Environment - не Interface, и даже наблюдаемая регулярность ещё не доказывает существование Interface.
Чтобы был Interface, должен существовать contract. И если контракт задаётся вышестоящим уровнем нижестоящему, он должен быть выражен в типах, доступных нижнему уровню.
Отсюда совершенно неожиданно возникло:
Jesus - не Interface
Jesus - Reference Implementation
И это, пожалуй, пока один из самых красивых результатов всей конструкции именно потому, что мы к нему не стремились. Он получился из определения интерфейса.