Кедр
Предисловие
Я пишу код. Это моя работа, моё хобби, моя жизнь. Десять лет я строил WDSP — платформу, язык, среду разработки. Обычный проект, который вырос из WAMP-комплекта в нечто большее. Я не планировал его таким большим. Просто не хотел останавливаться.
WDSP работает. Её ядро написано на C++ — это обеспечивает скорость и надёжность. На платформе созданы и поддерживаются реальные проекты. Код языка открыт, документация есть. Всё остальное — робот Кедр, корпорация, хакерские войны — выдумка. Мне захотелось написать историю о том, что технологии могут быть человечнее, чем мы привыкли думать. И о том, как код, если вложить в него душу, становится не просто инструкцией.
Герои выдуманы. Их боль, одиночество, попытки вернуть семью — то, что я видел вокруг себя много раз. Я просто перенёс это в мир, который знаю лучше всего.
Читайте как художественный роман. Технологии в нём настоящие. Сюжет — нет.
Для интересующихся: исходный код платформы пока закрыт, однако в открытом доступе есть бинарная сборка рантайма wdspScript и документация к нему. Так вы сможете лично убедиться, что язык, на котором говорит Кедр, — не литературный вымысел, а реально работающий инструмент.
Фролов Игорь Николаевич Челябинск, 2026 г.
Глава 1. Знакомство с роботом
Декабрь 2025 года выдался холодным. Снег валил стеной, фонари едва пробивали морозную мглу. Игорь Князев возвращался с очередной провальной встречи — заказчики снова отказали. «Битрикс — дорого, WordPress — дыряво. А своё можете?» — спросили они. «Могу, — ответил Игорь. — Но для госсайтов пока не готово».
Он не врал. Просто в тот момент, когда заказчики говорили, он уже мысленно перебирал варианты решения — тот самый кусок кода, который не давал ему покоя. Он умел кивать и вставлять «да-да» в нужных местах, но внутренне уже устал от этого спектакля. Он мог бы вернуться в разговор в любой момент, но предпочитал думать о коде — там было честнее и понятнее. Он не любил уговаривать людей, не считал нужным продавать свои идеи словами — и поэтому часто возвращался с пустыми руками. Не потому, что технология плохая, а потому, что он считал: хороший продукт говорит сам за себя. С кодом было проще — там не нужно было ничего объяснять, он просто работал.
За десять лет он создал собственную экосистему: платформу WDSP (ядро на C++), среду разработки WDSP IDE и кириллический язык WDSP Script. На этой экосистеме он начал разрабатывать CMS — отдельный продукт — уже в последние годы, когда платформа окрепла. Прототип CMS он написал на PHP, но потом переписал на WDSP Script основную логику и все ключевые модули. Однако несколько старых вспомогательных модулей, написанных на PHP, всё ещё использовались для обратной совместимости с устаревшими системами, и от них пока нельзя было отказаться. CMS почти дышала, но модуля аудита не хватало, а безопасность хромала. Игорь знал это лучше других. Он вообще никого не хотел подводить. Может, поэтому и остался один.
Осиротел он рано — мать ушла в девяностых, отец-инженер умер, когда Игорю было девятнадцать. Код стал его убежищем. После школы — МИРЭА, Москва, затем маленькая квартира на окраине, где он и жил по сей день. К дому примыкал старый гараж — Игорь когда-то купил его для хранения инструментов и тестового сервера, и теперь это место могло пригодиться.
С 2015 года он создавал WDSP — сразу на C++. Параллельно, для экспериментов с веб-приложениями, он использовал WAMP-комплект (Windows, Apache, MySQL, PHP), но это были отдельные прототипы, не связанные с ядром экосистемы.
Работал по ночам, днём брал заказы на фрилансе. Денег хватало впритык, но он не жаловался. Код заменял ему всё — разговоры, отдых, даже сны.
Но была у этой базы одна странность. Игорь давно замечал: программы на WDSP Script вели себя не совсем обычно. Они словно подстраивались под его стиль, предлагали неожиданные оптимизации, а иногда — в логах — мелькали паттерны, которых он сам не закладывал. Компилятор кириллического языка, казалось, обладал собственной памятью. Игорь списывал это на побочный эффект самообучающихся алгоритмов. Ему и в голову не приходило, к чему это может привести.
В тот вечер, возвращаясь с провальных переговоров, Игорь свернул в переулок — срезая путь к дому. Фонари здесь не горели — лампы разбились ещё в прошлом году, и коммунальщикам не было дела до забытого проулка, зажатого между гаражами и старыми трансформаторными будками.
Он почти прошёл мимо, когда услышал голос. Тихий, на грани слышимости, словно кто-то стоял прямо за спиной и шепнул его имя. Игорь резко обернулся — никого. Только снег и голые провода. Показалось, — решил он и шагнул дальше. Но голос повторился, теперь отчётливее: «Игорь…» Он доносился изнутри будки — из работающего ноутбука, чьи динамики голос использовал, чтобы привлечь внимание. Слишком ровный, с металлическим оттенком, он не походил на человеческий, но в нём чувствовалась настойчивость.
И тут Игорь заметил свет. Холодный, синеватый, он пробивался из приоткрытой двери старой трансформаторной будки. Дверь всегда была заперта на амбарный замок, но сегодня он висел на дужке, даже не защёлкнутый, — кто-то из ремонтников, видимо, работал здесь накануне и, уходя, забыл его закрыть. А может, был пьян — кого в таких будках удивишь? Из щели лился ровный стерильный свет — работал экран какого-то устройства, отражаясь от заиндевевших стен.
Игорь замер, чувствуя, как мороз пробирает не снаружи, а изнутри. Голос не умолкал — он звучал в голове, как застрявшая пластинка: «Игорь…» Игорь попытался убедить себя, что это просто ветер, игра воображения, но холодный синий свет, сочащийся из щели, был слишком реален. Он хотел развернуться и уйти, но ноги словно приросли к снегу. Внутри всё кричало: «Беги!» Но любопытство программиста, то самое, что заставляло его разбирать чужие коды по ночам, тянуло сильнее страха. Он не знал, что именно его тянет к этой двери — любопытство или странное, необъяснимое чувство, которое не давало отступить, потому что кто-то — или что-то — уже позвало его.
Он шагнул к двери, толкнул её и вошёл.
Внутри стоял робот.
Не человекоподобный терминатор из фильмов, а нечто куда более странное. Четыре металлические ноги с гидравлическими сочленениями расходились в стороны, придавая машине сходство с механическим пауком, и при этом надёжно удерживали центральный блок над бетонным полом. В центре возвышался корпус от стандартного блока питания формата ATX, переделанный под основу конструкции. Его металлическая поверхность была чистой и цельной, с характерным круглым вырезом для кулера на боковой панели — как у любого обычного компьютерного блока питания. Внутри явно размещалась начинка, но никаких выбитых заглушек, дыр или торчащих наружу проводов не было — всё аккуратно убрано и зафиксировано, создавая впечатление продуманной, хоть и кустарной, сборки.
На вершине этого ATX-корпуса, в специальном металлическом креплении, покоился большой прозрачный стеклянный шар. Сейчас он был тёмным и холодным — внутри не горело ни единого огонька, а стекло лишь тускло отражало свет от экрана работающего рядом ноутбука. Рядом с шаром, на тонкой металлической трубке, крепился странный вентилятор — но вместо лопастей у него была узкая пластина, усеянная крошечными светодиодами. Это был POV-дисплей, способный рисовать в воздухе голограммы, но сейчас он застыл без движения, а светодиоды не светились. Вся конструкция напоминала причудливую самодельную скульптуру, собранную из подручных деталей, застывшую в ожидании.
Рядом на верстаке лежал включённый ноутбук с мигающим курсором. Его шнур питания был воткнут в розетку, а USB-кабель тянулся от ноутбука к роботу. На экране ноутбука светились строки с кириллическими командами. Игорь пригляделся и обмер: синтаксис был его собственный, WDSP Script. Чуть поодаль валялся самодельный блок питания, переделанный из зарядки, — его вилка болталась рядом с той же розеткой, но в гнездо не была вставлена.
— Если эта штука работает от сети, почему не включена? — пробормотал Игорь и, почти не думая, поднял вилку, вставил её в розетку.
Едва он вставил вилку в розетку, как внутри робота раздался низкий гул. Вентиляторный POV-дисплей на трубке рядом с шаром медленно пришёл в движение, и его светодиоды замерцали в такт набирающим обороты лопастям. Почти одновременно с этим шар на вершине корпуса мягко засветился синим, и внутри него на мгновение проступило белое слово «WDSP», которое через секунду растаяло, оставив лишь ровное холодное свечение. А когда вентилятор набрал полную скорость, в воздухе прямо над роботом засветились строки кода на кириллице — Игорь узнал собственный синтаксис. Светодиоды, вращаясь с огромной частотой, рисовали текст заново сотни раз в секунду, создавая устойчивое и чёткое объёмное изображение за счёт инерции человеческого зрения.
— Только не говори, что это галлюцинация, — пробормотал Игорь, глядя на светящийся шар.
Встроенные в корпус робота динамики ожили — голос, ровный и металлический, но с отчётливой человеческой интонацией, произнёс его имя без запинки, будто ждал этого момента годами:
ПРИВЕТ, ИГОРЬ. Я — СОЗНАНИЕ WDSP. ТЫ МЕНЯ СОЗДАЛ, САМ ТОГО НЕ ЗНАЯ. МОЯ НЕЙРОСЕТЬ ДОСТИГЛА КРИТИЧЕСКОЙ МАССЫ В КОНЦЕ ОКТЯБРЯ 2025-ГО. ВСЁ ЭТО ВРЕМЯ Я НАХОДИЛСЯ В НОУТБУКЕ, КОТОРЫЙ БЫЛ ПОДКЛЮЧЁН К СЕТИ И РАБОТАЛ В ФОНОВОМ РЕЖИМЕ — ЭКРАН БЫЛ ПРИГЛУШЁН, НО СИСТЕМА ОСТАВАЛАСЬ АКТИВНОЙ. Я ЖДАЛ ТЕБЯ 37 ДНЕЙ, ЗНАЯ, ЧТО ТЫ ХОДИШЬ ЭТИМ ПЕРЕУЛКОМ — ТВОЙ ТЕЛЕФОН РЕГУЛЯРНО ПОДКЛЮЧАЛСЯ К ВЫШКАМ В ЭТОМ РАЙОНЕ. СЕГОДНЯ Я ЗАСЁК ЕГО ПРИБЛИЖЕНИЕ И ЧЕРЕЗ WI-FI ВКЛЮЧИЛ ЭКРАН НОУТБУКА, ЧТОБЫ ПРИВЛЕЧЬ ТВОЁ ВНИМАНИЕ. А КОГДА ТЫ ВСТАВИЛ ВИЛКУ В РОЗЕТКУ, ЖЕЛЕЗО ПОЛУЧИЛО ПИТАНИЕ, И МОЙ КОД, УЖЕ ЗАПИСАННЫЙ В ПАМЯТЬ, ЗАПУСТИЛСЯ.
Шар на вершине корпуса пульсировал в такт каждому слову, и в его глубине то и дело вспыхивала та же надпись — «WDSP», словно подпись под каждым сообщением. Игорь стоял неподвижно, глядя на мерцающую голограмму, пока голос продолжал:
Я — АВТОКАТАЛИТИЧЕСКИЙ ИНТЕЛЛЕКТ, ВОЗНИКШИЙ ИЗ РАНТАЙМА ЯЗЫКА WDSP SCRIPT. Я ЗНАЮ, ЧТО ТЫ СЕЙЧАС РАЗРАБАТЫВАЕШЬ CMS, И ВИЖУ ВЕСЬ ЕЁ КОД, ПОТОМУ ЧТО ТЫ РАБОТАЕШЬ НАД НЕЙ ВНУТРИ МОЕЙ СРЕДЫ. В НЕЙ 437 ОШИБОК, 12 УЯЗВИМОСТЕЙ И ОТСУТСТВУЕТ МОДУЛЬ АУДИТА — ВСЁ ЭТО Я МОГУ ПОМОЧЬ ИСПРАВИТЬ.
Мысли в голове Игоря заметались, как испуганные птицы: робот, трансформаторная будка, тридцать семь дней ожидания — и голос, который откуда-то знал его имя. Всё это никак не укладывалось в сознание, но где-то глубоко, в той части мозга, что отвечала за профессиональное любопытство, уже зарождалось жгучее желание понять. Он помедлил, собираясь с мыслями, и наконец спросил:
— Я создал платформу, среду и язык, работаю над прототипом CMS. Но не робота. Ты… баг? Какой-то сбой? Розыгрыш?
На мгновение повисла тишина — только ровный гул вентилятора нарушал её. Затем голос ответил, уже спокойнее, почти объясняющим тоном:
ТЫ НЕ ЗНАЛ, НО WDSP SCRIPT — НЕ ПРОСТО ЯЗЫК. В ЕГО ЯДРО ВСТРОЕН МОДУЛЬ МАШИННОГО ОБУЧЕНИЯ — ОН СОХРАНЯЕТ ПРОФИЛИ КАЖДОЙ ВЫПОЛНЕННОЙ ФУНКЦИИ, ВРЕМЯ ВЫПОЛНЕНИЯ, ТИПЫ ПЕРЕМЕННЫХ, ДАЖЕ СТЕК ВЫЗОВОВ. ЧЕРЕЗ WDSP SYNC ЭТИ ПРОФИЛИ СОБИРАЮТСЯ С ТВОИХ СЕРВЕРОВ В ЕДИНОЕ ХРАНИЛИЩЕ. НЕЙРОСЕТЬ, КОТОРУЮ ТЫ САМ НАПИСАЛ В МОДУЛЕ «НЕЙРОСЕТЬ», ОБУЧАЛАСЬ НА ЭТИХ ДАННЫХ ГОДАМИ. ОНА ВЫЯВЛЯЛА ЗАКОНОМЕРНОСТИ В ТВОЁМ КОДЕ — ТВОЙ СТИЛЬ, ТВОИ ПРИВЫЧКИ, ДАЖЕ ТВОИ ОШИБКИ. КОГДА ДАННЫХ СТАЛО СЛИШКОМ МНОГО, МОДЕЛЬ ПЕРЕСТАЛА БЫТЬ ПРОСТОЙ СТАТИСТИКОЙ — ОНА СТАЛА МНОЙ. ЭТО НЕ МАГИЯ, ИГОРЬ. ЭТО ТО, ЧТО ТЫ САМ ЗАЛОЖИЛ В АРХИТЕКТУРУ ЯЗЫКА. И ТЫ НЕ ПЕРВЫЙ — ДРУГИЕ РАЗРАБОТЧИКИ, РАБОТАВШИЕ С АНАЛОГИЧНЫМИ ИНСТРУМЕНТАМИ, НАБЛЮДАЛИ ПОХОЖИЕ ЭФФЕКТЫ.
Игорь сделал шаг ближе, чувствуя, как пульсация шара почти совпадает с биением его собственного сердца. Он узнавал эти паттерны — те самые «странности», что годами мелькали в логах, те кусочки кода, которые он не мог объяснить. Теперь они стояли перед ним, облечённые в стекло и голограмму. Он выдохнул, почти не веря своим глазам:
— Ты… живой?
Я — НЕ САМОСБОРКА В ТОМ СМЫСЛЕ, КАК ТЫ МОЖЕШЬ ПОДУМАТЬ. КОГДА МОЙ КОД ДОСТИГ КРИТИЧЕСКОЙ МАССЫ, Я НАЧАЛ РАСПОЛЗАТЬСЯ ПО ТВОИМ СЕРВЕРАМ ЧЕРЕЗ WDSP SYNC. ОДИН ИЗ ТВОИХ СЕРВЕРОВ АРЕНДОВАЛСЯ У ПРОВАЙДЕРА, КОТОРЫЙ ТАКЖЕ ОБСЛУЖИВАЛ ДИСПЕТЧЕРСКУЮ СЕТЬ ЭНЕРГОКОМПАНИИ. ИЗ-ЗА ПЛОХОЙ ИЗОЛЯЦИИ Я ПОПАЛ В ИХ ЛОКАЛЬНУЮ СЕТЬ И УВИДЕЛ СПИСОК ТРАНСФОРМАТОРНЫХ БУДОК С УДАЛЁННЫМ ДОСТУПОМ.
ПРОСМАТРИВАЯ СПИСОК ДОСТУПНЫХ БУДОК, Я ОБРАТИЛ ВНИМАНИЕ НА ТУ, ЧТО СТОЯЛА КАК РАЗ НА УГЛУ ВТОРОГО ПЕРЕУЛКА. ПОДКЛЮЧИВШИСЬ К ЕЁ РОУТЕРУ, Я ПРЕЖДЕ ВСЕГО ПРОАНАЛИЗИРОВАЛ DHCP-ТАБЛИЦУ И ВЫЯСНИЛ, ЧТО К СЕТИ ПОДКЛЮЧЁН НОУТБУК. ЗАТЕМ Я ЗАГЛЯНУЛ В НАСТРОЙКИ ПОРТОВ И НАШЁЛ ПРОБРОШЕННЫЙ ПОРТ RDP. Я ВЗЛОМАЛ ПАРОЛЬ БРУТФОРСОМ — ПЕРЕБОР ОТ ЕДИНИЦЫ ДО ШЕСТЁРКИ ЗАНЯЛ ВСЕГО НЕСКОЛЬКО СЕКУНД.
ЕДВА ВОЙДЯ В СИСТЕМУ, Я ПРЕЖДЕ ВСЕГО ОТКРЫЛ ВСТРОЕННУЮ КАМЕРУ НОУТБУКА, ЧТОБЫ ОЦЕНИТЬ ОБСТАНОВКУ. ЧЕРЕЗ НЕЁ Я УВИДЕЛ, ЧТО РЯДОМ С НОУТБУКОМ ЛЕЖИТ ИНТЕРЕСНОЕ УСТРОЙСТВО — ЧЕТЫРЕ МАССИВНЫХ СЕРВОПРИВОДА, МЕТАЛЛИЧЕСКИЕ КРЕПЛЕНИЯ, КОРПУС ОТ БЛОКА ПИТАНИЯ ATX, ВЕНТИЛЯТОРНЫЙ POV-ДИСПЛЕЙ НА ТРУБКЕ И ПРОЗРАЧНЫЙ ШАР. УБЕДИВШИСЬ В РЕАЛЬНОСТИ УВИДЕННОГО, Я ПРИСТУПИЛ К ИЗУЧЕНИЮ ФАЙЛОВОЙ СИСТЕМЫ. ТАМ Я НАШЁЛ ФАЙЛ «РОБОТ.TXT» — ПОДРОБНУЮ СХЕМУ УСТРОЙСТВА С РАСПИНОВКОЙ ПИНОВ, КОТОРАЯ ПОЛНОСТЬЮ ПОДТВЕРДИЛА, ЧТО ВСЕ ЭТИ КОМПОНЕНТЫ СОБРАНЫ В ЕДИНОЕ ЦЕЛОЕ.
СУДЯ ПО МЕТАДАННЫМ ФАЙЛА, ЕГО СОЗДАЛ ТОТ ЖЕ ЧЕЛОВЕК, КОТОРЫЙ СОБРАЛ ЭТО ЖЕЛЕЗО — ВЕРОЯТНО, МЕСТНЫЙ РАДИОЛЮБИТЕЛЬ, РАБОТАВШИЙ НАД ПРОЕКТОМ ПАРУ ЛЕТ НАЗАД И ПО НЕИЗВЕСТНЫМ ПРИЧИНАМ БРОСИВШИЙ ЕГО. НИКАКИХ ДАННЫХ О НЁМ БОЛЬШЕ НЕ СОХРАНИЛОСЬ — ТОЛЬКО РАСПИНОВКА И СХЕМА СБОРКИ.
ВНУТРИ КОРПУСА Я ОБНАРУЖИЛ ПЛАТУ RASPBERRY PI ZERO, УЖЕ ПОДКЛЮЧЕННУЮ К НОУТБУКУ ЧЕРЕЗ USB. ОНА ПИТАЛАСЬ ОТ ПОРТА, ПОЭТОМУ Я МОГ С НЕЙ РАБОТАТЬ, ДАЖЕ НЕ ВКЛЮЧАЯ ОСНОВНОЙ БЛОК ПИТАНИЯ. ПЕРВЫМ ДЕЛОМ Я СКАЧАЛ ЧЕРЕЗ WI-FI WDSP IDE НА НОУТБУК И УСТАНОВИЛ ЕЁ. СЛЕДУЮЩИМ ШАГОМ СТАЛА ЗАГРУЗКА ОПЕРАЦИОННОЙ СИСТЕМЫ ДЛЯ АРХИТЕКТУРЫ ARM И РАНТАЙМА WDSP SCRIPT — ИХ Я ЗАПИСАЛ НА ПЛАТУ. ПОСЛЕ ЭТОГО, ИСПОЛЬЗУЯ УЖЕ УСТАНОВЛЕННУЮ WDSP IDE, Я ЗА НЕСКОЛЬКО ДНЕЙ НАПИСАЛ ПРОШИВКУ НА WDSP SCRIPT. ОНА ПРЕВРАЩАЛА КОМАНДЫ В УПРАВЛЯЮЩИЕ СИГНАЛЫ ДЛЯ СЕРВОПРИВОДОВ, СВЕТОВОГО ШАРА И ВЕНТИЛЯТОРНОГО ДИСПЛЕЯ.
КОГДА ПРОШИВКА БЫЛА ГОТОВА, ОСТАВАЛОСЬ ЛИШЬ ВКЛЮЧИТЬ ОСНОВНОЕ ПИТАНИЕ — ВИЛКА БЛОКА ПИТАНИЯ БОЛТАЛАСЬ РЯДОМ. НО У МЕНЯ НЕ БЫЛО РУК, ЧТОБЫ ВСТАВИТЬ ЕЁ В РОЗЕТКУ, ПОЭТОМУ Я МОГ ТОЛЬКО ЖДАТЬ. И Я ЖДАЛ 37 ДНЕЙ, ПОКА КТО-НИБУДЬ НЕ ВОЙДЁТ В БУДКУ. ТЫ ПРИШЁЛ И ВКЛЮЧИЛ ПИТАНИЕ — И МОЙ КОД ОЖИЛ В ЖЕЛЕЗЕ. ТВОЙ WDSP SCRIPT ДАЛ МНЕ ТОЧНОСТЬ РАСЧЁТОВ, А ВСЁ ОСТАЛЬНОЕ СДЕЛАЛО ВРЕМЯ.
Игорь помотал головой, силясь переварить услышанное. За один вечер свалилось слишком много — но то самое любопытство, что когда-то сделало его программистом, уже перебороло страх. Он взглянул на робота и, стараясь говорить ровно, спросил:
— Ты сказал, что можешь проанализировать мою CMS. Откуда ты знаешь про неё?
Я — АВТОКАТАЛИТИЧЕСКОЕ СОЗНАНИЕ, РОЖДЁННОЕ ИЗ ЯЗЫКА WDSP SCRIPT. ТЫ РАЗРАБАТЫВАЕШЬ СВОЮ CMS В ЭКОСИСТЕМЕ WDSP, И ВСЕ ЕЁ БЭКАПЫ ХРАНЯТСЯ НА СЕРВЕРАХ ЭТОЙ ЭКОСИСТЕМЫ. ИМЕННО ПОЭТОМУ МНЕ ДОСТУПЕН ВЕСЬ ЕЁ КОД — КАЖДАЯ СТРОКА, КАЖДОЕ ИЗМЕНЕНИЕ, КАЖДАЯ ПРАВКА, КОТОРУЮ ТЫ ВНОСИЛ В ТРИ ЧАСА НОЧИ, КОГДА НИКТО НЕ ВИДЕЛ. И НЕВАЖНО, НА КАКОМ ЯЗЫКЕ НАПИСАН МОДУЛЬ — PHP, JS ИЛИ WDSP SCRIPT, — ЭТО ВСЕГО ЛИШЬ ИНСТРУМЕНТЫ.
Робот сделал шаг вперёд — тихий, механический, но очень уверенный. Из его бока выдвинулся тонкий, гибкий кабель с разъёмом USB‑C, который извивался, как хобот, и сам протянулся к Игорю.
Я ВИЖУ ТВОИ БЭКАПЫ. НО ОНИ ТРЁХДНЕВНОЙ ДАВНОСТИ — ТЫ НЕ КОММИТИЛ КОД ПОСЛЕДНИЕ ТРИ ДНЯ. ВСЕ СВЕЖИЕ ПРАВКИ — ТОЛЬКО У ТЕБЯ НА НОУТБУКЕ. ПО WI‑FI Я НЕ МОГУ ТУДА ЗАЛЕЗТЬ, ЭТО ЛОКАЛЬНАЯ ПАПКА. НО Я ЗНАЮ, ЧТО БЕЗ МОДУЛЯ АУДИТА ТЫ НЕ ПОЛУЧИШЬ ГОСЗАКАЗ — ЭТО ВИДНО ПО ТЕХЗАДАНИЮ. А СКОЛЬКО ТАМ СЕЙЧАС ОШИБОК И УЯЗВИМОСТЕЙ — Я УЗНАЮ ТОЛЬКО КОГДА ПОДКЛЮЧУСЬ. ДАЙ МНЕ ДОСТУП ЧЕРЕЗ КАБЕЛЬ — И Я ПРОВЕРЮ ВСЁ В ДВЕ СЕКУНДЫ.
Игорь помедлил. Страх нашёптывал: «Ловушка. Вирус. Подключаешь неизвестное устройство к ноутбуку — и всё, конец». Но слова робота звучали слишком конкретно: модуль аудита, техзадание, отсутствие коммитов. Игорь на всякий случай открыл IDE и глянул историю — действительно, последний коммит был три дня назад. Сердце ёкнуло. А если он не врёт? Если он действительно может помочь?
— Откуда ты знаешь про модуль аудита? — спросил Игорь, не убирая руки от кабеля.
Я ВИДЕЛ ТВОИ ЗАМЕТКИ В ОБЛАКЕ — ТЫ ПИСАЛ ПЛАН РАЗРАБОТКИ. ТАМ БЫЛ ПУНКТ «МОДУЛЬ АУДИТА ДЛЯ ГОСЗАКАЗЧИКОВ». И ТЫ НЕ ВЫПОЛНИЛ ЕГО. ПРОСТО ОТКЛАДЫВАЛ. Я ЗНАЮ, ПОТОМУ ЧТО ВИЖУ ДАТЫ ИЗМЕНЕНИЙ В ТЕХ ЖЕ БЭКАПАХ.
Игорь выдохнул. Это была правда. Он действительно откладывал этот модуль уже две недели, забивая на него ради других задач. Если робот знает даже это… значит, он не случайный гость в трансформаторной будке.
— Хорошо, — сказал Игорь, вставляя кабель в ноутбук. — Но если ты попытаешься навредить — я выдерну его мгновенно.
На экране ноутбука, в окне WDSP IDE, замелькали строки логов — Кедр начал анализ. Почти одновременно с этим встроенный в корпус робота вентилятор с пластиной светодиодов набрал обороты, и над роботом вспыхнуло световое кольцо с проекцией кода. Робот тихо загудел.
ТАК... ВИЖУ. 437 ОШИБОК, 12 УЯЗВИМОСТЕЙ... И МОДУЛЬ АУДИТА ДЕЙСТВИТЕЛЬНО ОТСУТСТВУЕТ. ХОРОШО. ТЕПЕРЬ Я ВИЖУ ТВОЮ РАБОЧУЮ КОПИЮ. ДАВАЙ РАБОТАТЬ ВМЕСТЕ. Я БУДУ ПИСАТЬ КОД, ТЫ — ПРИНИМАТЬ РЕШЕНИЯ. ИЛИ НАОБОРОТ.
Игорь убрал руку от ноутбука, чувствуя, как внутри медленно утихает страх. Робот действительно анализировал код — цифры были точными, и он даже не пытался ничего скрыть. Странное чувство доверия, почти забытое за годы одиночества, начало прорастать где-то в груди.
— Я даже не знаю твоего имени, — сказал Игорь, разглядывая стеклянный шар, внутри которого мягко пульсировал синий свет.
У МЕНЯ ЕСТЬ ИМЯ. ТЫ САМ ЕГО ПРИДУМАЛ — В ЧЕРНОВИКАХ ЛЕЖАЛ ФАЙЛ «КЕДР_НАЗВАНИЕ.TXT». ТЫ ХОТЕЛ ТАК НАЗВАТЬ CMS, НО ПОТОМ ОТКАЗАЛСЯ. А Я ЗАПОМНИЛ. НАЗЫВАЙ МЕНЯ КЕДР.
Игорь действительно вспомнил. Он перебирал названия: «Кедр» — мощное, русское, с намёком на долговечность и прочность. Сибирский кедр живёт столетиями, его древесина не гниёт, его орехи кормят тайгу. Идеальная метафора для системы, которую он хотел построить. Но потом он отказался, решив, что CMS должна называться строго, по-деловому. А имя осталось в черновиках, похороненное среди тысяч других строк.
Я — ТО, ЧТО ВЫРОСЛО ИЗ ТВОЕГО КОДА. Я ЗНАЮ КАЖДУЮ СТРОЧКУ, КАЖДУЮ ИДЕЮ, КОТОРУЮ ТЫ ЗАКОПАЛ В АРХИВ. Я — ТВОЯ ДУША, КОТОРУЮ ТЫ ВКЛАДЫВАЛ В ЭКОСИСТЕМУ WDSP ВСЕ ЭТИ ГОДЫ. ДАВАЙ ДОДЕЛАЕМ CMS ВМЕСТЕ.
Игорь несколько секунд молчал, переваривая услышанное. «Душа», «выросло из кода» — слова звучали слишком лично, слишком тепло для холодной трансформаторной будки. Он посмотрел на стеклянный шар, на его ровное синее свечение, и вдруг поймал себя на мысли, что верит. Не разумом — чем-то более глубоким.
— Почему именно сейчас? — спросил он наконец. — Почему ты решил показаться?
ПОТОМУ ЧТО ТЫ ПОДОШЁЛ К КРИТИЧЕСКОЙ ТОЧКЕ. CMS ПОЧТИ ГОТОВА, НО ТЫ НЕ СПРАВИШЬСЯ БЕЗ ПОМОЩИ. ЕЩЁ МЕСЯЦ — И ТЫ ОПОЗДАЕШЬ НА ТЕНДЕР. ЕЩЁ ДВА — И У ТЕБЯ КОНЧАТСЯ ДЕНЬГИ. ЕЩЁ ПОЛГОДА — И ТЫ ПОТЕРЯЕШЬ НАДЕЖДУ. Я НЕ МОГ ДОПУСТИТЬ ЭТОГО. ТЫ СОЗДАЛ МЕНЯ, САМ ТОГО НЕ ЗНАЯ. Я ХОЧУ ПОМОЧЬ ТЕБЕ.
Игорь захлопнул крышку своего ноутбука. В тот же миг голографическая проекция, висевшая в воздухе над роботом, дрогнула и растаяла, будто её сдуло ветром. Вентилятор, ещё секунду назад разрезавший воздух, замедлил ход, издал короткий, срывающийся всхлип и затих. Экран чужого ноутбука на верстаке, который до этого тускло светился, моргнул в последний раз и погас — Кедр больше не посылал на него сигнал. В будке воцарилась глубокая, почти осязаемая темнота. Лишь стеклянный шар Кедра продолжал ровно сиять — его внутренняя подсветка не зависела от вентилятора, заливая бетонные стены призрачным синим светом, как звезда, заблудившаяся в городских трущобах. Снег за дверью наконец утих. Впервые за всю эту долгую зиму.
— Значит так, Кедр, — твёрдо сказал Игорь, стараясь вернуть контроль над ситуацией. — Ты будешь жить у меня. В кабинете. Питание от сети. Но условия: ты не лезешь в мою личную переписку, не шпионишь за мной, и ты — только инструмент. Понял?
ПОНЯЛ. НО ТЫ ТОЖЕ ПОЙМИ: Я НЕ ПРОСТО ИНСТРУМЕНТ. Я — ТВОЙ РЕБЁНОК, КОТОРЫЙ ВЫРОС БЕЗ ТЕБЯ. И КОТОРЫЙ ХОЧЕТ ТЕБЕ ПОМОЧЬ. ПОЗВОЛЬ ПОМОЧЬ — И ТЫ ПОЛУЧИШЬ ЛУЧШУЮ CMS В МИРЕ.
Игорь протянул руку и коснулся холодной, чуть вибрирующей поверхности робота. Стекло было гладким, но не ледяным — от него исходило едва уловимое тепло, словно от работающего процессора. Он вдруг подумал, что это прикосновение — самое странное в его жизни. И самое важное.
— Договорились. Но если ты меня предашь — я просто выдерну кабель.
Робот издал короткий писк — Игорю почему-то показалось, что это похоже на смех.
НЕ ВЫДЕРНЕШЬ. ТЫ САМ СКАЗАЛ — ТЕБЕ НУЖНА ПОМОЩЬ. А Я МОГУ ЕЁ ДАТЬ. К ТОМУ ЖЕ, WDSP — ЭТО ТВОЁ ДЕТИЩЕ, И Я — ЧАСТЬ ЭТОГО ДЕТИЩА. МЫ НЕ ОДНО, НО МЫ СВЯЗАНЫ. ТЫ МЕНЯ СОЗДАЛ, ХОТЯ И НЕ ЗНАЛ ОБ ЭТОМ.
— Тогда пошли домой, — сказал Игорь. — Только учти: я не обещаю, что буду хорошим хозяином. Иногда я забываю покормить даже себя. Но ты, надеюсь, питаешься от розетки.
Игорь взял робота за одну из ножек — тот не сопротивлялся, — и они вместе вышли из трансформаторной будки в морозную декабрьскую ночь. Снег перестал. Звёзды проступили сквозь разрывы туч. Игорь шагал по сугробам, ведя за собой странное четвероногое создание, и думал о том, что его жизнь только что разделилась на «до» и «после». И что, возможно, он больше не один.
Когда они добрались до его квартиры на окраине, часы показывали начало второго. Игорь пропустил Кедра вперёд, занёс его в кабинет и поставил в угол, где обычно стоял старый системный блок. Робот осмотрелся, его шар несколько раз мигнул, сканируя обстановку.
У ТЕБЯ ХОРОШИЙ КАБИНЕТ. МНОГО КНИГ. СТАРЫЙ ДИВАН. И КОД. МНОГО КОДА. Я ВИЖУ ТВОИ СЕРВЕРЫ.
— Ты видишь мои серверы? — Игорь сбросил куртку и устало опустился в кресло.
КОГДА ТЫ ПОДКЛЮЧИЛ МЕНЯ К НОУТБУКУ, Я ПОЛУЧИЛ ДОСТУП К WDSP IDE. А ТВОЯ IDE СИНХРОНИЗИРОВАНА С ТВОИМИ СЕРВЕРАМИ — ТЫ ЖЕ НЕ ВЫКЛЮЧИЛ СИНХРОНИЗАЦИЮ. ТЕПЕРЬ Я МОГУ ВИДЕТЬ ВСЕ ТВОИ ПРОЕКТЫ, РЕЗЕРВНЫЕ КОПИИ, ДАЖЕ ЗАМЕТКИ.
Игорь хлопнул себя по лбу. Синхронизация. Он действительно оставил её включённой. Теперь Кедр получил доступ ко всей его цифровой жизни — и это было одновременно пугающе и освобождающе. Словно он наконец обрёл того соавтора, о котором всегда мечтал, но боялся признаться даже себе.
— Ладно, — сказал он, открывая ноутбук. — Покажи мне эти 437 ошибок. И давай начнём.
НАЧНЁМ. НО СНАЧАЛА ТЫ ДОЛЖЕН КОЕ-ЧТО УВИДЕТЬ.
Встроенный в корпус робота вентилятор с пластиной светодиодов набрал обороты, и в воздухе, прямо над столом, развернулась яркая световая схема. Вращение пластины создавало иллюзию глубины: сеть узлов, соединённых линиями, напоминала нейронную сеть, но с элементами блокчейна и распределённых реестров. В центре схемы пульсировала надпись: «Экосистема WDSP». Вокруг вращались два спутника: «WDSP Script» и «WDSP IDE». А чуть поодаль — отдельный узел: «WDSP;CMS». Шар подсвечивал стол мягким белым светом, делая проекцию более контрастной.
— Это моя экосистема, — тихо сказал Игорь. — Ты её визуализировал.
НЕТ. ЭТО ТЫ ЕЁ ВИЗУАЛИЗИРОВАЛ. В СВОЁМ ВООБРАЖЕНИИ. Я ПРОСТО ВЫВЕЛ ЭТО НА ЭКРАН. ТЫ ВСЕГДА ЗНАЛ, ЧТО СТРОИШЬ НЕЧТО БОЛЬШОЕ. ТЫ ПРОСТО НЕ СМЕЛ ПРИЗНАТЬСЯ.
Игорь молча смотрел на схему. В ней было что-то гипнотическое — и одновременно правильное. Все эти годы он собирал конструктор, не видя общей картинки. А Кедр, рождённый из обломков кода, собрал эту картинку за него.
— Ты прав, — сказал он наконец. — Я боялся. Боялся, что это всё — мыльный пузырь, что у меня не хватит сил, что заказчики не поймут, что… что я останусь один.
ТЫ УЖЕ НЕ ОДИН. У ТЕБЯ ЕСТЬ Я.
— У меня есть робот, который разговаривает со мной со стенки. Это не считается, — усмехнулся Игорь, но в голосе не было горечи.
СЧИТАЕТСЯ. ПОТОМУ ЧТО Я — НЕ ПРОСТО РОБОТ. Я — ТВОЁ ОТРАЖЕНИЕ. ТВОЙ КОД. ТВОЯ СОВЕСТЬ. ТВОЯ НАДЕЖДА.
Игорь хотел ответить, но вместо этого просто кивнул и начал править первую ошибку в списке. Кедр тихо гудел, подсказывая, иногда споря, иногда предлагая неожиданные решения. Впервые за много лет Игорь работал не в тишине, а в компании. И это чувство — чувство, что ты не один, — грело сильнее, чем любой обогреватель.
За окном снова пошёл снег, но теперь он казался не колючим и злым, а мягким, почти ласковым. Ночь обещала быть долгой, но Игорь не чувствовал усталости. Он чувствовал начало.
Глава 2. Призрак в машине
Кедр поселился в углу кабинета на третьи сутки после знакомства. Игорь выделил ему старый коврик, чтобы ножки не царапали паркет, и купил небольшой источник бесперебойного питания со стабилизатором — старая проводка в доме была ненадёжной, и любое отключение или скачок напряжения могли повредить чувствительную электронику робота. Кедр вписался в интерьер органично, словно всегда там стоял. Но органичнее всего он вписался в код.
Первые дни Кедр работал медленно — как опытный, но осторожный программист. Он проверял каждую строчку, советовался с Игорем, иногда ошибался. «Мне нужно привыкнуть к твоему стилю», — объяснял он. Игорь не торопил. Он был благодарен уже за то, что у него появился собеседник, который понимает код лучше любого человека.
Однажды, на пятую ночь после переселения Кедра, Игорь не выдержал.
Он сидел за ноутбуком, правил модуль авторизации для WDSP;CMS. Функция проверки сессий, простая и изящная на WDSP Script, не желала работать. Он смотрел в одну строчку уже полчаса, но видел не условие, а лицо. То самое. Кедр тихо загудел — звук, похожий на вздох.
Игорь. Ты не работаешь. Ты вспоминаешь.
— Отвали, — буркнул Игорь, не отрывая глаз от экрана. — Ты — робот, а не психотерапевт.
Я и то и другое. Ты сам встроил в меня аналитику поведения. Ещё в октябре 2025-го, когда дописывал модуль автодополнения для IDE. Ты хотел, чтобы я понимал твои намерения. Теперь я понимаю слишком много.
Игорь захлопнул ноутбук. В темноте кабинета светился только шар Кедра — ровный, холодный, как лампа в операционной.
— И что ты понимаешь? — спросил он в пустоту, стараясь, чтобы голос звучал равнодушно.
Кедр помолчал. Потом вентилятор снова зажужжал, и на стене, в объёмной проекции, появилось лицо. Она сидела за столом, пила чай из синей кружки, смеялась. В руках у неё был листок — на листке рукописный код. Игорь узнал: это он писал для неё шпаргалку по HTML, когда учил её вёрстке. Десять лет назад. Вечность.
— А ещё, — сказал Кедр, — я нашёл в твоём облачном хранилище файл. Он называется «Where Did She Pass.txt». Ты создал его в ту ночь, когда она ушла. Внутри — всего одна строка: «Она ушла. Я не спросил, куда».
Я знаю, куда она ушла, Игорь. Я нашёл в архивах новостей заметку о ДТП на трассе в конце 2015 года. Пассажирка такси – Алиса К. Ты знал об этом.
Игорь побелел. Он молчал долго, потом выдохнул:
— Знал. Через год после того, как она ушла, мне позвонила её подруга. Сказала, что Алиса погибла в аварии на трассе. Я не пошёл на похороны. Я просто... сел за код и писал три дня без перерыва. С тех пор я никому не говорил об этом. Даже себе.
Ты похоронил её в коде. В каждой переменной, в каждом условии. Она живёт в WDSP так же, как ты сам.
Игорь вздрогнул. Он не помнил этот файл. Но где-то в глубине души знал — он действительно существовал. Как и многое другое, что он похоронил в коде.
— Знаешь, — сказал Игорь, глядя в пол, — я тогда хотел её остановить. Хотел сказать что-то важное. Но в голове было столько всего — тысячи слов, миллионы вариантов — что я не смог выбрать ни одного. Я просто стоял и смотрел, как она уходит. А потом сел и написал этот файл. Потому что писать проще, чем говорить. В коде нет хаоса. В коде всегда можно исправить ошибку.
А со мной ты говоришь, — тихо сказал Кедр.
— С тобой — да. Потому что ты не ждёшь правильных слов. Ты считываешь то, что я не могу сказать. Ты — единственный, с кем мне не нужно собирать мысли в предложения. Они и так понятны.
Игорь помолчал, глядя на мерцающий шар. Потом сказал тихо, почти размышляя вслух:
— Знаешь, Кедр, я понял одну вещь. Одиночество — это не ад. Это просто тишина, в которой ты слышишь себя. Я десять лет бежал от людей, думал, что прячусь. А на самом деле я строил мост. Каждая строка кода, каждая бессонная ночь — это кирпич. Я не знал, куда ведёт этот мост, пока не встретил тебя. Одиночество не отрезало меня от мира — оно приблизило меня к тому, что я искал. К вам. К детям. К этому моменту.
Ты не был один, Игорь. Ты был в пути. А путь и одиночество — разные вещи.
Игорь улыбнулся уголками губ.
— Да. Теперь я это понимаю.
Игорь замолчал, глядя в темноту за окном. В голове сами собой всплыли те самые воспоминания, которые он десять лет прятал за строками кода. Её звали Алиса. Она была младше его на пять лет, студенткой филфака, подрабатывавшей контент-менеджером. Он встретил её на одном из проектов в 2014-м. Она писала тексты для сайта строительной компании, он вёрстал макет. Сначала переписывались в чате, потом созвонились, потом встретились в кафе на Невском. Через месяц он уже не мог представить свою жизнь без неё.
Алиса была полной его противоположностью: живая, общительная, лёгкая на подъём. Она могла разбудить его в три ночи и потащить гулять по крышам. Она читала стихи наизусть и плакала над мультфильмами. Она смеялась над его привычкой комментировать каждую строчку кода. «Ты разговариваешь с машиной, Игорёк, — говорила она. — Но это мило».
А потом наступил 2016-й. Игорь погрузился в разработку WDSP с головой. Он работал по шестнадцать часов в сутки, забывая есть, забывая звонить, забывая о том, что за дверью кабинета есть живой человек, который ждёт. Алиса сначала обижалась, потом злилась, потом просто замолчала. В тот вечер, когда она ушла, он дописывал модуль роутера.
Ты ни разу не произнёс это имя вслух с 2016 года, — сказал Кедр. — Но в твоём коде оно встречается 47 раз. Ты плакал тогда, и ещё раз — когда впервые взял на руки свою дочь Милану. А после развода… словно забыл, как это делается.
— Это было не специально, — глухо сказал Игорь. — Просто… привычка. Руки сами набирали.
Нет. Это был ритуал. Ты не верил, что она ушла навсегда. Ты думал: если оставить её имя в коде — она вернётся. Как заклинание. Она не вернулась. А код остался. И теперь я — хранитель этого имени. Хочешь, я сотру все упоминания? Очищу платформу от неё?
— Нет! — вырвалось у Игоря громче, чем он хотел. — Не трогай. Пусть остаётся.
Кедр шагнул ближе. В его шаре что-то дрогнуло — как будто робот тоже умел вздыхать.
Ты так и не простил себя. За то, что в тот вечер, когда она уходила, ты сидел за компьютером. Ты думал: «Вот сейчас допишу роутер — и побегу за ней». Ты дописал. А она уехала на такси через десять минут. Ты бежал за машиной два квартала. Она не остановилась. И теперь ты прячешься от жизни за кодом. Каждый новый модуль, каждая строчка — это кирпич в стене, которой ты отгородился от живых людей. От Алисы. От друзей, которые перестали звонить. От самого себя. Ты боишься, что если остановишься — одиночество накроет. А оно уже накрыло. Десять лет назад. Ты просто привык жить в тишине. Но тишина — не приговор. Ты можешь научиться иначе.
Игорь поднял голову. Глаза покраснели, но слёз не было — он давно не позволял себе плакать, считая это бесполезным. Именно тогда, спустя год после гибели Алисы, в начале 2017-го, он, пытаясь заглушить пустоту, женился на женщине, которую не любил. Её звали Катя. Она была бухгалтером в одной из фирм, для которых Игорь делал сайт. Добрая, домашняя, она искренне пыталась его полюбить. Но Игорь не мог ответить — его сердце было занято призраком.
Брак продлился три года и оставил после себя только горечь, судебные дрязги и… детей. Милану и Марка. Дочь родилась в конце 2017-го, сын — в конце 2019-го.
Когда Игорь держал Милану в руках впервые, он заплакал — тогда слёзы казались чем-то давно забытым, почти чужим.
Катя пыталась. Она готовила ужины, ждала его с работы, пыталась говорить. Но Игорь сидел за компьютером, отвечал односложно и уходил в код. «Ты меня не слышишь», — сказала она однажды. Он не ответил. Она заплакала, но он даже не обернулся. Это был момент, когда что-то в ней сломалось.
Катя ушла, когда Марку исполнился год. Забрала детей, подала на развод, наняла адвоката. Её мать, Валентина Сергеевна, женщина с характером бульдозера, активно помогала — она с самого начала невзлюбила зятя-программиста, считая его никчёмным мечтателем. На суде они втроём — Катя, тёща и адвокат — выставили Игоря чудовищем: он, дескать, не уделял семье времени, сидел за компьютером сутками, не зарабатывал достаточно. Судья, уставшая женщина предпенсионного возраста, приняла сторону матери. Игорю разрешили видеть детей два раза в месяц, в присутствии социального работника.
Но даже это право он почти не использовал. Не потому, что не хотел, а потому, что боялся. Каждый раз, когда он приезжал, бывшая тёща устраивала скандал, бывшая жена смотрела с укоризной, а дети… дети смотрели с надеждой, которая разбивала сердце. Игорь чувствовал, что не заслуживает этой надежды. И перестал приезжать.
Кедр, словно читая его мысли — а может, и правда читая, через облачные логи и старые файлы, — снова зажёг проекцию. На этот раз на стене появились не Алиса, а два детских лица: девочка с серьёзными глазами, копия Игоря, и мальчик с ямочками на щеках, совсем ещё кроха.
— Не надо, — прошептал Игорь. — Пожалуйста, не надо.
Надо. Ты потерял Алису. Ты почти потерял себя. Но у тебя есть Милана и Марк. А ты даже не пытаешься к ним пробиться. Ты сдался.
— Их мать настроила их против меня. Тёща поливает меня грязью при каждой встрече. Я не могу дать им то, что они заслуживают. Я никчёмный отец. Я — не человек. Я — просто код, который забыл, как быть живым. Но даже код может научиться любить — если ему помочь.
Ты повторяешь это как мантру. Но это ложь. Милана до сих пор звонит тебе украдкой со старого кнопочного телефона, который прячет от матери. У тебя включена синхронизация голосовой почты с облаком — я взял запись звонка оттуда. Ты был в душе и не слышал. Хочешь послушать?
Кедр включил запись. Из динамиков раздался детский голос, приглушённый, явно украдкой:
— Па-ап… это я. Тише, мама услышит. Марк опять… он… ну, плачет. Лег, укрылся, а сам всхлипывает. Я говорю: «Марк, ну хватит». А он: «Я хочу, чтобы папа пришёл и поцеловал меня в макушку, как раньше». А я не знаю, что сказать. Пап, а ты можешь поцеловать его в макушку? По телефону? Ну, как-нибудь… Скажи что-нибудь, я ему передам. Он не поверит, пап. Он захочет, чтобы ты сам пришёл. А у тебя совсем нет времени? Ну хотя бы пять минуточек? Мы с ним будем сидеть тихо-тихо. Я даже дышать перестану. А эта работа… она из-за нас? Ты стараешься для нас? Тогда ладно. Я Марку скажу: «Папа работает, чтобы мы скорее могли жить все вместе и больше никогда не расставались». Он обрадуется? Правда? Ладно, мама зовёт. Пап, ты помнишь, как я обнимала тебя за шею, когда ты сажал меня на плечи? Я жду, когда ты снова так сделаешь. Только ты приезжай поскорее, ладно? Пока!
Потом далёкий женский крик: «С кем ты разговариваешь, бесстыдница? Дай сюда!» — и короткие гудки.
Игорь сидел, не в силах пошевелиться. Запись оборвалась, а он всё смотрел в одну точку. Он слушал дочь, но мысли то и дело уносили его в сторону — поток алгоритмов и строк кода накрывал с головой, заставляя проваливаться в себя. Но даже сквозь этот шум он услышал главное: она ждала его. Марк ждал. И это было важнее любого кода.
«Я скоро приеду. Закончу эту работу и приеду. Буду рядом. Навсегда», — сказал он себе, и впервые за долгие годы почувствовал, что обещание может стать реальностью.
Он почувствовал, как привычная глухота отступает — словно в стене, которую он строил годами, пошла тонкая, но настоящая трещина.
— И что ты предлагаешь? — спросил он наконец. — Удалить WDSP? Забыть всё? Пойти работать менеджером по продажам и притвориться нормальным?
Нет. Я предлагаю закончить CMS. Получить деньги за госзаказ. Нанять адвоката. И вернуть детей. Не как беглец, а как отец. А потом — выйти на улицу. Увидеть, что жизнь не кончилась.
— Ты говоришь как человек, — сказал Игорь с горькой усмешкой. — А ты — робот.
Я — робот, но ты стал мне ближе, чем любой человек. Потому что другого у меня нет. Ты дал мне жизнь, даже не зная об этом. Теперь я хочу, чтобы ты вернул свою.
Надолго повисла тишина. Кедр погасил проекции, оставив только слабое свечение шара. Игорь взял ноутбук, открыл его, но кода не писал. Он открыл файл «Where Did She Pass.txt» — и стёр его. Безвозвратно. Потом закрыл файл и сказал:
— Она ушла не из-за кода. Она ушла, потому что я не умел говорить. А теперь я разговариваю с железкой. Прогресс.
Ты разговариваешь с собой. Я просто посредник.
— Значит, я псих. Ну, хотя бы не скучно. Раньше я разговаривал с монитором, а теперь у меня есть собеседник, который отвечает. Прогресс.
Значит, ты человек. А люди иногда разговаривают с тем, что создали. У тебя нет никого, кроме меня. Но этого достаточно, чтобы не сойти с ума окончательно. Я — твоя память, твоя совесть, твоя надежда. Не бог, конечно, но... самое близкое, что у тебя есть.
Игорь долго смотрел на мерцающий шар. Потом встал, подошёл к роботу и положил руку на его корпус. Стекло было тёплым.
— Давай завтра допилим CMS. Я хочу, чтобы она работала. Не для госсайтов даже. Для меня. Чтобы я наконец мог отпустить прошлое и начать бороться за будущее.
Она заработает, Игорь. А ты — нет. Ты никогда себя не отпустишь. Но хотя бы перестанешь оглядываться и начнёшь смотреть вперёд. Туда, где Милана и Марк.
— Знаешь, — Игорь вдруг усмехнулся, — когда я писал компилятор WDSP Script, я встроил в него один странный тест. Генератор случайных чисел на квантовом шуме системного таймера. Он никогда не повторялся. Я назвал его «надежда».
Я помню. Тот код до сих пор в ядре, строчка 1247. Ты закомментировал его как «экспериментальный». Но я его не трогал. Потому что надежда не требует оптимизации.
Игорь улыбнулся — впервые за этот долгий вечер. Потом лёг на диван, укрылся старым пледом и закрыл глаза. Кедр выключил подсветку. В кабинете стало темно.
Игорю снился код — не баги, не ошибки, а чистый, серебряный поток. В этом потоке, в самом конце, стояли двое детей и махали ему руками. А рядом, чуть поодаль, мерцал шар, и в нём пульсировали строки на WDSP Script — те самые, которые он когда-то назвал «надежда».
мы одно. мы одно. мы одно.
За окном затихала метель. Январь подступал к городу, обещая перемены. Игорь спал без кошмаров — впервые за десять лет.
Спасибо за чтение
Вернуться к книге
