'Справлюсь, конечно, — ответил Дмитрий. — Как они управлять-то будут этой штукой? Это ж нужен какой-то пульт управления?'
'Им некогда ещё и пульт делать, — ответила Люсия. — Нужно придумать простейшее радиоуправление, буквально передачей кодов точками и тире. Чтобы Саншайн могла ключом передавать команды. Условно — точка это ноль, тире — единица.'
'А это идея, согласен, — написал программист. — Не очень удобно, но самое простое в реализации.'
'Возьмите азбуку Морзе, — посоветовала Люсия. — Выберите буквы, которые не будут похожи друг на друга, чтобы схема меньше их путала. Азбука Морзе практически совпадает с кодом Хорсе у пони. Саншайн быстро разберётся. Только надо договориться, чтобы команды у вас и у меня были одинаковой структуры и не повторялись.'
Они вместе написали прямо в чате таблицу команд.
'Мне бы только ещё разобраться, что тут где, — написал Дмитрий. — Чтобы понимать, куда эти команды пересылать.'
'Вы подключили плагин? — спросила Люсия. — Ссылку ввели в настройки?'
'Да, конечно', — ответил программист.
'Просто напишите в поле ввода: "Найди код, отвечающий за управление перемещением" и посмотрите, как это всё реализовано сейчас.'
'Э... просто написать "Найди код?", — удивился Дмитрий. — Вот так, словами? И не нужно писать, что именно искать?'
'Да. Это новая технология, она ещё не получила известность, но очень помогает в написании кода, — ответила Люсия. — Попробуйте.'
Программист, не в силах побороть скепсис, набрал текст в поле ввода запрос и нажал Enter.
В окне плагина появилась и начала удлиняться полоска прогресса с цифрами процента поиска. Затем в окне кода открылся файл с кодом на Си, явно декомпилированным судя по названиям переменных и общему небрежному оформлению, а в окне запроса появилась строка:
'Вот код, отвечающий за управление перемещением. Чем я ещё могу помочь вам сегодня?'
Отойдя от первого удивления, Дмитрий вчитался в код. Он был довольно простой и понятный. Поняв принцип, программист написал простую функцию, изменяющую значение переменной угла поворота при получении входящей команды, сделал копию ветки кода и, решив не медлить, сразу же зафиксировал и выгрузил изменения кода на github. Скинул в чат ссылку на коммит и спросил:
'Вот, такое написал, как основу. Годится? Чтобы не было конфликта с вашим кодом.'
'Нормально, продолжайте писать. Потом смерджу все изменения, — ответила Люсия. — Пишите в запросе в окне плагина, что нужно написать, он сам напишет. Экономия времени. Но надо отлаживать внимательно. Ошибки тоже кидайте ему в окно, он исправит код.'
'Чего? — обомлел Дмитрий. — Плагин сам пишет код? Как это?' (Время действия 2022 год, нейросети (LLM) появились в открытом доступе в 2023-м)
'Попробуйте, — посоветовала Люсия. — Вам понравится.'
Дмитрий подумал пару минут, потом скопировал в поле ввода плагина свою функцию и написал: 'Напиши тест для этой функции, чтобы просмотреть значения переменных.'
Через несколько секунд в окне редактора сам собой начал появляться код, аккуратный, хорошо документированный комментариями на английском. Программист запустил его. Код выдал несколько ошибок. Дмитрий написал: 'Код выдаёт ошибки.' и скопировал ошибки в поле ввода.
Плагин тут же переписал код, Дмитрий запустил исправленную версию, и тесты отработали без ошибок — программист подавал команды на вход, значения переменных менялись.
'Работает!' — не скрывая искреннего изумления, написал он в чат.
'Конечно, работает, — Люсия добавила к ответу довольный смайлик. — Вы можете поставить ему задачу общего характера и попросить написать план разработки по этапам. Он напишет план, а затем даёте команды: "Напиши код для первого этапа" и так далее. Попробуйте.'
С плагином разработка пошла заметно быстрее. Для Дмитрия это выглядело как настоящая фантастика, хотя ошибок в коде было немало, и их приходилось вылавливать многократными итерациями отладки. Но уже то, что не надо было набирать код самому, следя за каждой кавычкой, запятой и скобкой, которых в С++ как блох на собаке, очень сильно ускоряло процесс.
За один день они с Люсией доработали прошивку мехаспрайта, написав раз в десять больше кода, чем Дмитрий писал за день обычно. Новый рабочий процесс затягивал, не было желания отвлекаться на кофе, тупить в монитор, как часто бывало.
'Хорошо поработали, — написала в чат Люсия. — Сейчас я залью прошивку в кристалл, и можно будет сообщить пони, чтобы собирали мехаспрайт и пробовали. Потом, скорее всего, понадобится что-то подправить в коде, но это я уже и сама справлюсь.'
Люсия, видимо, сначала проверила, вставлен ли кристалл в программатор, потому что она написала в чат:
'Кристалл на месте, пошла прошивка, — а затем, через несколько минут, добавила: — Прошивка завершена успешно. Пони, можете собирать мехаспрайт и пробовать.'
Дальше Люсия скинула в чат таблицу радиокоманд, которую они составили вместе с Дмитрием, и пояснения, как должно работать управление.
'Э-э... Люсия, а мне плагин можно оставить?' — Дмитрий не надеялся на успех, но всё же решил попробовать — а вдруг получится?
'Можно, — Люсия прислала улыбающийся смайлик. — Он всё равно через web работает, если что — отключат на сервере. Я подозреваю, что нам ещё не один раз придётся этим сервисом совместно пользоваться.'
Лира и Саншайн пришли вечером проверить чат и увидели сообщения Люсии и Дмитрия. Кристалл в 'стакане' светился собственным неярким светом, внутри как будто бегали искорки.
— YAY! — обрадовалась Лира. — Кажется, у наших друзей получилось!
Пони вынули кристалл из программатора и отнесли его Шарп Каттеру. Учёного они отыскали в цеху, несмотря на позднее время. Перед ним лежал полусобранный мехаспрайт и отдельно верхняя крышка его внутреннего ядра. Подвесная часть с лазером была уже собрана, и теперь Каттер пристраивал внутрь ядра рунную схему, сделанную Старлайт.
— Мистер Каттер! — окликнула его Лира, входя в цех. — У нас есть кристалл!
Учёный устало повернулся. Глаза у него были красные, он явно переутомился.
— Ой, вы плохо выглядите, мистер Каттер, — Саншайн взглянула на него с беспокойством. — Вам надо отдохнуть.
— Да я уже почти закончил, — ответил Каттер. — Нужно ещё припаять выводы к контактам рунной схемы и вставить кристалл.
— Это мы отложим на завтра, — Саншайн положила кристалл в коробочку на столе и решительно повела умотавшегося за день учёного отдыхать.
-= W =-
Нижний Кантерлот.
Год 1004 от Восстания Найтмер Мун.
Трое шпионов встретились снова в винном погребе под очередной таверной с сомнительной репутацией. Место было удобное — за одной из больших бочек в погребе был скрыт люк в городские катакомбы, из-за чего эту таверну по вечерам облюбовали алмазные псы. У заведения был чёрный ход, ведущий в проходной двор, по нему в таверну и пришёл палевый единорог аристократического вида с розовыми глазами. Грифон ввалился на чердак через открытое чердачное окно и спустился в погреб по винтовой лестнице для прислуги.
— Ну? Зачем звал? — Гримор злобными жёлтыми глазами посмотрел на Спарклснейка.
— Есть новости, — ответил 'аристократ', стойко выдержав волну удушающей ненависти, исходившую от грифона. — Наши в Вечнодиком нашли дохлую гидру и след, ведущий от неё к Замку Двух Сестёр.
— Ну и что? — не сразу понял грифон. — Мало ли в Вечнодиком дохлятины валяется?
— Ты не понял, — холодно произнёс Спарклснейк. — В трупе гидры не осталось магии. И след там непростой. Обезмагиченный.
— Э-э... — грифон чуть наклонил голову набок, глядя на резидента чейнджлингов, как иногда делает петух. — В смысле?
— В Вечнодиком заметный магический фон. Заметный для того, кто умеет смотреть, — пояснил 'единорог'. — След выделяется на этом фоне как тёмная красная полоса среди яркого радужного тумана. Тот, кто его оставил, впитывал в себя магию.
— Опа... — обеспокоенно произнёс алмазный пёс.
— Ого! Выходит, Тирек и правда в Вечнодиком? — грифон выглядел слегка обескураженным. — И прячется в развалинах замка?
— Или он, или ещё какое-то существо, способное высосать магию у гидры, — с холодным безразличием произнёс Спарклснейк. — Тебе много известно таких тварей, кроме Тирека? И мне — нет.
— Та-ак... — грифон плотоядно потёр когтистые передние лапы. — Тогда это наш шанс. Яйцеголовый прохвессор ухитрился чего-то там настроить. Теперь его электромагическая пушка не перегорает после первого же выстрела. Выдерживает три, а иногда даже четыре.
— Ну, вот вам и возможность проявить себя перед принцессами, — ухмыльнулся Полкан.
— У нас тоже есть новости, — заявил грифон. — Мои бойцы видели в действии оружие пони.
— Это то, про которое ты уже рассказывал? — уточнил пёс.
— Ага, — Гримор нервно дёрнулся. — В этот раз, похоже, было финальное испытание. Два пуска один за другим, с поезда и с наземной штуки, которую опустили с дирижабля. К цели они обе подлетели почти одновременно. Два прямых попадания в мишень, мощные взрывы, и, главное, электромагические импульсы такой силы, что мои бойцы несколько часов не могли летать.
— Что? Они что, полезли прямо на полигон? — ужаснулся 'единорог'.
— Нет, они же не идиоты последние. С гор смотрели, издалека. Ну, они так думали. Радио специально спрятали у северного подножия гор, в пещере, в железном ящике, — рассказал грифон. — Профессор нас чётко проконсультировал. И всё равно, долбануло импульсами так, что бойцы чуть живые были. Недооценили воздействие двойного взрыва.
— Так, а что они почувствовали? — спросил чейнджлинг. — Надо ж знать, чего ожидать.
— Сильный удар по мозгам, в первый момент. Аж до потери сознания, — ответил грифон. — Шок по всему телу, ощущение как будто горящие верёвки под кожей. Все упали как подкошенные, больше часа не могли пошевелиться, конечности отнялись. Потом начали понемногу приходить в себя.
— Вот сено, — выдавил Спарклснейк. — Это если на грифонов, с их недо... то есть минимальной магической системой, так подействовало, это как же может ударить по более магическим существам?
— Поджарит всех, — злорадно клекотнул Гримор. — И копытных, и тараканов.
— Жуткое дело, — озабоченно произнёс резидент псов. — Есть ещё что обсудить? Нет? Тогда расходимся.
Вернувшись в посольство, Гримор пошёл к шифровальщику и отправил Гуннару шифрованную радиограмму с приказом выдвинуться в район Вечнодикого леса, держась подальше от Понивилля. Затем он отправил вторую радиограмму, в Мэйнхеттен, сержанту Германну, который в отсутствие Гримора присматривал за профессором. В радиограмме было аналогичное распоряжение. Третью радиограмму он отправил Германну уже для самого профессора, в других, более мягких выражениях, даже с толикой весьма неуклюжей лести и конкретными указаниями. Профессор был своенравным и на редкость склочным типом. Гримору приходилось искать к нему подход. В другой ситуации резидент, скорее, свернул бы старому хрычу его тощую шейку. Но сейчас профессор был ему нужен. Приходилось терпеть.
43. 'Меч Гидеона'
860-867 год н. э.
Восточная Римская империя в начале X века попала в сложное положение. С юга и юго-востока на неё наступал Багдадский халифат под властью династии Аббасидов, на западе взбунтовался болгарский царь Симеон I, отнявший у империи немалую территорию. От него пришлось откупаться данью.
— Викинги добрались уже и до Константинополя, — доложила Фулгур.
— Это каким же образом? — удивился Вентус. — По рекам?
— Ага, именно, — командир наблюдателей вывела на экран проектора фотографию длинного низкобортного корабля, больше напоминавшего огромную лодку. — Их корабли хорошо приспособлены для передвижения по рекам. Они относительно лёгкие, их можно перетаскивать волоком через водоразделы, и они имеют небольшую осадку, чтобы проходить речные перекаты. Могут ходить как под парусом, так и на вёслах.
Викинги прошли на своих кораблях по рекам вглубь континента, — Фулгур очертила лучом лазерной указки длинный маршрут немного западнее их подземного комплекса. — Они нашли там очень плодородные земли, намного богаче, чем у них на родине. И население, живущее племенами, которое можно беспрепятственно обложить данью. Скандинавские ярлы Аскольд и Дир объявили себя князьями в городе Киев и захватили власть над местными племенами, известными как 'поляне'. По дошедшим до нас слухам ещё один ярл, именуемый Рюрик, построил свою столицу далеко на севере, у большого озера, называемого Ладога. Но эти слухи мы не проверяли, и подтвердить или опровергнуть его существование не можем.
— По данным, собранным 'Приоратом', — уточнил Вере Фолиум, — этот Рюрик может быть, вероятно, ютландским конунгом Рёриком (Hrørek), имя которого местные славянские племена переиначили так, как им удобно было произносить.
— Сейчас немногочисленные дружины викингов постепенно ассимилируются, растворяясь в местном населении, — продолжила доклад Фулгур. — Но они нашли путь на юг, к морю, и дальше, в Константинополь. Набегов было много, но первый действительно крупный был с восемнадцатого июня по четвёртое августа (860 года). В экспедиции участвовали примерно восемь тысяч воинов на приблизительно двухстах кораблях. Понятно, что никто их не считал, но типовой корабль викингов вмещает примерно тридцать-сорок воинов, так что прикинуть можно.
— И что, они рассчитывали такими малыми силами взять Константинополь?
Скептицизм Вентуса был понятен. Все присутствующие члены Коллегии Клана невольно взглянули на висевшее на стене большое фото Константинополя, снятое с воздуха и вставленное в рамку наподобие картины. Город был обнесён тройным кольцом стен с башнями и выглядел неприступным.
— Нет, конечно, но предместья пограбили изрядно, — ответила Фулгур, — да и местных немало порезали, а ещё больше напугали. Они разграбили даже поселения на островах в Мраморном море. Основная армия и флот империи в это время были заняты военными действиями против арабов. Император Михаил увёл с собой даже часть городского гарнизона. Набег, к счастью, завершился довольно быстро. Осаждающие захватили очень много всякой добычи, поэтому просто сняли осаду, погрузились на корабли и уплыли.
— Патриарх Фотий, один из агентов влияния 'Приората', прямо отождествил нападавших с норманнами, как в Европе обычно именуют викингов, — добавил Вере Фолиум.
— Эм-м? Норманны? И на основании чего он сделал такой вывод? — спросил Вентус.
— Подозреваю, чисто по внешнему сходству, — пояснил куратор проекта 'Морф'. — Схожее оружие, кольчуги, шлемы, аналогичная конструкция кораблей, да и внешность самих нападавших похожая: высокий рост, мощное телосложение, светлые волосы, черты лица в целом схожие с народами северной Европы. Генетическую экспертизу, понятно, никто в Константинополе не делал, — усмехнулся Вере Фолиум. — На греков внешне не похожи — значит, варвары. Светлые волосы — значит, норманны.
Набеги славян на Константинополь неоднократно происходили и в дальнейшем, но через шесть лет произошло весьма неожиданное событие.