Какие языки программирования используют в космических программах

12 апреля весь мир традиционно празднует День космонавтики, в связи с этим мы хотели бы рассказать вам что-нибудь интересное о космосе с точки зрения программирования. Мало кто задумывается о программистах, когда наблюдает за очередным запуском ракеты. Ещё меньше людей думают о языках программирования, благодаря которым вся эта техника вообще взлетает (не учитывая двигатели и корпус).

Как программируется отечественный космос?

С чего началась история программирования в отечественной космонавтике?

Когда началась холодная война между СССР и США, тогда началось и создание «Бурана» — орбитального многоразового космического корабля. В те 70-е годы вычислительная техника была очень слабой и программистам приходилось работать примерно со следующими мощностями:

  • 4МГц;
  • 128 КБайт оперативной памяти;
  • 16 КБайт постоянной программной памяти.

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

Что было создано:

  • ПРОЛ2 — язык для разработки комплексных бортовых программ в реальном времени;
  • ДИПОЛЬ — проблемно-ориентированный язык для создания программ для наземных испытаний;
  • ЛАКС — язык для моделирования;
  • САПО — система отладки и автоматизации процесса программирования;
  • БЦВМ — бортовая цифровая вычислительная машина;
  • Пролог-диспетчер — операционная система для взаимодействия с БЦВМ.

Однако после своего единственного беспилотного пуска программа была закрыта и разработку корабля прекратили. При этом наработки учёных не перестали использовать, а наоборот — даже немного усовершенствовали, создав на их базе новый язык программирования под названием ДРАКОН.

Изображение «Бурана», поднимаемого ракетой в космос.

Роскосмос

На просторах Интернета довольно сложно найти информацию о языке программирования, который используется в госкорпорации. Но есть основания полагать, что пишут в Роскосмосе в том числе и на ДРАКОНе. Этот язык был разработан ещё в советские времена и до сих пор применяется в аэрокосмической отрасли. Он может сливаться с другими ЯП в единое целое, образуя такие гибриды, как ДРАКОН-C, ДРАКОН-Python, ДРАКОН-Java и так далее.

В ДРАКОНе учёные РАН реализовали все лучшие стороны таких узконаправленных языков, как ПРОЛ2, ДИПОЛЬ и ЛАКС.

ДРАКОН применяется и в настоящее время в ракетоносителях Протон-М и иногда его используют [PDF] для тестов в Германском Аэрокосмическом Центре. Решение о продолжении использования языка приняли благодаря его надёжности и функциональности. Изначально создатели хотели, чтобы он был понятным не только для программистов, но и для людей других специальностей. И у создателей языка это получилось. ДРАКОН-схемы вполне удобны и читаемы для обычных людей. А программисты могут использовать гибриды, о которых было упомянуто выше. Создание такой технологии, конечно, не запуск первого человека в космос, но тем не менее, важное для отечественной науки событие. Что бы сейчас использовал Роскосмос для своих ракет? Кстати, ДРАКОН расшифровывается следующим образом: Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность.

Так сложились обстоятельства, что этот язык имел особую философию — программирование без программистов. Поэтому, после развала СССР работа над ДРАКОНом продолжилась. Да-да, именно так. Считалось, что инженеры лучше смогут понять, что нужно эксплуатируемой ими технике, чем далёкие от физики процесса программисты. А замена на любой другой ЯП только усложнила бы всё. Зачем отказываться от гибридного языка? Представьте, если бы у нас были такие звери как Java-Python, JavaScript-C++, вот бы зажили! Но от программистов полностью никто не спешил отказываться, они всё ещё нужны были для реализации некоторой части задач (не забываем о возможности слияния с другими языками).

Протон-М на старте

И ещё немного о ДРАКОНе

Этот язык программирования доступен всем людям, а не только специалистам аэрокосмической отрасли. Для него есть даже редактор (не от Роскосмоса, но всё же), в котором можно составлять свои алгоритмы и схемы.

Пример реализации алгоритма Дейкстры с помощью ДРАКОНа

 

А как насчёт других отечественных компаний?

Пока что серьёзных конкурентов у Роскосмоса на территории России (и СНГ) нет. Даже S7, которая начнёт запускать ракеты с «Морского Старта», нельзя назвать конкурентом из-за малой активности. Кроме того, точно не удаётся выяснить, на чём именно программируют в этой компании. Однако известно, что на площадке «Морской старт» все действия в большой степени выполняются на ДРАКОНе благодаря его надёжности.

SpaceX

В последние пару лет компания стала даже популярнее Роскосмоса в плане доставки гражданских грузов на орбиту. Кроме того, благодаря запуску новой ракеты Falcon Heavy у компании появились новые поклонники как среди простых людей, так и компаний, которые до сих пор выбирают между Роскосмосом и SpaceX. К сожалению для отечественной госкорпорации, цены у конкурента в некоторой степени привлекательнее. В российских исследовательских центрах и конструкторских бюро уже готовят ответ Илону Маску, но, увы, этот ответ был найден в чертежах 60-х годов прошлого столетия. На действительно впечатляющие инновации нам нужно надеяться, видимо, в чуть более отдалённом будущем. Но на каком же языке программируют в SpaceX? Западные коллеги используют C++ почти для всех задач. Для наземного моделирования применяется LabVIEW — среда разработки и платформа для выполнения программ, созданных на графическом языке программирования «G».

Falcon Heavy на взлёте

NASA

Здесь ситуация похожа на SpaceX: многое программируется на C, ещё больше на C++, совсем мало на Java и некоторые простые и «безопасные» программы пишутся на Python и других языках. Мы могли бы здесь подробнее расписать, что и на чём именно там создают, но у нас есть замечательная статья с информацией от инсайдера, с которой рекомендуем вам ознакомиться. Кстати, NASA на фоне SpaceX выглядит довольно тускло и там, как и в Роскосмосе, интересных инноваций не наблюдается, за исключением некоторых программ освоения космоса.

Заключение

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