Глава 1. Код, написанный до трех часов ночи
I
Линь Ифань уставился на сообщение об ошибке на экране, чувствуя, как у него в висках пульсирует тупая боль.
«Ошибка: ошибка сегментации (сброс ядра)»
Опять ошибка сегментации.
Он поднял руку и потер сухие глаза. На белом фоне экрана рябила густая паутина кода. PHP, Python, Go – окна трех проектов были открыты в ряд, и каждое ждало, пока он исправит баг. На доске для заметок в переговорной все еще висел стикер, оставленный сегодня во второй половине дня продакт-менеджером: «Релиз в пятницу без вариантов, иначе клиент отменит заказ».
Шел уже второй час сорок семь минут утра четверга.
Половина ламп дневного света в офисе погасла, и над его головой остался гореть лишь один ряд, заливая все мертвенно-бледным светом. Кондиционер автоматически отключился еще час назад, июньская ночь была душной, как в парилке, и капли пота с его лба скатывались по переносице и падали на клавиатуру с тихим стуком.
─ Мать вашу, ─ тихо выругался он, вытащил салфетку, чтобы вытереть лицо, и машинально поднес к губам успевший полностью остыть растворимый кофе, сделав большой глоток.
Горький, с отчетливым привкусом гари. Это его шестая чашка за ночь.
Линь Ифань в свои двадцать восемь лет уже три года отпахал в этой стартап-компании в Ханчжоу, где насчитывалось едва ли пятьдесят человек. Называли его full-stack инженером, но на деле он занимался всем подряд: фронтенд выдавал баг – он чинил, бэкенд падал – он держал удар, база данных начинала тормозить – он оптимизировал, да и серверы порой приходилось поднимать посреди ночи.
А зарплата? Двенадцать тысяч юаней в месяц. После вычета аренды за квартиру и социальных отчислений оставалось пять тысяч. В этом городе он жил словно муравей.
Он бросил взгляд на телефон – экран загорелся, обоями стояло звездное небо. Никаких новых сообщений, на иконке WeChat – ни единой красной точки.
Вообще-то он ждал весточки от одного конкретного человека.
Или, если точнее, все еще ждал ту, от которой вестей уже не дождаться.
Три месяца назад бывшая девушка Чжоу Ваньтин прислала ему последнее сообщение в WeChat: «Линь Ифань, ты во всех смыслах неплох, но от тебя совсем нет ощущения присутствия. Когда я с тобой, мне кажется, будто я встречаюсь со стеной». А следом – красный восклицательный знак.
Он не стал ее удерживать, потому что она была права.
Он и впрямь человек, лишенный какого-либо присутствия.
В университете – средние оценки, средняя внешность, рост метр семьдесят два: затеряешься в толпе. Не умеет говорить красивых слов, не умеет завязывать нужные знакомства, на корпоративах вечно сидит в уголке и молча хрустит арахисом. Коллеги зовут на обед – идет; наливают тост – пьет; зовут в караоке – качает головой: «У меня с голосом беда».
Его никто не ненавидел, но и по-настоящему никто не замечал.
Совсем как его код: главное – чтобы работал, а красиво или нет, никому не интересно.
Линь Ифань глубоко вздохнул и вернул внимание к экрану. Ошибка сегментации означала выход за границы памяти; просидев над кодом полчаса, он выяснил, что новенький стажер передал нулевой указатель. Он закомментировал злосчастный вызов и перезапустил сборку.
Прошло.
Он добавил еще один юнит-тест, чтобы впредь такого не повторялось. Затем переключился на другой проект: клиент жаловался, что платежный шлюз порой зависает по тайм-ауту, требовалось прикрутить механизм повторных попыток.
Написание кода было единственным занятием, которое, как ему казалось, у него получалось неплохо.
Дело было не в таланте – просто он пахал на износ.
В университете он учился на инженера связи, но профильные предметы давались с трудом, зато он сам увлекся сайтами и с головой ушел в это дело. После выпуска не мог найти работу, потратил три месяца на зубрежку «Совершенного кода», «Алгоритмов. Построения и анализа» и «Приемов объектно-ориентированного проектирования», решил три сотни задач на LeetCode – и только тогда устроился в эту крошечную компанию. А дальше пошло по накатанной: ночные бдения, наступание на грабли, чтение мануалов, правка багов.
За эти три года его технический уровень совершил невероятный скачок: из зеленого новичка, умеющего писать лишь простейший CRUD, он превратился в опытного спеца, способного самостоятельно проектировать архитектуру. Но зарплата почти не выросла, в должности его тоже не повысили – у компании не было денег, да и сам он не умел бороться за свое.
Он никогда не принадлежал к тем людям, которые могут стукнуть кулаком по столу и заявить: «Мне нужна прибавка».
Ровно в три часа ночи он дописал последнюю ветку логики повторов. Нажал сохранить, по привычке щелкнул Ctrl+S и собрался запустить компиляцию еще раз.
Едва палец коснулся клавиши, как в груди словно кто-то сжался огромной лапищей.
Дикая боль полыхнула в левой половине грудной клетки и молнией прострелила в левую руку и челюсть. Он приоткрыл рот, собираясь вскрикнуть, но не смог издавить ни звука.
Холодный пот вмиг пропитал спину насквозь.
«Инфаркт». Это слово пронеслось в голове с какой-то абсурдной безмятежностью.
Ему всего двадцать восемь. Не курит, не пьет, дважды в неделю бегает. Какой, к черту, инфаркт?
Но боль не лгала. Ощущение было такое, будто на грудь уселся слон, и каждый вдох давался с трудом, точно пьешь воду через соломинку. Левая рука начала неметь, по краям поля зрения заплясали черные точки.
Инстинктивно он потянулся за телефоном на столе, задел пальцами провод зарядки, стянув гаджет вниз – тот грохнулся на пол экраном вниз.
Он согнулся, пытаясь его поднять, потерял равновесие, соскользнул со стула, и колени гулко ударились о паркет.
Боль нарастала.
Распластавшись на полу, он судорожно сжимал телефон правой рукой, силясь включить экран и набрать 112. Но пальцы будто окоченели, застыв на стекле, и палец никак не желал скользить по значку вызова.
Свет экрана отражался на его лице.
Яркость падала.
Это не экран темнел – это он сам терял сознание.
Блин. Блин. Блин.
Он не хотел умирать. Не потому, что у него остались великие несбывшиеся мечты или он еще не успел обзавестись семьей, а потому, что... он так и не попробовал еду в том новом японском ресторанчике. Мысль эта казалась настолько нелепой, что ему захотелось рассмеяться, но сил на смех не было.
Боль в груди внезапно утихла.
Ей на смену пришло странное, невесомое ощущение.
Будто все его тело оторвалось от пола и куда-то поплыло.
Линь Ифань обнаружил, что смотрит на офис сверху. Он видел себя, распростертого на холодном полу, с запрокинутой головой и зажатым в левой руке телефоном. Лицо посинело, губы фиолетовые.
«Ах, ─ подумалось ему, ─ пожалуй, это и есть околосмертный опыт».
В научно-популярных статьях писали, что при нехватке кислорода в мозге возникают всевозможные галлюцинации. Кто-то видит белый свет в конце тоннеля, кто-то – ушедших родственников. А его мозг выдал ему видение в режиме... «вида от первого лица»?
Черт, даже галлюцинации оказались на редкость банальными.
Не успел он это подумать, как офис вокруг резко изменился.
Это было не плавное, сказочное преображение – скорее напоминало нажатие горячей клавиши «Показать исходный код».
Стены превратились в полупрозрачную сетку, и по каждой линии струились потоки цифр. Нули и единицы, но не в двоичном коде – цифры напоминали... координаты? Векторы? Кое-где попадались непонятные ему символы, похожие на гибрид математических формул и языков программирования.
Рабочие столы исчезли, уступив место паутине из световых точек. Каждая точка пульсировала по определенному закону, испуская слабые колебания частоты. Он «увидел», как на экране его собственного компьютера код перестал быть буквами и символами, превратившись в нити светящихся инструкций, которые обвивались друг вокруг друга подобно двойной спирали ДНК, устремляясь вверх, пробивая потолок, проходя сквозь все здание и уходя в звездное небо.
Код был живым.
Эта мысль не родилась в его голове – она просто хлынула прямо в сознание.
Проследив взглядом за этими светящимися строками выше, он увидел, что вся офисная высотка превратилась в сияющую башню, внутри и снаружи которой сновали бесчисленные потоки данных. Взглянув еще дальше, он заметил, как весь Ханчжоу обратился в гигантскую нейросеть, где каждая машина, каждый фонарь, каждый человек являлись нейронами, непрерывно отправляющими сигналы в эту сеть.
Еще выше.
Атмосфера превратилась в тонкую пленку, Земля стала синим шаром, а из земного ядра рвались наружу мириады потоков данных, излучаясь вдоль силовых линий магнитного поля. Луна, Солнце, планеты – каждое небесное тело служило узлом, транслирующим в космос собственный «код».
И дальше за их пределы.
Млечный Путь раскинулся светящимся рукавом, напоминающим некую спиральную структуру данных. Миллиарды звезд – и каждая была строчкой кода. Черные дыры походили на комментарии: они не выполнялись, но влияли на движение всех окружающих строк.
Сама вселенная являлась программой.
Линь Ифань «увидел» архитектуру верхнего уровня этой программы. В ней не было центрального процессора, операционной системы или компилятора. Она сама по себе выступала собственной средой выполнения. Правила равнялись коду, материя – данным, энергия – вычислительной мощности.
Самое интересное заключалось в том, что любое разумное существо представляло собой выполняемый поток.
А он сам в данный момент существовал в виде «плавающего указателя».
Его вдруг осенило: его мозг никак не мог самостоятельно вообразить столь сложную, самосогласованную и... точную модель вселенной.
Это не галлюцинация.
Это... правда?
В ту самую секунду, когда эта мысль мелькнула в сознании, его «точка обзора» резко дернулась назад. Словно кто-то нажал перемотку назад: Земля, Ханчжоу, высотка, офис – все понеслось вспять с невероятной скоростью. Он снова увидел себя, лежащего на полу, с посиневшим лицом и остановившимся сердцем.
Но в тело он не вернулся.
Он парил в метре над собственной оболочкой, наблюдая, как в районе груди тлеет слабый огонек.
Этот свет мерцал, постепенно угасая.
Подобно программе, которую вот-вот отправят в сборщик мусора.
Нет, погодите.
Если вселенная – программа, значит, он еще не дописал свой финальный патч анимации.
Он захотел «протянуть руку» и схватить этот сгусток света. Но у него не было рук. Было лишь сознание и упрямый, бунтующий, полный отчаянного упорства порыв.
Я не хочу умирать.
Эта мысль вонзилась иглой в угасающий огонек.
Тук.
Сердце возобновило работу.
Тук-тук.
Линь Ифань судорожно втянул воздух, словно вынырнувший на поверхность утопающий. Распластавшись на офисном полу, он крупно дрожал и жадно хватал ртом воздух. Пот вперемешку со слезами (он и сам не понял, когда заплакал) капал на кафельную плитку.
Боль в груди исчезла, сменившись жжением, будто в грудную клетку забросили раскаленный уголек.
Он перевернулся на спину, уставившись на гудящую над головой лампу дневного света.
Свет лампы казался каким-то другим.
Нет, другим стал весь мир вокруг.
Он видел пылинки, зависшие в воздухе, но не просто пылинки – каждую из них окружало едва заметное сияние, будто их удерживало слабое силовое поле. Стены больше не выглядели безжизненным слоем белой краски, они состояли из наложенных друг на друга текстур, и каждая текстура слегка вибрировала, напоминая... частоту обновления кадров?
Он медленно сел и опустил взгляд на свои руки.
Узоры на ладонях остались прежними, но теперь он видел, что под ними по венам течет вовсе не обычная кровь, а некая слабо светящаяся жидкость. Ритм, с которым это сияние пульсировало в сосудах, в точности совпадал с биением сердца.
─ Я... ─ проговорил он, и голос прозвучал хрипло, как наждачная бумага.
Он поднял оброненный телефон. Экран светился, показывая время: три часа пятнадцать минут ночи.
С момента приступа прошло меньше трех минут.
Но после того «взгляда» ему казалось, что минуло по меньшей мере несколько часов.
Обои на заставке все те же – звездное небо. Но теперь, глядя на них, он отчетливо чувствовал: расположение звезд неверное. Они не должны так располагаться. Некоторые светила должны быть чуть левее, другие – ярче.
Он и сам не понимал, откуда у него эта уверенность.
Словно... он воочию видел, как выглядит настоящая вселенная.
Телефон коротко визгнул.
Пришло новостное уведомление: «Ученые подтвердили аномальную анизотропию реликтового излучения, стандартная космологическая модель под угрозой».
Линь Ифань уставился на заголовок, сузив зрачки.
В его «галлюцинации» он «видел», что реликтовое излучение вовсе не эхо Большого взрыва, а нечто гораздо более фундаментальное – вроде лог-файлов при работе программы.
─ Это не совпадение, ─ пробормотал он.
И тут же подумал, как нелепо звучит эта фраза.
Переутомленный программист, едва переживший клиническую смерть, возомнил, будто узрел исходный код мироздания?
Ему нужно в больницу.
Опираясь на стол, он поднялся – ноги все еще слегка ватные. Собрал рюкзак, сунул телефон в карман и зашагал через пустой офисный зал. На рабочих местах валялись коробки из-под еды и недопитые энергетики, напоминая спешно покинутые окопы.
Ддобравшись до лифтового холла, он нажал кнопку вызова.
Двери распахнулись мгновенно.
Не придавая этому значения, он вошел внутрь. Нажал первый этаж, двери закрылись, и кабина поехала вниз.
В голове все еще немного шумело, он прислонился плечом к стенке лифта и закрыл глаза. В памяти снова всплыли те светящиеся куски кода, потоки данных, пульсирующие световые точки.
Слишком отчетливо.
Настолько отчетливо, что на галлюцинацию это не походило.
Он даже мог вспомнить конкретный «фрагмент» – где-то на орбите Юпитера он лицезрел цепочку описания структур, описывающую параметры движения планеты с помощью синтаксиса, похожего на Rust. В одном из полей значился комментарий: «// Параметр массы: рекомендованное значение 1.8986e27кг, текущая работа стабильна, но наблюдается дрейф в 15-м знаке после запятой».
Таких деталей человеческий разум выдумать не способен.
Дзынь.
Лифт прибыл на первый этаж.
Двери открылись, Линь Ифань вышел наружу. Кругом царила тишина ночной улицы, тускло горели фонари, изредка проносились такси. Листва платанов шелестела под ночным ветерком.
Оказавшись у входа в высотку, он вдруг почувствовал что-то неладное.
Он поднял голову к небу.
Световое загрязнение в Ханчжоу ужасное, обычно на небе разглядишь едва ли десяток звезд. Но сейчас он видел сотни. Нет, дело не в том, что он «увидел» больше звезд. Он физически «ощущал» траектории их света.
Каждый луч звездного света, прежде чем достичь его глаз, преломлялся и рассеивался в атмосфере, фотоны сталкивались в воздухе, точно пакеты данных в сети. Он «чувствовал» энергию, длину волны и время прибытия каждого отдельного фотона.
Этого не может быть.
Человеческий глаз не способен воспринимать детали на уровне фотонов.
Но он действительно это чувствовал.
Точно так же, как ощущал пульсацию огонька в собственной груди.
Глубоко вздохнув, он решил сначала отправиться в больницу на обследование. Если пройти по улице на запад метров двести, там как раз находилась приемная покоя Третьей народной больницы.
Сделав шагов десять, он остановился на перекрестке в ожидании зеленого сигнала.
Горел красный, таймер отсчитывал сорок три секунды.
Три часа ночи, дорога абсолютно пуста, ни единой машины.
В другое время он бы просто перешел на красный. Но сейчас, находясь в некоем полутрансе, он послушно остался стоять на месте.
Тридцать секунд.
Двадцать.
Десять.
В тот момент, когда таймер отсчитал три секунды, огонек у него в груди внезапно качнулся.
Не боль – скорее... подсказка. Наподобие умной подсказки компилятора, указывающей: «Здесь, возможно, баг».
Он инстинктивно перевел взгляд на противоположную сторону дороги.
Курьер на мопеде несся справа на скорости под шестьдесят, проскочив на красный свет; фары не горели, и в темноте он походил на черную молнию. Если бы Линь Ифань перешел дорогу пораньше, его бы уже снесло.
Курьер с ревом промчался мимо, взметнув порыв ветра.
Линь Ифань стоял на месте, чувствуя, как участилось сердцебиение.
И вовсе не потому, что чуть не попал под колеса.
А потому, что этот огонек выдал ему «подсказку».
Он опустил взгляд на грудь: сквозь футболку ничего не разглядеть. Но он знал – там появилось кое-что новое.
Нет, не появилось.
Что-то пробудилось.
Зажегся зеленый свет, и он перешел дорогу. Вывеска приемного покоя светилась в темноте, он вошел внутрь, взял талон и сел в ожидании вызова.
Дежурный врач – седовласый мужчина средних лет, похоже, тоже отработавший всю ночь, с черными кругами под глазами – измерил ему давление, послушал сердце, изучил кардиограмму.
─ Давление в норме, пульс семьдесят два, на кардиограмме явных отклонений нет, ─ врач снял фонендоскоп и нахмурился, глядя на него. ─ И вы говорите, у вас был внезапный инфаркт?
─ Боль в груди, онемение левой руки, помутнение сознания, длилось минут три-четыре, ─ честно перечислил Линь Ифань.
Доктор еще раз взглянул на кардиограмму, и выражение его лица стало несколько странным: ─ Судя по этой ленте, с вашим сердцем все в абсолютном порядке. Ферменты миокарда нужно проверить по крови, результатов придется ждать пару часов. Но я советую вам сделать КТ.
─ Хорошо.
Сдав кровь, Линь Ифань устроился на скамейке в приемном отделении в ожидании результатов.
Коридор пропах хлоркой и лекарствами, две лампы на потолке мигали, свет был тусклым. Рядом сидела старушка с перевязанной ногой, дремлющая с закрытыми глазами. Напротив устроилась молодая семья: ребенок с гелевым пластырем от жара на лбу прижался к материнской груди.
Линь Ифань чувствовал, как все происходящее вокруг стремительно теряет реальность.
Тридцать минут назад он был заурядным программистом, чьи главные заботы сводились к копеечной зарплате и упрекам бывшей в том, что от него нет никакого толка.
А теперь он побывал на пороге смерти, увидел исходный код вселенной и научился заранее чуять опасность.
Он вытащил телефон, открыл заметки и принялся фиксировать то, что только что узрел.
«Вселенная – программа. Материя – данные. Правила – код. Сознание – потоки», – быстро печатал он. – «В околосмертном состоянии получил некие привилегии, могу "видеть" базовую структуру. Пока неясно, временно это или навсегда».
Он замер на секунду, обдумал написанное и добавил еще строчку:
«„Огонек“ в груди – источник энергии, дает пассивное предупреждение об опасности».
Закончив набирать, он перечитал эти строки и подумал, что сошел с ума.
Программист, едва избежавший внезапной смерти, возомнил себя избранным? Слишком по-детски. Словно перечитал сетевых романов.
Но он не мог отмахнуться от деталей.
Масса Юпитера составляет 1.8986×1027 кг, а каково значение в 15-м знаке после запятой? Обычный человек не может знать точное число. Но он «видел» это число... он напряг память, словно считывая кеш из оперативной памяти.
1.8986 × 1027 кг, а то самое дрейфующее десятичное значащее... это...
3.141592653589793?
От этой цифры по спине пробежал холодок.
Число Пи.
Значение дрейфа массы Юпитера оказалось числом Пи.
Что это значит? Если вселенная – программа, этот комментарий доказывал лишь одно: кто-то в определенный момент намеренно прописал данное значение. Пи – не природная константа, а число, которое какой-то кодер вбил вручную.
Картина вселенной в его голове мгновенно трансформировалась из «самозародившейся программы» в «программу, написанную кем-то искуственно».
Спроектированная вселенная.
И он, обычный программист из Ханчжоу, в три часа ночи в офисе из-за куска кода с выходом за границы памяти случайно пережил околосмертный опыт, а затем...
Обнаружил бэкдор, который находить было никак нельзя.
Пока он погружался в эти жуткие мысли, внезапно зазвонил телефон.
На экране высветилось: Чжоу Ваньтин.
Половина четвёртого утра, звонит бывшая девушка.
В обычное время он бы долго сомневался, а потом дрожащей рукой принял вызов, жутко нервничая и не зная, что сказать. Но теперь, после перенесённого инфаркта, клинической смерти и созерцания исходного кода вселенной, при виде этого имени он почувствовал лишь абсолютное спокойствие.
Он ответил на звонок.
─ Ифань? ─ голос Чжоу Ваньтин звучал слегка встревоженно, совсем не так холодно, как обычно. ─ С тобой что-то случилось?
Линь Ифань опешил: ─ С чего ты взяла?
─ Мне... приснился сон, ─ она помедлила, и её голос стал неуверенным. ─ Будто ты упал в офисе, и везде кровь. Я проснулась в ужасе и сразу позвонила тебе.
Линь Ифань помолчал несколько секунд.
Он действительно упал в офисе. Но крови не было. Откуда в её сне взялась кровь?
─ Я в порядке, ─ сказал он. ─ Засиделся за работой, стало чуть нехорошо, сейчас я в больнице.
На том конце провода долго молчали.
─ Ты думаешь, я вру? ─ неожиданно спросила Чжоу Ваньтин, и её голос слегка задрожал. ─ Зря я вообще позвонила. Мы же расстались.
─ Спасибо, что позвонила, ─ произнёс Линь Ифань, и его тон оказался гораздо спокойнее, чем он ожидал. ─ Клянусь, со мной всё хорошо. Ложись спать.
─ Ты... ─
─ Спокойной ночи.
Он сбросил вызов.
Не потому, что ему не хотелось с ней разговаривать. Просто в его голове одновременно крутилась тысяча вопросов, и у него не осталось свободных вычислительных ресурсов на бывшую девушку.
Его вдруг посетила мысль: почему Чжоу Ваньтин приснилось, будто с ним стряслась беда?
Если вселенная – это программа, а сознание – поток, то разве эмоциональная связь между двумя людьми не является некоей межпроцессной коммуникацией? Её поток зафиксировал его анормальное состояние, инициировал прерывание, а затем вывел его в виде «сна»?
Это не мистика.
Это системная архитектура.
Линь Ифань поднялся на ноги и принялся расхаживать туда-сюда по коридору, а искра в груди пульсировала в такт его шагам. Он чувствовал, что она не является материальным объектом... скорее, это «соединение», привязанное к тому миру нижнего уровня, который он только что узрел в состоянии клинической смерти.
Ему требовалось кое-что проверить.
Он подошёл к выходу из приёмного покоя, за дверями расстилалась улица. Под фонарём рос платан, ствол которого был толщиной сантиметров сорок.
Линь Ифань остановился под деревом, протянул руку и прикоснулся к коре.
Загрузка главы...

Комментарии

Загрузка...