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