Язык ассемблера, используемый в авиационной системе

9

Сегодня мой лектор упомянул причину, почему система самолета запрограммирована на языке ассемблера, потому что написанная программа имеет меньше ошибок. Это утверждение верно? Потому что, когда он спросил о нашем мнении, я сказал, что сборка может создать более быструю программу, таким образом, это хороший язык для ориентированной в реальном времени системы авиационной системы. Я ищу в Google, но, похоже, не могу найти статью, разъясняющую утверждение моего лектора.

caramel1995
источник
24
Либо вы неправильно поняли своего лектора, либо ваш лектор - идиот.
Paul R
3
Вы не хотите писать программное обеспечение для управления критически важным оборудованием в режиме реального времени при сборке. Существуют гораздо лучшие языки, доступные как для разработки программного обеспечения в режиме реального времени, так и для разработки критически важных программ.
CVn
5
Просто интересно о возрасте вашего лектора. В любом случае, он мог бы только попытаться указать (вроде бы, что-то не так) на то, что ряд современных языков, таких как java, являются запрещенными (java это прописано в сопровождающей лицензии, кстати) для миссии, связанной с самолетами критические приложения.
ZJR
1
@ZJR: На самом деле, AFAIK, немецкий производитель БПЛА, использует Java для системы управления полетом. Может они купили другую лицензию?
Йорг Миттаг
1
@ JörgWMittag: БПЛА может убивать людей другими методами, но буква «U» означает, что сбой в управлении полетом означает, что он не подвергает опасности жизнь человека. Лицензия Java гласит, что она не подходит для критически важных систем, но это не мешает кому-либо сделать такой выбор.
DaveE

Ответы:

29

Утверждение вашего лектора доказуемо ложно. Joint Strike Fighter код управления «s написана на C ++. 777 от Boeing использует 99% + ADA . JPL использует в основном C для управления космическими кораблями.

Я уверен, что есть еще примеры, но я подозреваю, что многие из них являются собственностью или классифицированы.

Вот статья, в которой подробно рассматриваются вопросы тестирования программного обеспечения авионики на более общем уровне.

Мировой инженер
источник
Некоторые проекты НАСА также использовали диалект Lisp в прошлом. Немецкий производитель БПЛА даже использует Java.
Йорг Миттаг
Бомбардировщик B2 недавно был переписан на C. Источник: tech.slashdot.org/story/08/07/14/1934228/…
user16764
Еще в темные века (начало 1980-х) F-16A / B использовал язык ассемблера для набора управления магазинами и JOVIAL J3B для компьютера Firecontrol. F-16C / D использовал JOVIAL J73 для всего за первые несколько блоков, и я думаю, что они переключились на Аду в последующие годы. Я не знаю, что они используют сегодня.
Джон Р. Штром
5

Я работаю над OBOGS, который является компонентом, который подключается к различным самолетам. Обычно мы используем C для устройств, которые летают, но, просматривая исторические файлы, в них есть пара сборочных проектов.

Это мода, если честно. Языки поднимаются и опускаются. Причины, по которым люди используют то или иное, варьируются повсеместно и в основном субъективны. Я считаю вполне правдоподобным, что кто-то в какой-то момент утверждал, что сборка была правильным выбором для какого-то проекта полностью, потому что в нем было бы меньше ошибок, чем в любом другом языке. И он, вероятно, был прав, но это потому, что парень не знал, как писать код на Си, чего бы это не стоило. Безусловно, лучшим языком для работы является тот, который вы знаете. (И лучший язык для вашего личностного роста - это тот, который у вас нет.)

Вы можете объективно сказать, что сборка ближе к оборудованию, менее абстрактна, более прямолинейна, с большим количеством инструкций к тому же на других языках. Можно даже сказать, что существует вероятность того, что сборка может быть написана так, чтобы сократить расходы и курить быстро. Если вы знаете, что делаете. Но что касается подверженности ошибкам, скорости развития, читабельности и способности излечивать рак? Все это зависит от способностей программиста и того, над чем он работал последние 20 лет. Измерения того, в каких проектах на каком языке имеется X ошибок, зависят от социологических факторов, в значительной степени делая их бесполезными показателями. Нет, все это так модно.

Хорошо знать, к чему сводится ваш код, поэтому я хочу сказать, что важно изучать ассемблер. Если только немного. Но я бы не стал писать в нем авионику.

Филипп
источник
1
Наконец, написание ассемблера означает меньше машинного кода в целом, если вы знаете, что делаете, и знаете точно, как будет выглядеть полученный машинный код; вам не нужно доверять компилятору, чтобы получить его правильно для вас.
Хокен