«Ладно, Умник, – согласился я, – твой выход. Только описывай каждый свой шаг и консультируйся со мной». Я сел на землю рядом с площадкой, контролируемой эльфийским плетением, в позу лотоса, закрыл глаза, отключился от окружающего мира и стал смотреть, как Умник будет разбирать и корежить изделие детей леса.
«Так, смотри, – начал Умник, разворачивая у меня перед глазами картинку, выделяя стрелками и свечением части плетения, о которых ведется речь, – это датчики влажности. Физика способа, которым они контролируют почву, не очень ясна, но это в данный момент неважно».
«Почему?» – тут же удивился я. Большой опыт программиста мне подсказывал, что мелочей на самом деле не бывает. Когда нужно интегрировать чужую разработку с собственной, а интерфейсы и протоколы обмена информацией не очень подходят, порой какая-нибудь мелочь позволяет эффективно решить задачу.
Конечно, правильнее объединять в единое целое любой софт, чужой и свой, на основе объектно-ориентированного подхода, переписывая куски, которые этим принципам не соответствуют. Результат всегда получается намного более качественным. Но, увы, жизнь редко соответствует идеальным правилам. Порой важно, чтобы программа заработала как можно скорее. И пусть ее поведение будет не слишком надежным, пусть отдельные подсистемы будут соединены довольно коряво и временами станут сыпаться, но важно, чтобы какой-то полезный результат был здесь и сейчас, а не через неделю или месяц работы над нормальной интеграцией.
«Потому, – ответил Умник, – что при демонстрации действия плетения в самом начале я снял все протекающие в датчиках процессы на магическом уровне, как при активации, так и при деактивации. Теперь их даже включать повторно не надо – и так понятно, что они делают и какие магические сигналы генерируют в тех или иных случаях. Или мне следует подробно раскопать и объяснить сами плетения-датчики?»
«Нет, не надо, – согласился я со своим помощником. Тратить время на копание в мелочах явно не стоило. – Ты прав. Сейчас у нас другая задача. Однако эти эльфийские датчики, контролирующие внешнюю среду, – штука очень интересная и полезная в будущем. Обязательно занеси эти плетения в базу данных. Потом мы с тобой как-нибудь подробно разберем все магоформы».
«Хорошо, – подтвердил исполнение моего распоряжения искин. – Продолжаем. Ключевой для нас элемент плетения – узел в его центре. Собственно, так располагаются не одна, а две целых две конструкции, два крупных тесно связанных друг с другом управляющих модуля. Один из них явно выполняет функцию концентратора сети. Он периодически генерирует импульсы, проходящие по сети, соединяющей датчики, и воспринимает ответные. Видимо, так и добывается информация о влажности. Концентратор обеспечивает проверку состояния всех датчиков. Акцент, судя по всему, делается на суммарное изменение амплитуды волны. Каждый из датчиков, фиксируя степень влажности почвы, чуть-чуть ослабляет импульс. Поэтому, послав импульс достаточной силы по одной нити, который росчерком пропутешествует по всей сети, и сравнив с эталоном его отклик, пришедший по соседней, концентратор может определить среднее состояние увлажнения почвы. При этом (с учетом того что отклик приходит по всем четырем нитям, входящим в концентратор) есть возможность определить и конкретный датчик, в котором произошло нарушение ситуации. Впрочем, в данном случае последнее не требуется. Ведь свечение должно появляться только в том случае, если почва полностью подсохла или, наоборот, переувлажнена, а не тогда, когда только один датчик сигнализирует о сухости».