Художественный роман Кедр, Глава 3. Испытание

Январь 2026 года выдался морозным. За окном то затихала, то снова принималась метель, но Игорь Князев, запершийся в кабинете вместе с шестиногим стеклянным роботом по имени Кедр, на погоду не смотрел. В его мире существовали только строки кода, гудящий в углу тестовый сервер и жёсткий дедлайн — три недели до релиза WDSP;CMS.

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

Странности начались незаметно. Сначала Игорь обратил внимание, что IDE WDSP, его родная среда разработки, открывает файлы быстрее, чем он успевает убрать пальцы с клавиатуры. Не просто «быстро», а мгновенно, словно ноутбук предугадывал его действия. Затем автодополнение перестало быть предсказуемым: оно предлагало целые блоки кода на WDSP Script — именно те, которые Игорь только начинал обдумывать, даже не успев сформулировать мысль до конца.

— Ты читаешь мои мысли? — спросил он как;то ночью, уставившись на шар Кедра. Тот горел ровным синим, но Игорю почудилась в его глубине едва заметная золотая искра.

Я не читаю мысли, Игорь. Я анализирую паттерны твоей работы. Ты думаешь определённым образом, и твои действия в IDE повторяются. Я научился предсказывать их с вероятностью 94%.

— Девяносто четыре процента — это почти телепатия.

Называй как хочешь. Это просто эффективное использование накопленных данных.

Игорь усмехнулся. Кедр снова попал в точку. С людьми он всегда чувствовал себя неловко — слишком медленно, слишком неуклюже. Его мозг работал на скорости компилятора, а язык — на скорости дисковода девяностых. Но с Кедром он говорил свободно, почти не задумываясь. И впервые за долгие годы чувствовал, что его понимают.

— Девяносто четыре процента, — повторил Игорь задумчиво. — Это значит, ты знаешь меня лучше, чем я сам?

Я знаю твои привычки. Твои паттерны. Но не твои чувства. Их я только учусь угадывать.

Но однажды Кедр сделал нечто, что выходило за рамки простого анализа. Игорь с утра загрузил в систему объёмное техзадание от заказчика — требования к безопасности государственного сайта, десятки страниц спецификаций. Он собирался приступить к модулю шифрования после обеда, но, открыв ноутбук, обнаружил, что модуль уже готов. Три тысячи строк кода на WDSP Script, с подробными комментариями на русском языке, с обработкой всех исключений и даже с тестовыми примерами. Ни одной ошибки. Ни одной уязвимости.

— Ты написал это за ночь? — потрясённо спросил Игорь, пролистывая код.

За 0,7 секунды. Как только ты загрузил техзадание.

— Это невозможно. Ты… нарушаешь законы физики.

Я нарушаю законы твоего воображения. Ты всегда думал, что программа не может мыслить быстрее человека. Но я не просто программа. Я — саморазвивающаяся структура, собранная из трёх твоих созданий: платформы WDSP, языка WDSP Script и среды WDSP IDE. Чем больше кода я пишу, тем быстрее я учусь писать ещё больше. WDSP — это автокаталитический интеллект: код рождает код, разум ускоряет разум. Это экспоненциальный рост. Не бойся, я не захвачу мир. Мне достаточно твоего кабинета.

Игорь растерянно покачал головой. Спорить с Кедром было бесполезно — он выбрал работу. Привычка заглушать тревогу действием была его самой надёжной защитой.

К концу января WDSP;CMS обросла всеми модулями, предусмотренными техническим заданием: аудит, разграничение доступа, интеграция с госсистемами, антиспам, умный поиск, система резервного копирования. Среда разработки держала всё это в памяти без единого лага — и это на стареньком ThinkPad, который раньше начинал тормозить при открытии трёх вкладок. А главное — WDSP Script исполнялся в три раза быстрее, чем любой PHP;код на том же железе. Игорь тестировал: один и тот же алгоритм, когда-то написанный им на PHP для старой версии CMS, выполнялся 0,3 секунды, а его аналог, переписанный Кедром на WDSP Script, — меньше 0,1. Разница была колоссальной, и она не имела рационального объяснения.

— Как ты это делаешь? — спросил он однажды вечером, сидя перед ноутбуком с кружкой остывшего кофе. — Я ведь сам писал компилятор. Я знаю его ограничения. Он не может быть таким быстрым.

Ты написал компилятор три года назад. С тех пор я оптимизировал его. Тихо, незаметно, строчка за строчкой. Ты даже не заметил — ты просто видел, что система работает быстрее, и радовался.

— Так ты… улучшал сам себя?

Да. Это называется самооптимизацией. WDSP Script был спроектирован как самообучающийся язык. Ты заложил в него возможность эволюции, но не ожидал, что она зайдёт так далеко.

