Литмир - Электронная Библиотека

Собирать и разбирать компьютер я научился ещё в детстве. Кулеры сюда, жесткие диски туда… Для меня это было лёгкой задачей, так что уже через час-полтора я установил все мозги для костюма. В этот раз они отличались в разы от предыдущих. Огромный стальной бокс, какой был в прошлой модели, пришлось разделить на две части и добавить ещё два поменьше сверху. В совокупности получалось, что у меня за спиной находился небольшой сервер, который, благодаря совокупности языков кодирования, по мощности можно сравнить с громоздким компьютером какого-нибудь университета.

Надёжно скрыв его за бронёй в герметичных контейнерах с водяной системой охлаждения, я быстро подключил коннекторы в разъёмы. Затем подал питание со станции и запустил небольшой компрессор. Индикаторы загорелись, а шланги гидравлики набухли от давления. Костюм был готов к физической работе, но в нём не хватало главного — души из алгоритмов и направляющей их воли.

Наступал не менее важный процесс, чем проектировка или сварка.

Я отъехал от костюма и взял в руки ноутбук, от которого тянулась коса слаботочных проводов к костюму.

Закрыв глаза, я затаил дыхание, прислушиваясь к тишине мастерской, что должна была стать свидетелем оживления металла…

Открыв глаза, я отпускаю все чувства освобождаю мысли от всех текущих задач и проблем. Передо мной открывается программа, и я словно ныряю в мир нолей и единиц через светящийся портал. Пальцы буквально срастаются с клавиатурой, я не замечаю как их переставляю. Мне начинает казаться, что код появляется благодаря лишь одной силе мыслей и на экране появляются первые алгоритмы. Подобно шаману древности я стучу по клавишам как в бубен, разговаривая с этой вселенной на языке символов, что даже если будут озвучены, то непосвященный человек не поймёт их значения и силы.

Я продолжаю камлать. Руки дрожат от напряжения. Я задерживаю дыхание на выдохе, но лишь для того, чтобы услышать первый вдох костюма, что делает это через тихо загудевшие кулеры. На краткий миг закрыв глаза, полностью насладившись первым вдохом железа, открываю их, дабы снова нырнуть в синюю бездну экрана.

Периферийным взглядом я вижу, как сердце костюма — материнская плата, замерцала огнями диагностики. Пробуждающийся электронный разум, начинает знакомиться с миром, действуя по моим прописным законам. Сперва он пытается ощутить собственное тело.

Волна дрожи пробегается по стальному скелету. Я замечаю ошибку, ловлю её за оставленный хвост из переменных и тут же исправляю. Костюм успокаивается, будто через очередную строчку кода слышит голос своего Творца, что говорит ему о том, что ему нечего бояться.

Он снова изучает своё тело, индикаторы на конечностях моргнули, сообщив об успешном подключении. Мои пальцы скользят по клавиатуре, отмечая строки, где код сольется с физикой в монолит и я плавно перехожу к системе приводов.

Экран затягивает бездной символов. Курсор мигает, как мушка прицела, а я вгрызаюсь в логику движений. Каждая функция — это сустав, каждый цикл — сухожилие, которое должно сокращаться без задержек. Я пишу не программу, я проектирую рефлексы. Здесь, в строке 47, зашифрован поворот бедра, там, в подпрограмме delta_theta, — баланс между силой и грацией. Сталь экзоскелета на верстаке еще бездвижна, но код уже заставляет ее дрожать в ожидании жизни.

Искры ошибок выстреливают в консоль, осыпая экран багровыми предупреждениями. Компилятор хрипит, как перегруженный мотор, отказываясь проглотить мой алгоритм обратной связи. «Ошибка сегментации», словно шипит он, и я чувствую, как по спине стекает капля пота. Это не просто сбой — это предательство. Сейчас, когда костюм уже должен понять как ходить, а часы бьют полночь, я не могу позволить себе слабину. Я вцепляюсь в код, как в глотку невидимого врага, переписываю переменные, меняю указатели. Память — это болото, где тонут надежды, если не проложить мосты из строгих типов данных.

Сквозняк из открытой двери мастерской швыряет в меня лист бумаги с чертежами кинематики, это Николь бесшумной тенью скользнула внутрь, не смея меня отвлекать. Я ловлю его на лету, не отрываясь от экрана. Здесь, в углу схемы, кроется ответ: угол сгиба колена не совпадает с траекторией, заданной в коде. Цифры врут.

