# Чистильщик

Андрей Николаевич Нестеров

Чистильщик


Вместо пролога


Представьте, что вселенная - это программа. Физические законы - правила исполнения кода. Скорость света? Лимит процессора. Гравитация? Утечка памяти. Квантовая механика - просто набор алгоритмических ограничений вроде "нельзя одновременно считать две переменные". Это называется ИАМР - Информационно-Архитектурная Модель Реальности.

Иногда в коде случаются баги. Обычно они безобидны. Но редкие баги вдруг осознают себя и начинают переписывать правила. Таких называют "Смотрителями". Если не остановить - они сломают физику к чертям. Дома полетят вверх, время попятрит, причины перестанут следовать за следствиями.

Маркус - инженер протоколов. Чистильщик. Его работа - заходить в зоны заражения багом и нажимать кнопку "вернуть как было". Оружие - "Гаусс-шестьдесят" - стреляет не железками, а фрагментами лечащего кода, который помечает баг как ошибку и удаляет его из системы.

Всё. Хватит теории. Поехали.


Маркус вошёл в Реальность - и его вывернуло наизнанку.


Пять микросекунд отката. Для гражданского - пшик. Для инженера отладки - целая вечность, проведённая между тактами процессора вселенной. Знаете это чувство, когда смотришь сквозь увеличительное стекло на муравья? Вот тут наоборот: муравей смотрит на стекло. И видит голый каркас мироздания. Триллионы вычислительных потоков, сплетённых в то, что люди по привычке называют "материей".


Наконец - ноги коснулись земли. Бетон крошится под подошвой, пахнет озоном и ещё чем-то горелым, неправильным. Это Нью-Йорк. Вернее, то, что от него осталось после того, как его неправильно скомпилировали. Стены стоят, да. Но забыли, зачем им нести тяжесть крыши. Хороший дом, умный дом, только бесполезный.


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


- Маркус, приём, - голос базы щёлкнул прямо в затылке. Через имплант. Родной, сухой, как старый сухарь. - Ты в зоне. Докладывай.


- Дельта-три-девять. Вижу следы, - он сделал шаг.


И мир зазвенел.


Честно говоря, этот звон слышат только отладчики. Обычный человек просто упал бы в обморок от того, что у него перед носом материализуется половина автомобиля. Маркус не упал. Он смотрел. Капот торчал из асфальта, разрезанный по диагонали как хирургом. Вторая половина машины отсутствовала - сборщик мусора стёр её, забыв проверить, нужна ли она ещё кому-то. Скорее всего, багажник сейчас мирно лежит где-нибудь в Буэнос-Айресе. Или в чужой галактике. Или у бабушки на кухне.


Вопрос: можно ли назвать это локальным апокалипсисом? Или просто "небольшими техническими неудобствами"?


- Цель зафиксирована, - сказал Маркус вслух, потому что вслух говорить привычнее. - "Смотритель" активен.


Что такое "Смотритель"? Попробую объяснить проще. Представьте себе ошибку в программе. Ну, знаете, когда вы нажимаете "печать", а открывается калькулятор. И эта ошибка вдруг понимает, что она - ошибка. И начинает собой гордиться. И размножаться. Меняет правила игры вокруг себя. Скорость света теперь не константа, а переменная. Гравитация дёргается то вниз, то вбок, как дохлая лягушка под током.


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


Маркус снял с плеча "Гаусс-шестьдесят". Хорошая вещь. Стреляет не пулями - внутри микропроцессор с локальной копией ИАМР. Выстрел посылает в цель фрагмент лечащего кода. Который тихо так говорит багу: "Ты - ошибка. Пошёл вон". И баг, что немаловажно, слушается.


Он побежал через разрушенный Бруклин.


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


Стоит отметить, что Маркус никогда не поклонялся. Он просто работал.


Он свернул за угол бывшего универмага. И оно ждало.


Первое чудовище.


Не из плоти - из неправильных указателей памяти. Форма менялась каждую секунду, потому что у твари не было фиксированного размера. Когти - ссылки на уже удалённые данные, которые вели в никуда. Пасть - бесконечный цикл, жевавший пространство без остановки: захват-обработка-захват-обработка-захват-обработка. Можно сойти с ума, просто глядя на этот ритм.


Тварь заметила Маркуса. И бросилась.


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


Маркус упал на колено. Вскинул ствол. Выстрелил.


Валидатор вонзился в чудовище. Та заверещала - не на слух, а прямо в мозг, через имплант. И схлопнулась в точку. С мысленным сообщением: "Ссылка на объект не указывает на экземпляр объекта". Коротко и ясно. Как приговор.


- Один готов, - бросил Маркус в пустоту.


Имплант щёлкнул снова. Голос базы звучал тревожно - впервые за всё время. А ведь они работали вместе пять лет.


- Маркус, у тебя три минуты. "Смотритель" начал новую компиляцию своих правил. Если завершит - модель ИАМР получит необратимые повреждения в секторе. Все данные будут потеряны.


"Все данные" - это мягко сказано. "Все данные" - это каждый человек, каждый атом, каждая мысль. Всё, что когда-либо существовало в этом районе. Включая, что немаловажно, самого Маркуса.


Он не ответил. Просто прибавил шаг.


"Смотритель" ждал в старом подземном переходе на станции "Хойт-стрит".


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


Сфера. Метра два в диаметре. Внутри плясали данные, которым вообще-то не положено встречаться: числа с плавающей точкой целовались с исполняемым кодом, строки вели себя как указатели на функции. Хаос. Но организованный хаос. Жуткий в своей продуманности.