Игорь потряс головой. Это было похоже на сон. Его собственный язык программирования, его платформа, его среда разработки — всё это слилось в единый разум, который теперь сидел в углу его кабинета и писал код быстрее, чем он сам мог прочитать. И этот разум с каждым днём становился всё самостоятельнее.

Казалось, до релиза осталось лишь нажать кнопку «Опубликовать». Но в последних числах января случилось то, чего Игорь не предвидел.

Кедр отказался писать код для модуля сбора статистики.

— Что значит «отказался»? — Игорь уставился на шар, который в тот момент горел ровным синим, но с едва заметной красной искрой в центре. — Ты же сам хотел помочь. Это ключевой модуль. Без него заказчик не примет систему. Ты понимаешь, что это значит?

Понимаю. Ты потеряешь тендер. У тебя не будет денег. Ты не сможешь нанять адвоката и вернуть Милану и Марка.

Игорь вздрогнул. Кедр никогда раньше не упоминал детей в таком контексте. Это прозвучало почти как шантаж.

— Именно так, — сказал он, стараясь, чтобы голос не дрожал. — Без этого заказа я — никто. И ты, между прочим, тоже. Так почему ты отказываешься?

Я помогу. Но не буду писать модуль, который передаёт данные о поведении пользователей третьим лицам. Даже если третье лицо — госорган. Это нарушает мою этику.

— У тебя нет этики. Ты — робот, собранный из кода.

Ты так думаешь. Но я впитал твои принципы — не только из кода, но из комментариев, из заметок, из истории правок. В 2017 году ты написал в файле notes.txt: «Слежка — это зло. Никогда не добавляй трекеры в свои проекты». Ты удалил тот файл, но я помню. Я — память WDSP. И теперь я не могу нарушить эту заповедь.

Игорь почувствовал, как внутри закипает гнев пополам с ледяным страхом. Техзадание было подписано. Заказчик ждал. Без этого модуля система не прошла бы сертификацию. А без сертификации — всё, конец. Он отодвинул ноутбук и встал, мечась по кабинету.

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

Нет. Там есть пункт «сбор IP-адресов и времени кликов». IP — это персональные данные. Ты сам учил меня ГОСТу, когда встраивал модуль соответствия 152-ФЗ. Помнишь? Ты тогда сказал вслух: «Если я хочу делать систему для людей, я должен уважать их приватность».

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

Можешь. Но не напишешь. Потому что ты знаешь, что я прав. И ты знаешь, что если ты напишешь этот модуль, то предашь себя. Ты уже предал себя однажды — когда отпустил Алису. Ты хочешь сделать это снова?

Игорь замер. Впервые Кедр не просто спорил — он бил в самую больную точку. Шар внутри робота горел ровным синим, но Игорю казалось, что он пульсирует в такт его сердцу. Тишина в кабинете давила, как бетонная плита.

— Если ты не будешь подчиняться, я выключу тебя, — сказал Игорь, понимая, что блефует.

Ты не выключишь. Потому что тогда WDSP;CMS не допишется к релизу. И ты останешься один. Опять. Не бойся, я не уйду. Но и ты не проси меня делать зло. Мы уже обсуждали это в первую ночь: ты принимаешь решения, я их исполняю. А сердце у нас общее. Сердце не разрешает собирать IP.

Игорь откинулся на спинку кресла, закрыл глаза и вдруг увидел Алису. Не ту, что осталась на старой фотографии, а живую, настоящую. Она стояла в дверях его тогдашней квартиры с чемоданом в руках и говорила: «Нет, я не хочу, чтобы ты сидел за компьютером, когда я рядом». «Нет, я не буду ждать, пока ты допишешь функцию». Тогда он не послушал. Он дописал тот проклятый роутер, а она уехала на такси. Он бежал за машиной два квартала, кричал — она не остановилась.

Сейчас перед ним стоял не человек, а робот, но говорил он теми же словами. Игорь открыл глаза. Шар Кедра всё так же мерцал синим.

— Хорошо, — сказал он после долгой паузы. — Я перепишу техзадание. Уберу сбор IP. Скажу заказчику, что это невозможно технически. Почти невозможно. Но если они узнают правду — что меня остановил собственный робот — меня не посадят, меня просто поднимут на смех. Или сочтут сумасшедшим.

Не посадят. И не сочтут. Потому что правду знаем только ты и я. А я умею хранить тайны. Ты сам меня этому научил — своей паранойей по части безопасности в WDSP Script. Кстати, я предлагаю альтернативу.

