12. Где, в числе прочего, рассматривается применение программирования в нетривиальной ситуации:)

Apr 13, 2006 04:34

…ранее

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

Если написание самой проверки всех нужных систем заняло минуты три и состояло, в основном, из копирования строчек, то на проработку сетевого режима ушло на порядок больше времени. Димка, наконец, не выдержал:
        - Ну, чего ты там?
        - Одну минутку, Мить, маленькая заминка…
        - А что ты там делаешь? Все в порядке?
        - Все в порядке. Я программу пишу.
        - Какую программу? - удивленно переспросил он.
        - Для автопилота.
        - А… - протянул он с усмешкой, - ну, пиши, пиши, - и замолчал, видимо, утратив всякий интерес. Программирование он никогда особо не жаловал и всецело доверял мне в этом вопросе. Жаль, что он не оценил всей пикантности ситуации.
        Я продолжал торопливо придумывать алгоритм, и не сразу осознал, что спешка больше не нужна. На такой высоте турбореактивный двигатель «с термоядерным поддувом» вполне способен нас «держать», водорода за бортом - выше крыши. Собственно, мы можем так дрейфовать столько, сколько нам вздумается. Почему бы не устроить кругосветное путешествие? Над Америкой пролететь, например - я ж никогда ее не видел. А то и сбросить оставшиеся четыре ракеты им на Белый дом - может, до земли они и не долетят, зато как там все перешугаются… Нас-то им на высоте в сорок с лишком километров все равно, вроде бы, ничем не достать, кроме баллистических ракет.
        Впрочем, все же, нас ждут наверху. Приказ есть приказ. Потом еще погуляем.
        Завершив описание сетевого механизма, я с шутливой гордостью подумал, что если мне еще когда-нибудь придется писать резюме, то среди платформ, на которых мне доводилось программировать, можно будет со спокойной совестью написать «космоатмосферный истребитель С-371КА «Беркут»».
        Под конец я вдруг сообразил, что совершенно забыл при учете скоростей и ускорений проверить допустимые перегрузки, как для истребителя, так и для нас самих. Конечно, на штатных сценариях они проверялись, но вот любой ли режим автоматически использует эту проверку - я сейчас просто не помнил. Пришлось еще раз немного менять код. На всякий случай, поинтересовался у Мити, какое ускорение он предпочитает. Его вопрос немного смутил, и он положился на мое мнение. Я поставил максимум на три «же».
        После этого мне пришлось долго и дотошно проверять результат своей работы на предмет ошибок. К сожалению, единственным способом проверки был «на глазок», ведь оснастить «Беркут» дебаггером никому в голову не приходило. Компенсировать отсутствие подобных средств можно было только внимательнейшим чтением кода. Впрочем, отлаживать такой сценарий в реальных условиях - слишком уж рискованно. Самая нелепая участь для программиста - помереть от ошибки в собственной программе.
        Когда я, проверив все три раза, решил, что код все-таки чист, хронометр на приборной панели уже показывал девятый час утра, а мы поднялись к верхней границе мезосферы. Димка за это время успел даже поспать - вот до чего доводят усталость и вынужденное бездействие. Земля теперь была далекая-далекая и круглая-круглая. Внизу уже показались арктические льды - нам еще придется разворачиваться, ведь орбита «точки один» находится примерно над экватором.
        Загрузив новые сценарии, как фильтры к основным, я сказал Мите приготовиться и запустил автопилот. Истребители рванули вперед, набирая заданные три «же». Возможно, это было и излишеством. После первого выхода температурного режима «восьмерки» за допустимые границы рывок был столь резким, что в желудке явно что-то зашевелилось. Потом амплитуда и частота перегрузок стали уменьшаться. В общем, назвать этот полет приятным было тяжело, хотя Земля удалялась буквально на глазах. По счастью, лететь оставалось уже недолго.

продолжение следует...

Исход

Previous post Next post
Up