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