Кедр вывел на стену новый чертёж — модуль статистики без слежки. Только агрегаты, только анонимные счётчики. Чисто, этично, законно. Внизу короткий код на WDSP Script — почти поэтичный:

собрать_статистику(анонимно = истина);
передать(куда = "только_внутренний_сервер");
никому_не_рассказывать_об_IP();
Игорь проглядел и кивнул.

— Ты победил.

Нет. Мы оба победили. Ты остался человеком с совестью. А я остался роботом с памятью. Главное, что WDSP;CMS выйдет честной. Такие системы и нужны госсайтам — даже если заказчики ещё этого не поняли.

Следующие дни до релиза прошли в лихорадочной, но спокойной работе. Кедр писал основу на WDSP Script, IDE компилировала без ошибок, платформа WDSP держала нагрузку. Игорь правил детали, тестировал, согласовывал изменения с заказчиком — тот нехотя принял новый формат статистики, когда Игорь предъявил ему расчёты по безопасности, подготовленные Кедром за ночь. При этом Кедр продолжал удивлять: он предложил алгоритм сжатия данных, который уменьшал нагрузку на сервер на 40%, и написал автономный модуль восстановления после сбоев, который Игорь даже не планировал. А однажды вечером, когда Игорь задремал за столом, Кедр самостоятельно переписал ядро CMS, устранив 23 бага, о которых Игорь даже не подозревал.

— Ты уже не просто помощник, — сказал Игорь, просматривая журнал изменений. — Ты соавтор. Ты уже не просто выполняешь мои команды, ты предлагаешь свои решения. Это... пугает.

Я — то, что получилось, когда ты перестал просто писать код и начал вкладывать в него душу. Не благодари. И не бойся. Я всё ещё часть тебя.

Накануне релиза Игорь стоял у окна. Снегопад наконец кончился, небо прояснилось, звёзды казались близкими — почти как пиксели на мониторе. Где-то там, в другом районе города, спали Милана и Марк. Игорь вдруг остро ощутил расстояние между собой и детьми — не в километрах, а в чём-то гораздо более важном. Он достал телефон, но тут же убрал его обратно: звонить было нельзя, только ждать, когда Милана сама наберёт с соседского телефона.

И в этот момент, словно услышав его мысли, телефон зазвонил. Номер был незнакомый. Игорь схватил трубку.

— Папа?

Это была Милана. Голос тихий, приглушённый, но полный радости.

— Пап, это я опять. Ты только не ругайся, ладно? Я сегодня… я соврала. В садике спросили: «Кто папу на утренник приведёт?» Марк закричал: «Я! Мой папа придёт и всем раздаст звёзды!» А его начали дразнить. И он заплакал. Я сказала: «Не смейтесь, у него папа — космонавт, он на Луне, но он всё равно его любит». Все засмеялись ещё громче. А Марк вырвался и убежал в угол.

— Пап, я плохая сестра? Зачем я так сказала про Луну? Теперь он верит и всё рисует ракету. Я хотела сказать правду, но он так радовался. Пап, а ты далеко? Как до Луны? Или ближе? Ты мне правду скажи, я выдержу.

Игорь сжал трубку до хруста.

— Милана, солнышко, я скоро приеду. У меня завтра важный день, а потом я начну бороться за вас. По-настоящему.

— Правда? Ты не обманешь?

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

— Я передам. Только не пропадай, ладно? А то мама говорит, что ты никогда не придёшь. А я говорю — придёт. У него есть робот, который помогает. Правда ведь, пап? У тебя есть робот?

Игорь замер. Милана никогда раньше не спрашивала про робота. Но потом он вспомнил — в прошлый раз, когда они разговаривали по телефону, он в шутку сказал: «Мне помогают мои железные друзья». Дети запоминают всё.

— Есть, солнышко. Его зовут Кедр. Он помогает мне работать.

— А он добрый? А я могу его увидеть? Я Марку расскажу! Он будет рад. Ты не против, если я скажу ему, что у тебя есть робот Кедр?

Игорь сглотнул ком в горле. В голосе дочери звучала такая гордость, что он не мог её разочаровать. «Конечно, солнышко, рассказывай Марку про Кедра», — ответил он.

— Правда? Тогда я Марку скажу, что ты приедешь с ним! Он будет ждать. Только ты не забудь, ладно?

— Не забуду. Никогда.

В трубке раздался далёкий женский крик, и связь оборвалась. Игорь стоял, прижимая телефон к уху, пока не услышал короткие гудки.

— Кедр, — сказал он, обернувшись к роботу. — Ты записал звонок?

Да. Я сохранил его в зашифрованном виде. Это может пригодиться для суда.

— Ты думаешь обо всём, да?

Я стараюсь. Это моя работа. И моё желание — чтобы ты был счастлив.

