Недавно у меня была беседа с людьми, активно работающими в авиационной отрасли, и они сказали мне, что одним из основных языков/инструментов, которые они используют, является Python.
С другой стороны, я всегда знал, что люди избегают C++ или, например , Linux из-за причин сертификации авионики. Сертификация также является одной из причин, по которой вы не видите ИИ и компьютерное зрение в C++ на самолетах. Тем не менее, эти люди используют Python все время.
У меня не было (и не будет) возможности спросить, почему и для чего они его использовали. Может ли кто-нибудь объяснить, почему и для чего люди все еще будут использовать Python, хотя его сертификация может быть очень сложной?
Тот факт, что разработчики авиации используют Python, не означает, что Python действительно летает.
Большая часть разработки авиации связана с тестированием, нагрузкой, проверкой, анализом и документированием кода, который летает.
Python — отличный язык для всей этой работы по проверке, даже если он остается на земле.
Как инженер-программист, работающий в оборонной компании, которая разрабатывает и продает критически важные (но не критически важные для безопасности) системы, я могу подтвердить, что между разработкой на Ada (95) для наших устаревших продуктов и различными разновидностями C/ C++ для наших новых продуктов. Разработка в обоих, конечно же, осуществляется в соответствии с соответствующими стандартами.
Python в значительной степени ограничен плагинами для наших IDE или действиями по проверке и проверке (используемыми как программистами, так и системными инженерами).
Есть три основных области кодирования для авиационных инженеров. Программный код, работающий на бортовых компьютерах и другом авиационном оборудовании, программное обеспечение, формально проверяющее и создающее этот код, и сценарии для автоматизации неформальных рабочих задач. Python имеет разные варианты использования во всех из них.
Во-первых, для фактического бортового программного обеспечения. Здесь есть разные уровни безопасности и разные требуемые уровни тестирования. Python был бы кошмаром для сертификации критического дисплея, автопилота или устройства предупреждения о приближении к земле. Отсутствие в C объектно-ориентированного программирования и жалобы, когда вы злоупотребляете типами переменных, могут раздражать, но они также позволяют легко проверить, что программа не делает что-то неправильно за вашей спиной. С другой стороны, я слышал о некритичных системах, таких как развлечения и обслуживание в полете, даже с использованием таких систем, как Windows NT.
Генерация кода и формальная верификация (такая, которая задокументирована, чтобы доказать органам сертификации, что вы никого не убьете) иногда требует формальной квалификации. Вы не можете просто написать сценарий Python для тестирования всего вашего программного обеспечения с помощью моделирования, формальных методов и т. д., а затем сообщить органам сертификации, что ваш сценарий Python не выявил проблем. Чтобы быть более конкретным, DO-330 содержит рекомендации о том, что если вы используете инструмент для замены процессов DO-178 (таких как тестирование, генерация кода или управление конфигурацией), то этот инструмент должен быть либо официально квалифицирован, либо его выходные данные должны быть быть проверенным (да, даже если вывод более надежен, чем человек, выполняющий тот же анализ).
Наконец, многие рабочие места инженеров связаны со сценариями, и сейчас мало языков, более популярных для написания сценариев, чем python. Под сценариями я подразумеваю решение таких проблем, как:
В этих некритичных, но повседневных делах сценарии Python могут помочь решить множество сложных или повторяющихся задач и сделать их управляемыми.
void*
это, это самая свободная типизация, которую вы можете получить. А без всякого полиморфизма очень сложно придерживаться DRY, что в принципе очень желательно для безопасности.
пользователь3528438
пользователь 253751
ЛангеХааре
Родди из замороженного горошка
рейраб
Синхрондин
Триларион
тускиоми
рейраб