– Хочется вам верить! Так что вы хотели смотреть в первую очередь?
– Шлемы для виртуальной реальности.
– Следуйте за мной, если вы настаиваете…
– Благодарю!
Старик пошаркивая довольно резво двинулся в другой конец павильона. Антон шел следом, не отставая. В музее не было других посетителей. Они подошли к полкам, где выставлены устройства для моделирования трехмерных графических объектов. Их была не одна сотня. Ничего себе! И откуда столько денег?!
– Вы заверяли, что все экспонаты действующие. Можно, я попробую их в работе!
– Это музей, а не лавка!
– Я не могу найти подходящее устройство для работы. Если такое есть у вас, то я хорошо заплачу за его прокат. Мне оно понадобится на две недели или меньше…
– А если оно придет в негодность?
– Я заплачу столько, что вы купите другое и еще останетесь с прибылью…
– Тогда купите сами! Зачем выбрасывать лишние деньги…
– К сожалению, я не знаю, какое мне подойдет, и нет времени на поиски.
– Вы не знаете, чего хотите!
– Вы правы. Как раз тот случай, – вдруг Антона осенило. – Предлагаю компромисс! Я сейчас у вас выберу подходящую модель, а вы мне поможете найти и купить аналогичную. Я оплачу ваши хлопоты.
– Не знаю, не знаю…,– заколебался Слоним.
– Неужели вы откажете в помощи человеку?! Если бы вы знали, как это важно для меня!
– Я добрый человек, поэтому сдаюсь. Надеюсь, вы заплатите вперед за риск…
– Я готов! Сколько?
– Залог тысяча пятьсот и за амортизацию триста. Залог вам вернут, если ничего не случится.
– Согласен! – ответил Антон и подумал: «А старик-то скряга». Подобный шлем новый стоил столько…
На своем скрине Антон ввел сумму и направил электронный чек на счет, который указал Слоним.
Расход Антон понес не напрасно. В коллекции музея он нашел шлем, где были использованы дисплеи того же типа, что и в устройстве, предоставленном странными заказчиками. Слоним отыскал досье на экспонат и пояснил, что дисплеи сняты с производства, так как было несколько случаев повреждения глаз. Фирма-изготовитель дисплеев проиграла судебный процесс и обанкротилась. Складские запасы успели кому-то сбыть, хотя по решению суда они подлежали уничтожению. Теперь коллекционеры за них платили большие деньги. Узнав все это, Антон простил старику его жадность.
– Может, вы решитесь все же отдать мне шлем напрокат?
– Что мне с вами делать?! Удвойте залог, и я согласен.
– Договорились! Давайте составим контракт.
– Зачем нам формальности?! Вы доплачиваете залог и забирайте шлем. Я вам верю. Оставьте только свой адрес и имя… Потом я вычту из залога по десятке за день и все дела.
– Я оставлю, только у меня просьба. Никому не говорите о нашей сделке. Если каким-то образом узнает моя семья, у меня будут крупные неприятности.
– Будьте спокойны на этот счет! Это и моя маленькая коммерческая тайна…
Поздно вечером после тщательной подготовки Антон забронировал на полчаса нужные для эксперимента вычислительные ресурсы Супермозга, и опробовал программу в условиях, близких к условиям реальной эксплуатации. Результат первого пуска программы был выше всяких ожиданий. Однако второй запуск разочаровал. Освещение объектов получалось такое же неживое, как и без программы Антона… Антон повторил компиляцию программы, то есть построил ее заново из исходного текста. Опять первая сцена прошла нормально, а на второй проявилась та же ошибка. Ему показалось, что он обнаружит ее без особого труда. Однако шли минуты, часы, а причина ошибки еще не была установлена.
Когда небо за окном стало серым, Антон злой и голодный отправился на кухню. Он терялся в догадках. Ведь структура программы была им тщательно продумана. Все функции проверены по входу и выходу. Каждая в отдельности работает правильно, а вместе отрабатывают только один цикл. Нетрудно было догадаться, что в работе модулей возникают взаимные помехи. Один из них портит какие-то переменные другого. Обычная ситуация в сложных программных комплексах. Методы поиска таких ошибок были известны. Все упиралось во время. Программа содержала более тысячи переменных и сотни модулей…
Антон решил отоспаться. Потом со свежими силами, действуя системно, он локализует ошибку. Жаль, что напрасно потратил столько арендованного компьютерного времени. Это ему влетит в копеечку, можно сказать, что пару дней он отработал в «бункере» бесплатно. Если еще и срок не выдержит…
После сна он действительно справился с проблемой за час. По таблицам перекрестных ссылок просмотрел все программные объекты и обнаружил, что один из модулей использовал глобальный объект как локальный. Когда этот модуль отрабатывал, остальные функции, использующие глобальный объект, переставали работать.