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