prostopasha1914 (prostopasha1914) wrote,
prostopasha1914
prostopasha1914

Categories:

На каких языках пишут ПО для космоса Роскосмос, NASA и Space X

Уроженец Житомира создает софт для ракет Илона МаскаУроженец Житомира  создает софт для ракет Илона Маска
Фото: Алексей Пахунов - глава отдела программистов Space X и разработчик ПО для всех кораблей Илона Маска.

Случился у меня тут в обсуждении вчерашней темы о проблемах Роскосмоса диалог с одним товарищем. Суть наших противоположных мнений (которые касались программирования "для космоса") оказалась в следующем:

1. Товарищ усомнился в моем программистском прошлом и заявил, что я ничего не понимаю в программировании даже на уровне бэйсика (что в данном случае неважно, поскольку товарищу даже бэйсик явно знаком только по названию).

2. Товарищ заявил, что все ПО для космоса пишется исключительно на низкоуровневых языках программирования (что гораздо более важно). И никакие мои доводы о фактах и причинах используемых в космических аппаратах харда и софта действия на него не возымели.

Поэтому я и решил сказать пару слов по этой теме. И вкратце распишу, какие языки и методы программирования использовали и используют в различных космических компаниях. А именно - в NASA, SpaceX и Роскосмосе. И как эти языки менялись, меняя за собой всю отрасль.

***

Как кодят в Роскосмосе?

«С? С++? Что за бред? Какой-то набор скобочек и запятых? Зачем нам это?» — подумали российские инженеры, когда эти языки начали появляться на свет. И продолжили писать (и по сей день пишут) ПО для ракет и космических кораблей на языках, разработанных еще для "Бурана".

Для реализации этого проекта тогда был разработан ПРОЛ2 — язык для разработки комплексных бортовых программ в реальном времени. Сразу за ним подоспели ДИПОЛЬ — проблемно-ориентированный язык для создания программ для наземных испытаний и ЛАКС — язык для моделирования. Все это было создано под БЦВМ — бортовую цифровую вычислительную машину. Для неё также была написана отдельная операционная система, получившая название «Пролог-диспетчер». После запуска Бурана, как мы все знаем, лавочка была прикрыта и больше Буран не эксплуатировался, однако его наработки не были забыты и даже усовершенствованы. Таким образом на свет родился Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность. Или сокращённо ДРАКОН. Язык является в меньшей степени языком и в большей набором схем, создающимся в редакторе.

Однако замечу, что команды в нем, тем не менее, все равно использовали на английском.


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

Как кодят в NASA?

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

Казалось бы, это правильное решение и в целом с этим нельзя не согласиться. Это увеличивает надёжность будущего аппарата и сокращает время разработки ПО под него. Однако вот незадача… Технологии идут вперёд. И код, подходящий для одной архитектуры, нужно переделывать, чтобы он заработал на более новой. Делать это, конечно, никто не торопился. Именно поэтому миссии THEMIS и STEREO, запущенные аж в 2006 и 2007 годах, работали с использованием модулей от предыдущих миссий на процессорах Intel 8085, выпущенных ещё в 1976 году!!! Код для них, по этой причине, разумеется писался на машинно-ориентированных языках типа Ассемблера. Для такого проца использование этого древнего кода, естественно, сильно ускоряло работу ПО.

То есть, еще раз - относительно недавно, 15 лет назад, ассемблер все еще использовался в космическом кодировании НАСА. Для сравнения приведу разницу в длине кода для ассемблера и даже такого, тоже далеко не современного, языка как Паскаль.


Естественно, что еще в 1970-х уже существовали языки более высокого уровня, тот же Fortran. Однако использовался он не так активно и преимущественно для компьютеров, которые будут находиться на Земле, а не в полёте. К тому же, просто использовать Fortran тогдашнее руководство не захотело и во время раскрутки программы Space Shuttle в 70-ые года было принято решение разработать на основе Fortran новый язык программирования, отвечающий новым требованиям стандартов, которые так были необходимы для упорядочивания всей накопившейся к тому времени кодовой каши.

Было решено разработать два языка: HEL/S для ПО космических аппаратов, и HEL/G для наземного оборудования. Однако с HEL/S создатели явно перемудрили, сделав код абсолютно не читабельным даже для программиста выше среднего уровня. В итоге HEL/S был оставлен в прошлом, а HEL/G даже не появился на свет.

А NASA начало временно использовать язык программирования Ada, разработанный до этого под нужды ВВС США. Изначально он использовался для управления военными объектами, снарядами, самолётами, кораблями и другими безделушками в реальном времени. Как вы уже могли догадаться, единственным языком в NASA он не стал. Всё также кто-то где-то использовал Fortran, кто-то Pascal, а кто-то вообще Visual Basic или Bliss.

Но наконец-то ко всей этой солянке в начале 2000-х добавились знаменитые С, С++ и Perl. Стали, наконец, появляться операционные системы в привычном нам понимании. К слову, многие аппараты до этого вообще путешествовали по космическим просторам без каких либо операционных систем (Пионер вам в пример). Таким образом приоритет захватил быстрый и удобный язык С. Именно на нём сейчас работает большая часть космических аппаратов, в том числе всем известный любимчик — марсоход Curiosity. Под роверы на С была написана универсальная операционная система VxWorks. Все марсоходы начиная от Pathfinder и заканчивая Curiosity работают на ней (привет моему оппоненту в споре).

Как кодят в SpaceX?

А теперь перейдем к современности.

Пример кода на С++

Если NASA — это ваш 60-летний сосед, пользующийся кнопочным телефоном, время от времени читающий газеты (те самые, бумажные) и прогуливающийся до рынка, чтобы прикупить себе что-нибудь модное, то SpaceX — это молодой паренёк со смартфоном в руках, в котором есть всё, начиная от звонков и новостей, заканчивая интернет магазинами с доставкой.

Компания Илона Маска также использует несколько языков программирования, однако их в разы меньше, чем у NASA и все они являются современными высокоуровневыми языками.

Для программного обеспечения на всех ракетах серии Falcon, на всех кораблях Dragon используется шикарнейший язык С++, который какое-то время я считал идеальным языком программирования (пока не познакомился с Java). Язык максимально универсален и, плюс ко всему, относительно машинных языков прост в изучении.

На нём пишут практически всех современных роботов, все системы дистанционного управления и всё, что только можно. По заявлениям сотрудников SpaceX, этот язык занимает основную позицию, среди всех других языков в компании. Своё место нашли C# и JavaScript. На них работают большая часть внутренних инструментов и услуг компании.

Знаете, есть подозрение, что даже кофеварка в кабинете у Илона Маска, вероятнее всего, работает на C# (если она у него есть).

Для других технологических задач также используются Knockout, Handlebars, Python, LESS. А моделирование проводится в LabVIEW с помощью графического языка программирования G.

Ну и из операционных систем для своих аппаратов SpaceX предсказуемо отдали предпочтение Linux.
В общем, у SpaceX, в отличие от тех же NASA, с разработкой ПО всё намного проще, практичнее и современнее.

И да - главой отдела программистов у Маска работет украинец, Леша Пахунов..)
______________________

За инфу благодарен Fr1Zz с "Альфа-центаври".

Tags: nasa, space x, Илон Маск, Роскосмос, космос, технологии будущего
Subscribe

Posts from This Journal “технологии будущего” Tag

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 106 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →

Posts from This Journal “технологии будущего” Tag