Шрифт:
Интервал:
Закладка:
— Думаешь, Райнер записал на диск неверный код?
— У меня было такое подозрение. Но зачем ему так поступать?
— Возможно, по ошибке.
— Трудно представить. Он всё так педантично зашифровал — и тут допустил такую грубую ошибку.
— Может быть, на самом деле он задумал это иначе. Может быть, он не хотел, чтобы кто-либо завладел исходным кодом, и выдумал всё это как обманный манёвр.
Лиза пожала плечами.
— Не уверена. Уверена только в том, что всё, что мне удалось понять, не имеет смысла. Это однозначно код на С++, но он какой-то неправильный.
— Может быть, он зашифрован?
— Если бы код был зашифрован, мы бы увидели нагромождение непонятных символов, а не явно читаемый код на С++. И тогда я не смогла бы его скомпилировать.
Некоторое время они шли молча. В голове Марка шевелилась неясная догадка. Они что-то упускают из вида. Но только он не понимал, что именно.
Солнце зашло, и они повернули назад. Чёрные облака плыли, словно воздушные киты, по тёмно-бордовому небу.
— Кто последним добежит до квартиры, моет посуду! — закричал Марк и побежал.
Раньше он бегал быстро, но сейчас был не в лучшей форме. Лиза без труда нагнала его.
— О’кей! — прокричала она, поравнявшись с ним. Вдруг он ощутил под ногами препятствие, споткнулся — и упал со всего маха во влажный песок. Лиза с хохотом умчалась прочь.
— Так нечестно! Ставить подножки! Я тебе ещё покажу! — закричал Марк и поднялся на ноги.
Догнать Лизу ему удалось лишь у двери в квартиру. Пока он, запыхавшись, доставал из кармана ключ, она торжествующе улыбалась.
— Я всегда говорю, что мытьё посуды — мужская работа.
Он взглянул на неё притворно злым взглядом.
— А я всегда говорю, что женщины выигрывают, жульничая.
Она продолжала улыбаться.
— Бывает. Неожиданно, почти с болезненной ясностью он осознал близость её тела. Её запах смешивался с запахом морской соли, который исходил от намокшей одежды. Его пульс всё ещё был частым из-за бега и не хотел успокаиваться. Марк взглянул в глубину Лизиных глаз и забыл обо всём на свете. Она не прятала взгляда. После долгой паузы она улыбнулась и сказала:
— Я думала, ты дверь хочешь открыть.
Марк заморгал и, смущённо разглядывая ключ в своей руке, почувствовал, что краснеет.
— Лиза, я… когда всё это закончится… — пробормотал он.
— Не говори того, о чём после пожалеешь! — она приложила палец к его губам.
Он кивнул и толкнул дверь.
Пока он хлопотал на кухне, Лиза продолжала работать. Когда запах печёного теста и салями начал заполнять маленькую квартиру, Марк встал рядом с Лизой и, склонившись над её плечом, стал наблюдать, как она листает бесконечный исходный код.
— Видишь? — сказала она и указала на экран. — Эта функция тут не имеет никакого смыла! Её не вызывает ни одна строчка кода, но сама она занимает несколько сотен строк. Я уверена, что Райнер написал это не из-за рассеянности — он был крайне организованным и точным. Я просто не въезжаю!
Марк пожал плечами. Он немного обучался программированию в университете, однако С++ лежал явно вне его компетенций. Если уж Лиза не понимала код, то у него не было и шанса.
— Возможно ли, что он сам себя меняет? Что эта функция активируется, когда оживает Пандора? Я читал, что в человеческой ДНК есть множество частей, которые обычно неактивны, но могут «включиться» под воздействием определённых условий.
Лиза наморщила лоб.
— Не исключено. Но это не объясняет того, почему код в этом месте совсем ничего не делает после компиляции. Что-то здесь не так. У меня ощущение, что мы не заметили чего-то принципиально важного.
— Мне тоже так кажется, — поддержал Марк.
Было что-то, на что он обратил внимание, но не посчитал важным и тут же забыл. И теперь он при всём желании не мог вспомнить об этом.
Он ходил кругами по маленькой гостиной, блуждал взглядом по мещанской обстановке, смотрел на фотографии в серебряных рамках на комоде. Вот — родители Юлии в день свадьбы на яхте, с маленькой Юлией — на пляже. Юлия в детском возрасте — на соревновании по верховой езде. Была даже совместная фотография Марка и Юлии. Они стояли, держась за руки, на краю Большого каньона. Странное чувство тоски всколыхнулось в его душе при взгляде на эту фотографию. Там была другая жизнь, другой мир.
Вначале они любили друг друга. Он уехал учиться в США на год по обмену, совсем скоро после их первой ночи. Вопреки опасениям они сохранили верность в отношениях. Почти каждый день отправляли друг другу письма, старомодные, на бумаге. Письма Юлии всегда пахли духами, она часто украшала их нарисованными сердечками или зверушками. Они до сих пор — где-то на чердаке…
Он вздрогнул.
— Письмо! — закричал он.
Лиза посмотрела на него, ничего не понимая.
— Что?
— Что-то важное было в письме Райнера Еве Вайзенберг. Я сейчас не вспомню, что именно он написал. Что-то вроде «ты меня знаешь, поэтому ты поймёшь, как его читать». Я ещё удивился, ведь Ева Вайзенберг явно не была программисткой, а потом забыл.
Лиза открыла файл: «Теперь, когда меня уже, скорее всего, нет на свете, и я не могу позаботиться о своём творении, я доверяю тебе эту тайну: прилагаемый файл PANDORA.ТХТ содержит код исходной программы. Ты меня знаешь, поэтому поймёшь, как его читать…»
Лиза кивнула.
— Я тоже тогда не поняла это предложение, но в спешке позабыла о нем. Райнер что-то сделал с исходным кодом и оставил ей подсказку, — она вздохнула. — Он нас всё больше запутывает.
— «Ты меня знаешь», — что он хотел этим сказать?
— Понятия не имею.
— Может быть, код нужно читать в обратном порядке?
Лиза махнула рукой.
— Получится бессмыслица, из которой компилятор ничего не поймёт. Изменение порядка строк тоже ничего не даст. Порядок, в котором перечислены функции, не играет никакой роли, а если его нарушить внутри функции, то она перестанет работать. Гляди, вот у меня структура if-then-else[51], которую я не могу начать с «else».
Марк смутно помнил, что речь идёт о ветвлении команды по принципу если-то-иначе, в котором «else» определяло случай, когда условий для ветвления не было. Лиза была права — простое изменение порядка следования команд ничего не даст.
Он чувствовал себя беспомощным — в программировании разбирался слабо и ничем не мог помочь Лизе, которая, как и он, топталась на месте.
Марк решил проработать проблему логически. Существовало две возможности: код на диске был