Страница 50 из 89
– Дай сюда эту чертову штуку! – сказал Дэвид, отбирая у Чарли флакон.
– Я думаю, это может нам пригодиться, – невинным тоном произнес Чарли. – Только надо приделать устройство для дистанционного управления.
Из дальней комнаты вышла Рози, держа в руках блестящий цилиндр, с которого свисали провода.
– Это не подойдет? Кажется, это соленоидный переключатель.
– Да, – сказал Дэвид. – Но вряд ли он сможет развить достаточное давление, чтобы сжать этот флакон. Они там разные? Нужно что-нибудь побольше.
– Не забывайте – нужен еще механизм дистанционного управления, – напомнил Чарли. – Если только вы не хотите выйти туда и обрызгать эту дрянь собственноручно.
Мае выбралась из подвальчика, держа в руках тяжелый металлический цилиндр. Она подошла к умывальнику, прихватив по пути бутыль с жидкостью соломенного цвета. Потом надела толстые прорезиненные перчатки и начала смешивать изотопы с жидкостью. Счетчик радиации над мойкой затрещал.
В наушнике раздался голос Рики:
– Ребята, вы ничего не забыли? Если даже у вас будет дистанционное управление, как вы собираетесь заставить облако приблизиться к опрыскивателю? Я почему-то сомневаюсь, что рой просто прилетит и зависнет где надо, пока вы будете его опрыскивать.
– Мы придумаем, чем его подманить, – сказал я.
– Чем это, например?
– Их можно приманить кроликом.
– Но у нас нет кролика.
Чарли сказал:
– Знаешь, Рики, у тебя очень негативное мышление.
– Я всего лишь сообщаю вам факты.
– Спасибо, что поделился умными мыслями, – заявил Чарли.
Так же как Мае, Чарли тоже заметил, что Рики всеми силами пытается нам помешать. Рики как будто хотел, чтобы рои уцелели. В этом не было никакого смысла. Однако он вел себя именно так.
Я хотел бы сказать Чарли кое-что относительно Рики, но через переговорные устройства меня бы услышали все. Такова неприятная сторона современных средств связи – твои слова может подслушать кто угодно.
– Эй, ребята! – окликнул нас Бобби Лембек. – Как там у вас дела?
– Разбираемся тут, что к чему. А что?
– Ветер ослабевает.
– Какая сейчас скорость ветра? – спросил я.
– Пятнадцать узлов. А было восемнадцать.
– Пятнадцать – не так уж мало, – сказал я. – Все в порядке.
– Я знаю. Просто предупреждаю вас.
В соседней комнате Рози спросила:
– Что такое термит? – она держала в руках пластиковую коробку, наполненную металлическими цилиндриками размером с большой палец.
– Поосторожнее с ними, – сказал Дэвид. – Наверное, это осталось после строителей. Видимо, они делали термитную сварку.
– Но что это такое?
– Термит – это смесь алюминия и оксида железа, – пояснил Дэвид. – Он дает очень высокую температуру горения – три тысячи градусов – и горит так ярко, что смотреть невозможно. Термитом плавят сталь для сварки.
– Много там таких штук? – спросил я у Рози. – Возможно, они нам пригодятся сегодня ночью.
– Там их четыре ящика. – Она достала один цилиндрик из коробки. – А как их поджигают?
– Осторожнее, Рози. Они в магниевой оболочке. Могут вспыхнуть от любого случайного источника тепла.
– Даже спичкой можно поджечь?
– Если хочешь остаться без руки. Лучше использовать сигнальные ракеты или осветительные патроны. Что-нибудь с фитилем.
– Понятно, – сказала Рози и скрылась за углом.
Счетчик радиации все еще щелкал. Я повернулся к умывальнику. Мае уже закрыла контейнер с изотопом и теперь переливала золотистую жидкость в бутылку из-под «Виндекса».
– Эй, ребята, слышите меня? – это снова был Бобби Лембек. – Я наблюдаю некоторую нестабильность. Ветер затихает. Скорость уже упала до двенадцати узлов.
– Хорошо, – сказал я. – Не нужно сообщать нам о малейшем изменении, Бобби.
– Просто я заметил нестабильность, вот и все.
– Я думаю, пока нам ничего не угрожает, Бобби.
Как бы то ни было, Мае должна справиться за несколько минут. Я подошел к компьютерному терминалу и включил его. Экран засветился, появилось меню. Я спросил:
– Рики, могу я вывести код роя на этот монитор?
– Код? – переспросил Рики. В его голосе мне послышались тревожные нотки. – Зачем тебе понадобился код?
– Я хочу посмотреть, что вы, ребята, туда наворотили.
– Зачем?
– Рики, бога ради, могу я его увидеть или нет?
– Можешь, конечно, можешь. Все версии кода в директориях через слэш после кода. Они запаролированы.
Я нашел нужную директорию. Но войти в нее не смог.
– Какой пароль, Рики?
– Пароль – л-а-н-г-т-о-н, все буквы строчные.
– Хорошо.
Я ввел пароль. И вошел в директорию, в которой были собраны все модификации программы, с указанием размера файла и даты изменений. Все документы были больших размеров. Это означало, что в них – все программы для разных аспектов системы роя. Потому что коды самих частиц обычно бывают маленькими – всего несколько строчек, на восемь-десять килобайт, не больше.
– Рики.
– Да, Джек.
– Где коды частиц?
– Их там нет?
– Черт тебя дери, Рики, перестань увиливать!
– Слушай, Джек, это не я занимался архивами…
– Рики, это рабочие файлы, а не архивы, – сказал я. – Скажи мне, где они?
Он помолчал немного, потом сказал:
– Там должна быть субдиректория Си-Ди-Эн. Коды в ней.
Я прокрутил страничку вниз.
– Вижу.
В этой директории я нашел список файлов, все – очень маленькие. Судя по датам модификаций, они начали создаваться около шести недель назад. А за последние две недели ничего нового не появилось.
– Рики, вы не меняли коды последние две недели?
– Да, примерно столько.
Я открыл самый последний документ.
– Вы делали краткие сводки?
Когда эти ребята работали в моей группе, я всегда требовал, чтобы они составляли краткое описание структуры программы на обычном языке. Такую сводку просмотреть гораздо проще, чем документацию внутри самого программного кода. К тому же, когда требуется сжато описать структуру программы, нередко удается решить логические проблемы.
– Они должны быть там же, – сказал Рики.
Я увидел на экране следующее:
/*Инициализировать*/
Для 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))/*отслеживать ближайшие агенты*/
Я какое-то время изучал записи, пытаясь понять, что они в них изменяли. Потом я пролистал вниз, до описания окончательного кода, чтобы посмотреть, как в конце концов они это выполнили. Но самого главного кода в папке не было. Вся совокупность поведения частиц была обозначена как объект со ссылкой на нечто под названием «комп. стат.».
– Рики, – сказал я. – Что такое «комп. стат.»? Где это?
– Должно быть там…
– Его здесь нет.
– Ну, я не знаю… Может, его скомпилировали.
– Но мне-то от этого не легче, правда? – Скомпилированный код прочитать невозможно. – Рики, я хочу увидеть этот чертов модуль. В чем проблема?
– Да нет никакой проблемы… Мне придется его поискать, вот и все.
– Хорошо…
– Я сделаю это, когда вы вернетесь.
Я посмотрел на Мае.
– Ты можешь найти код?
Она покачала головой. По выражению ее лица я понял, что кода мне не видать как своих ушей, что Рики будет придумывать все новые и новые отговорки, чтобы не допустить меня к нужной информации. Я только не понимал почему. В конце концов, я ведь затем сюда и приехал, чтобы помочь им разобраться с кодом. Я эксперт в этой области.