Системы, используемые космической сфере, должны соответствовать определенным отраслевым стандартам безопасности, без права на ошибку, и, таким образом, важность кода, критичного для безопасности, сильно влияет на принятие решений, связанных с выбором языка.
Действительно, в 70-80-е годы в космической отрасли были сосредоточены огромные средства и применялись технологии, в тот момент недоступные широкому потребителю. В современном мире ситуация изменилась. Мощные компьютеры стали общедоступными. А для космических аппаратов используют часто скромные по нынешним меркам устройства.
Дело в том, что при проектировании космических аппаратов все системы управления прячутся под многочисленными слоями защиты. И здесь «железо» должно быть в первую очередь:
компактным,
безотказным,
устойчивым к внешним воздействиям.
Как итог, инженеры выбирают довольно простые решения. Например, в MER’ах стоят чипы частотой всего 20 20 MHz и 128 Мб ОЗУ.
Само собой, что этот фактор напрямую влияет на выбор языков программирования и сами программные решения. Очень важно, чтобы программа работала быстро и надежно, и как можно меньше потребляла ресурсов.
NASA
Итак, по информации из открытых источников, подавляющее большинство программных решений в этих проектах пишется на С. Для вспомогательных программных продуктов иногда применяются C++ и Java. При написании драйверов или в случае необходимости максимальной оптимизации обращаются к машинным кодам, т.е. применяют Assembler.
Математическое моделирование чаще всего выполняют в MatLab, но также есть любители среды Mathematica. Написанные на скриптовых языках решения, а также такие языки как Python, Ruby, Perl не соответствуют требованиям отрасли.
Популярность C в этой сфере вполне обоснована. Язык быстрый, на нем можно писать на низком уровне (близко к «железу»), при этом под C существует очень много различных библиотек. Его легко компилировать, при этом можно быть уверенными, что программа одинаково корректно будет работать на самых разных компьютерах, чего нельзя сказать с такой же уверенностью о многих современных языках.
Даже любимый многими С++ в случае написания программ для космоса заметно проигрывает чистому C по надежности и ресурсоемкости. Как известно, код, сгенерированный на C++, славится своими совсем не маленькими объемами. Даже для довольно современных космических аппаратов с их ограничениями по «железу» это действительно важный фактор.
SpaceX
Для программного обеспечения на всех ракетах серии Falcon, на всех кораблях Dragon используется язык С++. Язык максимально универсален и, плюс ко всему, относительно машинных языков прост в изучении. На нём пишут практически всех современных роботов, все системы дистанционного управления и всё, что только можно. По заявлениям сотрудников SpaceX, этот язык занимает основную позицию, среди всех других языков в компании. Своё место нашли C# и JavaScript. На них работают большая часть внутренних инструментов и услуг компании.
Роскосмос и другие отечественные проекты
Об инструментах, которые используют российские разработчики программных продуктов для космической отрасли, достоверную информацию найти сложнее. Скорей всего, здесь также популярен С и Assembler. Но кроме них, достоверно известно о применении особого языка – ДРАКОН.
На нем написана значительная часть ПО для ракетоносителей Протон-М, иногда им пользуются в Германском Аэрокосмическом Центре для проведения тестов.
Посадка, завершающая полёт проекта «Буран-Энергия» изображена на рисунке 1. Для реализации данного проекта был разработан ПРОЛ2 — язык для разработки комплексных бортовых программ в реальном времени. Сразу за ним подоспели ДИПОЛЬ — проблемно-ориентированный язык для создания программ для наземных испытаний и ЛАКС — язык для моделирования. Все это было создано под БЦВМ — бортовую цифровую вычислительную машину. Для неё также была написана отдельная операционная система, получившая название «Пролог-диспетчер».
Рис. 1 «Проект Буран»
Разработкой ДРАКОН занимались ученые РАН в период СССР, усовершенствования и доработки продолжились и после распада Советского Союза. В этом необычном языке ученые сумели объединить лучшие качества отечественных разработок 60-70-хх годов: ДИПОЛЬ, ПРОЛ2 и ЛАКС.
Создатели языка стремились к тому, чтобы программы могли прочитать и даже составить не только программисты, но также инженерам других специальностей. Сама аббревиатура расшифровывается так:
Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность.
Рис. 2 «Графическое изображение Дракона»
Создатели языка считали, что алгоритм для космической системы намного лучше сумеет разработать инженер-ракетостроитель, чем программист без глубоких знаний в области ракетостроения и космоса. В результате появился графический ДРАКОН. Язык, где алгоритмы реализованы в виде блок-схем. При этом он прекрасно компилируется и совмещается с традиционными языками программирования, образуя оригинальные гибриды: ДРАКОН-C, ДРАКОН-Python, ДРАКОН-Java и так далее.
Заключение: С учётом развития технологий и приборостроения, в недалёком будущем возможно человечество сможет полететь за пределы нашей планеты.
Список использованной литературы
Маров Михаил Яковлевич Космос. От Солнечной системы вглубь Вселенной / Под ред. Маров М. Я. - «ФИЗМАТЛИТ», 2017
Опытно-технологический малый космический аппарат «АИСТ-2Д» / Кирилин А.Н., Ахметов Р. Н. – «СамНЦ РАН», 2017
На чём пишут ПО для космических аппаратов? - Alpha Centauri [Электронный ресурс]. – URL: https://thealphacentauri.net/na-chem-pishut-po-dlya-kosmicheskih/ (Дата обращения: 03.12.2022)