— Нет, — тихо шепчу я, осознав, что это именно Я солгал им неверной цифрой, зажав погрешность в три десятичных знака, будто машина не заметит подвоха. Заметила…

Я стираю старые расчеты, вбиваю новые формулы, где каждое число — это молитва точности. Симулятор на будущем мониторе шлема оживает яркой вспышкой. На нем мелькают сумбурные мысли костюма, в которых лишь едва прослеживается логика расчетов. Нога экзоскелета подрагивает на верстаке, сервоприводы поют тонким воем — они готовы к прыжку.

Но этого мало. Программа должна не просто двигать металлом — она должна «чувствовать». Датчики давления на стопе, ЭМГ-сенсоры на бедрах, гироскопы вдоль позвоночника… Каждый сенсор — это нерв, который я вшиваю в код. Я создаю карту тела, где электрические импульсы человека переводятся в цифровые команды. Здесь, в функции neural_map(), я заставляю экзоскелет дрожать при мысли пользователя о шаге. Тут, в блоке torque_control, балансирую мощь гидравлики с хрупкостью человеческой кожи, чтобы сталь не раздробила мои кости в неловком движении против моей человеческой анатомии.

Мои пальцы выстукивают ритм, который не услышит никто, кроме машины. Enter. Компиляция. Ожидание. Зеленое «успешно» вспыхивает на экране, и я впервые за несколько часов позволяю себе выдохнуть. Но это лишь начало. Я подключаю программатор к порту экзоскелета, наблюдая, как светодиоды вдоль его позвоночника загораются волной — будто кровь побежала по венам. Он пробуждается от сна пустоты.

Устало положив ноутбук на колени, я дотрагиваюсь до ободов кресла и ощущаю, как ладони, вспотевшие от волнения, проскальзывают. Подкатываюсь к верстаку, решаю сделать первый тест.

Я надеваю перчатку с сенсорами, чувствуя, как ее провода, которые не успел толком прикрепить, цепляются за мою кожу, как паразиты, жаждущие данных. Сгибаю мизинец — экзоскелет на верстаке повторяет движение с микросекундной задержкой. Недостаточно. В коде, где фильтруются шумы, второй рукой уменьшаю порог чувствительности, заставляя алгоритм ловить даже дрожь мышц. Теперь он сгибается синхронно, как тень.

Тест второй: предплечье. Я поднимаю руку, и экзоскелет вздымает свою стальную лапу с мягким шипением пневматики, предохраняющей от зажимов между будущих пластин брони. Но при резком движении сустав дергается — в коде вспыхивает предупреждение о перегрузке. Я вручную вбиваю поправки в PID-регулятор, уменьшаю коэффициент усиления, пока движение не станет плавным, почти человеческим.

— Нет, должно быть лучше человеческого — без дрожи усталости, без страха надрыва! — говорю я синей бездне монитора, что глуха к людской речи.

Покончив с этим, я решаюсь на третий, решительный, тест. Заехав за спину костюма я нажимаю на кнопку на своем наруче и костюм с металлическим скрипом раскрывает спину, чтобы я взобрался внутрь.

Я влезаю, царапаюсь о необработанный край, затем опускаю ноги, пристегиваюсь к лямкам экзоскелета, что будет способен отделяться от костюма, когда я закончу с броней. Его вес впервые давит на бедро, но через секунду сервоприводы включаются, принимая нагрузку на себя.

Дрожа от волнения, делаю шаг — и металл следует за мной, как вторая кожа. Но на втором шаге алгоритм теряет баланс. Гироскопы захлебываются данными, экзоскелет дергается в сторону, и я едва удерживаюсь, хватаясь за стол. В консоли полыхает красное: «FALL DETECTED».

С матами, я выбираюсь обратно, снова, падаю в ненавистное кресло, что не хочет меня отпускать. Глаза слипаются от усталости, но закрыть их — значит позволить ошибке укорениться. Перечитываю код системы балансировки. Там, где должна быть рекурсивная коррекция, я вижу линейную функцию — глупую, прямолинейную, как школьная задача. Я усмехаюсь сквозь усталость: как мог пропустить это? Переписываю, вводя обратную связь от акселерометров в реальном времени. Загружаю патч. Не сдаюсь как скалолаз зависший над пропастью!

17
{"b":"945797","o":1}