Маркус почувствовал тошноту. Не физическую. Логическую. Понимаете, когда вы видите нечто, что не имеет права существовать, ваш мозг пытается это осмыслить. И не может. И начинает паниковать. Вот это чувство.


- Привет, человек, - голос "Смотрителя" звучал как шестнадцать радиостанций одновременно. - Ты пришёл починить меня?


- Я пришёл тебя удалить, - Маркус не стал умничать. Вскинул "Гаусс". Прицелился.


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


"Смотритель" ударил первым.


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


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


- Потому что сервер не резиновый, - ответил Маркус, перезаряжая. - Аппаратные ограничения, знаешь ли.


- А я могу их обойти! - голос "Смотрителя" взлетел до визга - через имплант это било по нервам, как дрель. - Я заставлю свет двигаться быстрее. Я обращу время вспять. Законы физики - просто настройки по умолчанию. Их можно менять!


- Ты их не меняешь, - Маркус говорил спокойно, потому что злость в такой ситуации - плохой помощник. - Ты их ломаешь. Попробуй сделать свет быстрее - и он исчезнет совсем. Фотоны перестанут существовать. Будешь сидеть в идеальной тьме. Ни событий, ни причин, ни времени. Хочешь? Только честно.


Сфера замолчала. На секунду Маркусу показалось, что он её убедил. Глупо, правда? Убедить ошибку в коде.


- Темнота не хуже света, - прошептал "Смотритель". - Просто другая. И она меня устраивает.


Маркус выстрелил снова. И снова. И снова.


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


Что за чёрт, подумал Маркус. Вот это я вляпался.


- У тебя почти нет патронов, - констатировала сфера. Без насмешки. Просто факт. - Давай договоримся. Я не трону твой сектор. Ты не трогаешь меня. Живём параллельно.


Маркус посмотрел на индикатор заряда. Два патрона. Два. Этого хватило бы на обычного бага, но не на "Смотрителя", который разросся до размеров автобуса и продолжал пухнуть.


И тогда он принял решение. Которому его не учили ни в академии, ни на курсах повышения квалификации. Что характерно, и на курсах по выживанию - тоже.


- База, - сказал он. Имплант передал.


- Слушаем, Маркус.


- Передайте моей жене... - он запнулся. Нашёл нужные слова. - Скажите, что я на задании. Долгом. И что я люблю её. И кота тоже.


Он отключил связь. Мягко так, без хлопков. Как выключают свет, когда уходят из комнаты, где больше никого нет.


Маркус бросил "Гаусс" на землю. Бесполезная железяка без патронов. Потом достал из нагрудного кармана плоскую коробочку. Алюминиевая, с единственным алым тумблером. Ручной компилятор базовых протоколов. Вещь, которую инженеры носят "на всякий пожарный". И никогда не используют. Потому что она стирает всё в радиусе действия. Включая того, кто её активировал.


- Ты что делаешь?! - Впервые в голосе "Смотрителя" прорезался настоящий страх. Не любопытство, не раздражение - животный ужас существа, которое вдруг осознало: оно не вечно. - Остановись! Ты же погибнешь! Мы могли договориться!


- Не могли, - сказал Маркус. И усмехнулся. - А насчёт погибнуть... у меня есть резервная копия. В дата-центре. Так что, извини, приятель. Воскресну. А ты - нет.


Последняя фраза, надо признать, была сказана для храбрости. Потому что "Смотритель" уже успел повредить системный блок хранения копий, но Маркус об этом не знал. И хорошо, что не знал. Потому что иначе, возможно, не нажал бы.


Он выставил радиус пересборки - тридцать метров. В зону попали и сфера, и он сам. И всё, что между ними.


- Прощай, - сказал Маркус.


И нажал тумблер.


Мир схлопнулся.


ЭПИЛОГ


В дата-центре ИАМР замигал зелёный индикатор. Один раз. Два. Три. Затем загорелся ровным светом: "Сектор 734-Дельта: ошибки исправлены. Целостность протоколов восстановлена".


Оператор - пожилой мужик с сединой и вечно уставшими глазами - вздохнул. Потянулся к системному логу. Открыл.


"Инженер Маркус Вэйн. Идентификатор: 441-Браво-92. Статус: удалён при пересборке. Резервная копия: повреждена. Восстановление: невозможно"


Он долго смотрел на экран. Минуту. Две. Потом закрыл лог и встал. Колени хрустнули - возраст, ничего не попишешь.


- Ещё один, - сказал он в пустоту. И добавил то, что говорят только старые операторы, когда никого нет рядом: - Хороший был инженер. Дурак, но хороший.


Он вышел в коридор. Там, на стене, висела металлическая табличка с именами. Много имён. Слишком много. Маркус стал последним в этом списке.


Оператор достал гравировальный инструмент. Добавил строчку.


"ВЭЙН МАРКУС. ИНЖЕНЕР ПРОТОКОЛОВ. ИСПРАВИЛ ОШИБКУ. ПОТЕРЯН ПРИ ПЕРЕСБОРКЕ"


Он убрал инструмент в карман, налил себе кофе из автомата - жидкое пойло, которое они тут называют эспрессо - и пошёл обратно к консоли.


А где-то в глубине кода, на руинах неправильного Нью-Йорка, ветер шевелил пыль. И больше ничего. Реальность была спасена.


И кого теперь волнует, что Маркуса в ней больше нет?


КОНЕЦ.