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