"Аполлон" на HP-42s

Итак, освежив в памяти математические формулы для численного моделирования космических полётов, я отыскал в ТМ блок-схему алгоритма
Блок-Схема "Лунолёт-3"
и принялся за реализацию программы на языке КПК НР-42S.

Дело продвигалось быстро, за пару вечеров я написал весь код, причём, за счёт более богатого функционала операторов обращения с регистрами, он получился даже короче «классических» для программ КЭИ 98 шагов. Потом отладил программу. Как обычно, поначалу вылезло пару-тройку багов (по разному работали команды переходов по условию и ещё несколько мелочей), но довольно быстро всё заработало, как надо. Скорость расчётов была настолько высока, что после нескольких прогонов появилась идея повысить точность расчётов. В результате, вместо приближённых формул, которые использовались в программах для старых советских ПМК, интегрирование траектории теперь выполнялось с постоянным шагом в 1 секунду.

Потом, вспомнив эталонный во всех отношениях «Орбитер», принялся щедро оснащать программу отдельными процедурами, которые считали и выводили на индикатор разную полезную информацию типа (высоты апо- и пери-центра, период орбиты, время до цели и т.п). Лёгкость, с которой всё это реализовывалось, не могла не радовать.

Воплощая мои хотелки, программа обрастала дополнительными переменными и, быстро перевалив за 200 строк, продолжала жадно расти в объёме.

Поначалу всё было здорово, но постепенно что-то определённо становилось “не так”.

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

Становилось ясно, что для точных расчётов в нынешние времена гораздо удобнее использовать полноценный компьютер, с клавиатурой и дисплеем. БОльшая точность требует более объемного кода, а даже банальный ввод программы в память с клавиатуры ПМК, когда эта программа превышает сотню шагов, превращается в утомительное занятие. Кроме того, одно дело разобрать математику расчётов, реализованную в виде ОПН, в 15-20 шагов, когда вся программа умещается перед глазами, другое дело, когда это цепочки уже за сотню операций. В 80е - 90е, использовать обратную нотацию имело смысл - это повышало быстродействие тогдашних медленных процессоров. Но сейчас для программ такого объёма гораздо удобнее и нагляднее стандартный математический вид.

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

И вдруг я понял, что главная «фишка» тех старых «космических» программ для ПМК заключалась именно в том, что они, как сейчас принято говорить, были «пошаговые»! После каждого манёвра время «останавливалось», и ты имел возможность спокойно подумать, что делать дальше, «в следующее мгновение». И тут важно было именно понимание физики процессов. У тебя не было MFD, перед глазами всегда был только один единственный индикатор, но вся необходимая информация сидела в регистрах, и ты мог (и должен был!) сам разделить, к примеру, расстояние на скорость, чтобы оценить время, или подобрать расход топлива, или величину тормозного импульса и т.д.

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

И тут до меня дошло, что вся эта мощность продвинутого американца была явно избыточна для моих целей. Ведь с упрощённой моделью расчётов в «пошаговом» режиме, прекрасно справлялись и старые советские ПМК, обходясь программами в 98 шагов и 14 регистрами с данными!

Восторг и восхищение возможностями НР-42 никуда не делись, машинка классная, а для тех лет - просто фантастическая по возможностям, но… После того, как программа для моделирования орбитальных полётов на мощном американском ПМК была написана и протестирована, я пришёл к выводу, который оказался удивительным для меня самого. На самом деле, для моих задач скромный советский МК-61 оказывается вполне (а может, даже и более чем) подходящим.

В итоге, к концу недели я откладываю в сторону “американца” и пересаживаюсь на борт старого знакомого - аскетичного ПМК Электроника МК-61…

Метки публикаций: