В последние годы интерес к космосу и космическим программам заметно вырос. Не стали исключением и айтишники. А потому все чаще студенты и молодежь интересуются, на каких языках пишут для космоса и различных космических аппаратов. В принципе, тема сама по себе любопытная. А потому мы решили собрать информацию о самых известных проектах, связанных с космосом.
Интересные факты о цифровых технологиях
Перед тем, как разобраться с языками программирования, мы решили развенчать популярный миф – «в космических программах самые крутые цифровые мощности». Вы тоже так считаете? А ведь это совсем не так. Легенда о «супер-мощностях» пришла из прошлого века.
Действительно, в 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 и так далее.
Инструмент получился настолько удобный, что отказываться от него никто не стал и после СССР. Наоборот, его постоянно дорабатывают и совершенствуют. В результате, программное обеспечение для космических аппаратов обычно создают совместно инженер, понимающий физику процессов, и программист, способный оптимизировать алгоритм и дополнить его решениями на традиционных языках.
Как видите, решения для космоса – необычны, а задачи в этой сфере настолько интересны, что многие из вас уже сейчас задумались, как было бы здорово работать в космической отрасли. Напоминаем – нет ничего невозможного для целеустремленного человека. А какие языки «подтянуть», чтобы заинтересовать специалистов из космических программ, вы уже знаете.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]
Язык ДРАКОН используется не только в космосе, но и во многих других областях.
Например, в медицине.
Подробнее об этом можно прочитать в книге по медицинским алгоритмам
Удобный язык для профессионального общения врачей ДРАКОН
http://drakon.su/_media/biblioteka/2_udobnyj_jazyk_dlja_vrachej.pdf