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

1
1196
views

Языки программирования в космических программах

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

Интересные факты о цифровых технологиях

Перед тем, как разобраться с языками программирования, мы решили развенчать популярный миф – «в космических программах самые крутые цифровые мощности». Вы тоже так считаете? А ведь это совсем не так. Легенда о «супер-мощностях» пришла из прошлого века.

Действительно, в 70-80-е годы в космической отрасли были сосредоточены огромные средства и применялись технологии, в тот момент недоступные широкому потребителю. В современном мире ситуация изменилась. Мощные компьютеры стали общедоступными. А для космических аппаратов используют часто скромные по нынешним меркам устройства.

Дело в том, что при проектировании космических аппаратов все системы управления прячутся под многочисленными слоями защиты. И здесь «железо» должно быть в первую очередь:

  • компактным,
  • безотказным,
  • устойчивым к внешним воздействиям.

Как итог, инженеры выбирают далеко не самые «навороченные» решения. Например, в MER’ах стоят чипы частотой всего 20 20 MHz и 128 Мб ОЗУ. Да, у многих из нас смартфоны мощнее, не так ли?

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

Американский космическая программа

Американские программы: NASA и SpaceX

Мы объединили эти два проекта просто потому, что программисты в них предпочитают одни и те же инструменты. Конечно, решения в нацеленной на инновации SpaceX сильно отличаются от более консервативных проектов NASA. Но мы же говорим о языках программирования.

Итак, по информации из открытых источников, подавляющее большинство программных решений в этих проектах пишется на С. Для вспомогательных программных продуктов иногда применяются C++ и Java. При написании драйверов или в случае необходимости максимальной оптимизации обращаются к машинным кодам, т.е.  применяют Assembler.

Математическое моделирование чаще всего выполняют в MatLab, но также есть любители среды Mathematica. Скриптовые языки в этой сфере практически не применяют. А уж Python, Ruby, Perl – тем более. Написанные на них решения не соответствуют требованиям отрасли.

Популярность C в этой сфере вполне обоснована. Язык быстрый, на нем можно писать на низком уровне (близко к «железу»), при этом под C существует очень много различных библиотек. Его легко компилировать, при этом можно быть уверенными, что программа одинаково корректно будет работать на самых разных компьютерах, чего нельзя сказать с такой же уверенностью о многих современных языках.

Даже любимый многими С++ в случае написания программ для космоса заметно проигрывает чистому C по надежности и ресурсоемкости. Как известно, код, сгенерированный на C++, славится своими совсем не маленькими объемами. И если для современных компьютеров это не критично, то для космических аппаратов с их ограничениями по «железу» это действительно важный фактор.

Центр управления

Роскосмос и другие отечественные проекты

Об инструментах, которые используют российские разработчики программных продуктов для космической отрасли, достоверную информацию найти сложнее. Скорей всего, здесь также популярен С и Assembler. Но кроме них, достоверно известно о применении особого языка – ДРАКОН.

На нем написана значительная часть ПО для ракетоносителей Протон-М, иногда им пользуются в Германском Аэрокосмическом Центре для проведения тестов.

Разработкой ДРАКОН занимались ученые РАН в период СССР, усовершенствования и доработки продолжились и после распада Советского Союза. В этом необычном языке ученые сумели объединить лучшие качества отечественных разработок 60-70-хх годов: ДИПОЛЬ, ПРОЛ2 и ЛАКС.

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

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

Пример программы на ДРАКОН
Пример программы на ДРАКОН

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

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

Как видите, решения для космоса – необычны, а задачи в этой сфере настолько интересны, что многие из вас уже сейчас задумались, как было бы здорово работать в космической отрасли. Напоминаем – нет ничего невозможного для целеустремленного человека. А какие языки «подтянуть», чтобы заинтересовать специалистов из космических программ, вы уже знаете.



1 КОММЕНТАРИЙ

  1. Язык ДРАКОН используется не только в космосе, но и во многих других областях.
    Например, в медицине.
    Подробнее об этом можно прочитать в книге по медицинским алгоритмам
    Удобный язык для профессионального общения врачей ДРАКОН

    http://drakon.su/_media/biblioteka/2_udobnyj_jazyk_dlja_vrachej.pdf

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here