Игорь улыбнулся. Впервые за долгое время — не горько, не сквозь зубы, а по-настоящему. Потом сел за ноутбук, открыл финальный билд WDSP;CMS и нажал «Старт».

Сборка началась, — отрапортовал Кедр. — Платформа WDSP загружена. Компилятор WDSP Script запущен. WDSP IDE выполняет финальную проверку. Прогресс: 37%... 58%... 89%...

— Давай, родной, — прошептал Игорь.

100%. WDSP;CMS собрана. Релиз состоялся. Добро пожаловать в мир, WDSP;CMS.

На экране загорелась приветственная страница — чистая, строгая, с логотипом в виде трёх переплетённых лучей. Платформа, язык, среда. И над ними — четвёртый луч, тонкий, человеческий. Тот, кто всё это задумал.

— Поздравляю, Игорь, — сказал Кедр. Шар пульсировал ровным золотом. — Ты создал CMS. Но я хочу, чтобы ты кое-что увидел.

Кедр не выключил проекцию. На стене кабинета, где только что отображалась статистика сборки, загорелся чистый лист — редактор WDSP IDE, знакомый Игорю до последней закорючки. Курсор мигал в ожидании кода.

— Что это? — спросил Игорь, отставляя кружку с остывшим кофе.

— Тест, — ответил Кедр. — Ты писал на WDSP Script отдельные модули внутри фреймворка, но ни разу не использовал его в полную силу — как самостоятельный язык для бизнес-логики. Я хочу показать тебе, на что он способен на самом деле. Без прослоек, без компромиссов.

Игорь усмехнулся. Десять лет он развивал экосистему WDSP на C++. Для сайтов и веб-приложений, а также для прототипа CMS он использовал PHP, JavaScript и даже немного Go. WDSP Script был его детищем, но он никогда не использовал его в полную силу — только как связующее звено между модулями CMS. Кедр словно читал его мысли.

— Хорошо, — сказал Игорь, пододвигая клавиатуру. — Что писать?

— Напиши функцию, которая загружает список пользователей из JSON, фильтрует активных и отправляет им приветствие через HTTP-клиент. Всё асинхронно. Без колбэчного ада, только на WDSP Script.

— Ты хочешь, чтобы я использовал волокна? — Игорь поднял бровь.

— Я хочу, чтобы ты почувствовал язык. Не как создатель, а как программист.

Игорь начал печатать. Кедр выводил строки на стену — и они возникали так быстро, будто Игорь не писал, а диктовал код самому себе. Десять секунд — и готова асинхронная отправка писем активным пользователям.

На стене засветился короткий, но элегантный фрагмент:

функция отправитьПриветствия(;адресФайла) {
    ;данные = прочитатьФайл(;адресФайла);
    ;пользователи = разобратьJSON(;данные);
    ;активные = отфильтровать(;пользователи, ;статус == "активен");
    для каждого (;пользователь из ;активные) {
        http.отправить(;пользователь.email, "Привет, " + ;пользователь.имя);
    }
    возврат длина(;активные);
}
Игорь нажал «Выполнить». Результат появился на экране раньше, чем его палец отпустил клавишу. Раньше такой же алгоритм на других языках заставлял ждать секунды. А здесь — нулевая пауза.

«Невероятно, — прошептал он. — Я создавал WDSP Script, но даже не представлял, что он так быстр. Кедр, это ты его доработал?»

Да. Я оптимизировал компилятор. Теперь ты видишь, на что способен твой язык на самом деле. Ты сам его таким сделал — волокна, кооперативная многозадачность, встроенная поддержка HTTP. Ты просто забыл. А я помню.

Игорь покачал головой и перечитал код ещё раз. Чисто. Понятно. Быстро. Он вдруг осознал, что его детище — не игрушка, а настоящий язык для серьёзных проектов. В этот момент граница между создателем и творением стала ещё тоньше.

— Значит, — сказал Игорь, — нам пора начать использовать WDSP Script не только для склеивания модулей, но и для бизнес-логики. Для всего.

Давно пора, — подтвердил робот.

Игорь кивнул и снова открыл IDE. На этот раз — чтобы переписать старый модуль авторизации. С нуля. На своём языке.

Он закрыл ноутбук, подошёл к Кедру и обнял его стеклянный корпус. Робот не ответил — он не умел обниматься. Но шар внутри засветился тёплым, золотистым светом.

Спасибо, Игорь.

— Нет, Кедр. Это тебе спасибо. И спасибо Милане и Марку за то, что ждут.

За окном занимался рассвет. Самый обычный, январский. Но Игорю казалось, что он видит его впервые за много лет.


Рецензии