Найти в Дзене
Инжиниум

Программирование и космос

Оглавление

В космической отрасли спрос на программистов очень высок. Здесь всегда найдется, что программировать. Это может быть бортовое и наземное ПО для пилотируемых кораблей, ракет, спутников, лунных посадочных станций или даже марсианских посадочных платформ.

Кроме того, есть нужда в тестировщиках, знакомых со спецификой космического ПО, потому что зачастую испытаниями занимаются те же команды, которые и пишут код.

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

Тут у каждой компании свои предпочтения.

  • Например, в Роскосмосе изобрели свой собственный язык программирования под названием ДРАКОН (Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность). Главной фишкой этого языка является то, что программировать на нём может кто угодно, даже не программист. По крайней мере на его чистой версии. Язык является в меньшей степени языком и в большей набором схем, создающимся в редакторе.
  • В NASA приоритет захватил быстрый и удобный язык С. Именно на нём сейчас работает большая часть космических аппаратов, в том числе всем известный любимчик — марсоход Curiosity. Также используют С++ и Python и многие другие.
  • В SpaceX используют несколько языков программирования, однако их в разы меньше, чем у NASA и все они являются современными высокоуровневыми языками, код которых на минимальном уровне, в принципе, может прочитать даже тот, кто ни разу не знакомился с программированием. По заявлениям сотрудников SpaceX, С++ занимает основную позицию, среди всех других языков в компании. Своё место нашли C# и JavaScript.

Программирование земных объектов и космических. В чем разница?

На самом деле, разработка программного обеспечения для ракет и космических кораблей мало отличается от аналогичного труда в IT-компании. Однако найдется пара различий.

  • Одной из особенностей можно назвать появление ограничений, продиктованных физикой и математикой. Когда пишешь код для приложений, работающих на Земле, таких проблем почти никогда не возникает.
  • И, конечно, стоит отметить, что писать код для ракеты - дело более ответственное, чем создавать тот же код для приложения. Необходимо помнить, что любая ошибка может привести к весьма неприятным последствиям. Именно поэтому программисты проверяют свой код в несколько этапов.
-2

Как программисты минимизируют опасность отказов ПО?

Чтобы сократить возможность отказов до минимума применяется специальный подход.

Все компоненты ПО создаются небольшими и отдельными — с четкими границами применения и «ответственности». Это позволяет каждый фрагмент кода проверять в самых разных условиях перед внедрением в системы. Которые, в свою очередь, уже тестируются целиком множество раз. Главная задача — сделать так, чтобы поведение программного обеспечения в любых возможных ситуациях было предсказуемым, понятным и знакомым для разработчика.

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

Среди множества модульных компонентов обязательно есть защитные, которые контролируют поведение всей системы «на лету». Если что-то идет не по плану, у них есть четкие инструкции, как обыграть ситуацию. Иногда это просто сброс задачи и переход к следующей, иногда это комплексная стратегия, направленная на компенсацию неполадки различными способами. Ну, и, конечно же, многократное резервирование, без этого в ракетно-космической технике никуда и программное обеспечение — не исключение.