— Эй, ребята! — окликнул нас Бобби Лембек. — Как там у вас дела?
— Разбираемся тут, что к чему. А что?
— Ветер ослабевает.
— Какая сейчас скорость ветра? — спросил я.
— Пятнадцать узлов. А было восемнадцать.
— Пятнадцать — не так уж мало, — сказал я. — Все в порядке.
— Я знаю. Просто предупреждаю вас.
В соседней комнате Рози спросила:
— Что такое термит? — она держала в руках пластиковую коробку, наполненную металлическими цилиндриками размером с большой палец.
— Поосторожнее с ними, — сказал Дэвид. — Наверное, это осталось после строителей. Видимо, они делали термитную сварку.
— Но что это такое?
— Термит — это смесь алюминия и оксида железа, — пояснил Дэвид. — Он дает очень высокую температуру горения — три тысячи градусов — и горит так ярко, что смотреть невозможно. Термитом плавят сталь для сварки.
— Много там таких штук? — спросил я у Рози. — Возможно, они нам пригодятся сегодня ночью.
— Там их четыре ящика. — Она достала один цилиндрик из коробки. — А как их поджигают?
— Осторожнее, Рози. Они в магниевой оболочке. Могут вспыхнуть от любого случайного источника тепла.
— Даже спичкой можно поджечь?
— Если хочешь остаться без руки. Лучше использовать сигнальные ракеты или осветительные патроны. Что-нибудь с фитилем.
— Понятно, — сказала Рози и скрылась за углом.
Счетчик радиации все еще щелкал. Я повернулся к умывальнику. Мае уже закрыла контейнер с изотопом и теперь переливала золотистую жидкость в бутылку из-под «Виндекса».
— Эй, ребята, слышите меня? — это снова был Бобби Лембек. — Я наблюдаю некоторую нестабильность. Ветер затихает. Скорость уже упала до двенадцати узлов.
— Хорошо, — сказал я. — Не нужно сообщать нам о малейшем изменении, Бобби.
— Просто я заметил нестабильность, вот и все.
— Я думаю, пока нам ничего не угрожает, Бобби.
Как бы то ни было, Мае должна справиться за несколько минут. Я подошел к компьютерному терминалу и включил его. Экран засветился, появилось меню. Я спросил:
— Рики, могу я вывести код роя на этот монитор?
— Код? — переспросил Рики. В его голосе мне послышались тревожные нотки. — Зачем тебе понадобился код?
— Я хочу посмотреть, что вы, ребята, туда наворотили.
— Зачем?
— Рики, бога ради, могу я его увидеть или нет?
— Можешь, конечно, можешь. Все версии кода в директориях через слэш после кода. Они запаролированы.
Я нашел нужную директорию. Но войти в нее не смог.
— Какой пароль, Рики?
— Пароль — л-а-н-г-т-о-н, все буквы строчные.
— Хорошо.
Я ввел пароль. И вошел в директорию, в которой были собраны все модификации программы, с указанием размера файла и даты изменений. Все документы были больших размеров. Это означало, что в них — все программы для разных аспектов системы роя. Потому что коды самих частиц обычно бывают маленькими — всего несколько строчек, на восемь-десять килобайт, не больше.
— Рики.
— Да, Джек.
— Где коды частиц?
— Их там нет?
— Черт тебя дери, Рики, перестань увиливать!
— Слушай, Джек, это не я занимался архивами…
— Рики, это рабочие файлы, а не архивы, — сказал я. — Скажи мне, где они?
Он помолчал немного, потом сказал:
— Там должна быть субдиректория Си-Ди-Эн. Коды в ней.
Я прокрутил страничку вниз.
— Вижу.
В этой директории я нашел список файлов, все — очень маленькие. Судя по датам модификаций, они начали создаваться около шести недель назад. А за последние две недели ничего нового не появилось.
— Рики, вы не меняли коды последние две недели?
— Да, примерно столько.
Я открыл самый последний документ.
— Вы делали краткие сводки?
Когда эти ребята работали в моей группе, я всегда требовал, чтобы они составляли краткое описание структуры программы на обычном языке. Такую сводку просмотреть гораздо проще, чем документацию внутри самого программного кода. К тому же, когда требуется сжато описать структуру программы, нередко удается решить логические проблемы.
— Они должны быть там же, — сказал Рики.
Я увидел на экране следующее:
/*Инициализировать*/
Для j=1 до LxV выполнить
Sj=0 /*установить начальный запрос до 0/
Закончить для
Для i=L до z выполнить
Для j=1 до LxV выполнить
Sij = (состояние (x,y,z))/*пороговые параметры агента*/
0ij = (требуемые (Сj,Нj))/*требуемые параметры агента*/
Реакция = 0/*начало реакции агента*/
Зона = z(i)/*начальная зона, не изученная агентом*/
Охват = 1/*активация перемещения агента*/
Закончить для
Закончить для
/* Главное*/
Для k1=1 до RVd выполнить
Для tm=1 до nv выполнить
Для S=L до j выполнить/*выслеживание окружающего*/
0ij = (требуемые (Сj,Нj))/*требуемые параметры агента*/
Sij (состояние (x,y,z))/*агент находится в движении*/
SikL = (действительное(x,y,z))/*отслеживать ближайшие агенты*/
Я какое-то время изучал записи, пытаясь понять, что они в них изменяли. Потом я пролистал вниз, до описания окончательного кода, чтобы посмотреть, как в конце концов они это выполнили. Но самого главного кода в папке не было. Вся совокупность поведения частиц была обозначена как объект со ссылкой на нечто под названием «комп. стат.».
— Рики, — сказал я. — Что такое «комп. стат.»? Где это?
— Должно быть там…
— Его здесь нет.
— Ну, я не знаю… Может, его скомпилировали.
— Но мне-то от этого не легче, правда? — Скомпилированный код прочитать невозможно. — Рики, я хочу увидеть этот чертов модуль. В чем проблема?
— Да нет никакой проблемы… Мне придется его поискать, вот и все.
— Хорошо…
— Я сделаю это, когда вы вернетесь.
Я посмотрел на Мае.
— Ты можешь найти код?
Она покачала головой. По выражению ее лица я понял, что кода мне не видать как своих ушей, что Рики будет придумывать все новые и новые отговорки, чтобы не допустить меня к нужной информации. Я только не понимал почему. В конце концов, я ведь затем сюда и приехал, чтобы помочь им разобраться с кодом. Я эксперт в этой области.