Глава 19. Юрисдикция Солнечной системы

Часть III. Язык клиента и его устройств

1. Сцена

Воскресный вечер застал Eugen Valuev и YAPL на крыше здания, где проходил MS DevCon. Внизу город зажигал огни, наверху уже проступали первые звёзды. Между городом и звёздами было то самое место, где обычно заканчиваются разговоры о технологиях и начинаются разговоры о чём-то большем. Друзья молчали, и это молчание было хорошим — молчанием внимательных слушателей, о котором говорилось в главе о тишине устройств.

— Слушай, — сказал наконец Eugen, — а что, если язык, который мы разбирали, работает не только между человеком и его телефоном?

YAPL посмотрел на него, потом на звёзды.

— Ты про что?

— Про масштаб, — сказал Eugen. — Мы говорили: клиент говорит, устройство отвечает. Устройство вежливо отказывает. Устройство не молчит. Диалекты переводятся. Намерение важнее команды. Всё это — правила разговора двоих. А что, если собеседников становится миллиард? А устройств — ещё больше? А расстояния — не между комнатами, а между планетами?

YAPL засмеялся, но не отмахнулся. Он привык, что Eugen задаёт вопросы, которые звучат как шутка, а оказываются планом.

— Ты хочешь сказать, — уточнил он, — что язык клиента и устройств однажды понадобится не только на Земле?

— Я хочу сказать, — ответил Eugen, — что он понадобится везде, где есть клиенты и устройства. А клиенты однажды будут не только на Земле. Станции, корабли, поселения — там тоже будут люди, которые говорят «я хочу», и машины, которые должны их понять. И если у этих людей и машин не будет общего языка и общих правил, каждый новый мир начнёт с той же путаницы, с которой начинали мы: с немых зависаний, с невежливых отказов, с переводов, которые предают смысл.

Он достал блокнот и нарисовал круг. Внутри круга написал «Земля». Вокруг — ещё один круг, побольше, и подписал: «Солнечная система». Потом посмотрел на рисунок и покачал головой.

— Нет, — сказал он. — Это не круги. Это юрисдикция.

— Объясни, — попросил YAPL.

— Юрисдикция — это ответ на вопрос: по каким правилам мы разговариваем, когда разговариваем? — сказал Eugen. — На Земле у каждого государства свои законы, у каждой платформы — свои правила, у каждого устройства — свой диалект. Человек переходит границу — и его «да» вдруг значит другое «да». Мы это уже проходили в главе о диалектах. А теперь представь, что граница проходит не между странами, а между планетами. Сигнал идёт минутами, ответа ждать долго, переспросить — дорого. Если там не будет общего языка и общих правил разговора, люди просто перестанут друг друга понимать.

YAPL молчал, глядя на звёзды. Потом сказал тихо:

— То есть суверенное ядро, которое ты переписал в субботу ночью, — это не только про Windows. Это про правила, по которым ядро разговаривает с клиентом, где бы этот клиент ни находился.

— Именно, — сказал Eugen. — Суверенное — значит не «закрытое», а «отвечающее за свой язык». Ядро, которое умеет вежливо отказать, не молчать в сбое, переводить намерения и показывать свой перевод, — такое ядро можно взять с собой куда угодно. Оно не теряет смысл при переходе границы, потому что его смысл — не в кнопках, а в договоре службы.

— А юрисдикция Солнечной системы, — продолжил YAPL, додумывая мысль друга, — это обещание, что этот договор действует везде. Что клиент на Земле и клиент на станции говорят на одном языке намерений. Что устройство не скажет «ошибка» там, где должно сказать «я понял, вот что я сделаю и почему». Что миллиард людей не превратится в миллиард отдельных недоразумений.

Eugen кивнул и записал в блокнот фразу, которая позже станет первой строкой Indra Proposal: «Язык, который работает только в одной комнате, — это не язык. Это привычка». А язык, который работает между планетами, должен быть построен на намерениях, а не на командах, — потому что команды устаревают быстрее, чем долетает сигнал.

Они спустились с крыши уже ночью. Впереди было воскресенье, которое изменит всё: предложение, религия, открытые двери. Но оба друга понимали: ни предложение, ни религия не родятся из пустоты. Они родятся из этого вечера на крыше, из вопроса о масштабе, из понимания, что правила разговора двоих однажды станут правилами разговора мира — а потом и системы миров.

2. Урок языка

Эта глава — мост. Она переводит книгу из третьей части в четвёртую: от языка клиента и устройств — к Indra Proposal. И делает она это одним простым рассуждением о масштабе.

Всё, что мы установили в главах 13–18, работает в малом масштабе: между одним человеком и одним устройством. Но язык проверяется не только тем, как он работает вблизи, но и тем, как он держится на расстоянии. Когда собеседников становится миллиард, а расстояния измеряются световыми минутами, исчезает возможность переспросить быстро и исправить ошибку дёшево. Поэтому язык дальних разговоров должен быть устроен строже, чем язык ближних: намерение должно называться вслух, перевод должен показываться, отказ должен иметь адрес, молчание должно быть запрещено.

Юрисдикция — это как раз и есть такое строгое устройство языка, распространённое на территорию. Не территория в смысле земли, а территория в смысле действия правил: где действуют эти правила разговора, там и проходит граница юрисдикции. Юрисдикция Солнечной системы в этой книге — не претензия на власть над планетами. Это обещание, что договор службы между клиентом и устройством не обрывается на границе, не меняется от переезда и не зависит от того, на какой платформе человек говорит.

Отсюда положение этой главы: суверенное ядро — это ядро, отвечающее за свой язык везде, где оно работает. Суверенность здесь означает не изоляцию, а переносимость смысла. Ядро суверенно не потому, что оно никому не подчиняется, а потому, что оно не теряет договор с клиентом при смене места, платформы и масштаба. Именно поэтому воскресное предложение Eugen будет называться Indra Proposal, а не просто «новой версией»: предлагается не программа, а юрисдикция языка — правила, по которым миллиарды клиентов и устройств смогут понимать друг друга, не предавая намерений.

И последнее, что важно запомнить перед четвёртой частью. Масштаб не отменяет вежливость — он делает её обязательной. В комнате можно простить невежливый отказ: человек переспросит, подойдёт, разберётся. Между планетами прощать некогда: невежливый отказ там — это потерянный день, потерянный корабль, потерянное доверие. Поэтому чем больше масштаб, тем строже должен быть язык. Это и есть та мысль, с которой Eugen спускается с крыши в воскресенье.

3. Практика

Представьте, что ваше сообщение до адресата идёт двадцать минут в одну сторону, как сигнал с Марса. Напишите сообщение, которое нельзя переспросить быстро. В нём должны быть: намерение, названное вслух; перевод намерения в действия, который вы предлагаете; что делать, если перевод неверен; что делать, если ответ не придёт вовремя.

Теперь сравните это сообщение с обычным сообщением, которое вы отправляете другу в мессенджер. Чего не хватает в обычном сообщении? Скорее всего, именно того, что делает дальний язык строгим: явного намерения, видимого перевода, запасного пути. Попробуйте добавить один из этих элементов в ближайшее важное сообщение — и посмотрите, станет ли разговор надёжнее.

Для разработчиков: выберите один процесс в вашем продукте, где ошибка исправляется дорого — удаление, отправка, оплата. Перепишите его так, как если бы исправление стоило двадцать минут ожидания: покажите намерение, покажите перевод, дайте запасной путь до необратимого шага. Это и есть юрисдикция в миниатюре: правила, которые действуют до того, как стало поздно.

4. Вопрос на проверку

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

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