"
Как кодят в Роскосмосе?
«
С? С++? Что за бред? Какой-то набор скобочек и запятых? Зачем нам это?» — подумали российские инженеры, когда эти языки начали появляться на свет. И продолжили писать (и по сей день пишут) ПО для ракет и космических кораблей на языках, разработанных еще для "Бурана".
Для реализации этого проекта тогда был разработан
ПРОЛ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 с "Альфа-центаври"."
Сообщение отредактировал Гладырь Виталий: 06 August 2021 - 09:31 AM