Warum wird Python in Flugzeugen verwendet, obwohl es möglicherweise nicht zertifizierbar ist?

LandonZeKepitelOfGreytBritn

Ich hatte kürzlich eine Diskussion mit Leuten, die in der Luftfahrtindustrie tätig waren und sagte mir, dass eine der wichtigsten Sprachen / Tools, die sie verwenden, Python ist.

Andererseits habe ich immer gewusst, dass Leute C ++ oder zB Linux aus Zertifizierungsgründen für Avionik meiden. Die Zertifizierung ist auch einer der Gründe, warum Sie AI und Computer Vision in C ++ in Flugzeugen nicht sehen. Diese Leute benutzen Python jedoch die ganze Zeit.

Ich hatte (und werde) nie die Gelegenheit zu fragen, warum und wofür sie es benutzt haben. Könnte jemand erklären, warum und wofür die Leute Python noch verwenden würden, obwohl es sehr schwierig sein kann, es zertifizieren zu lassen?

user3528438

In einem Flugzeug gibt es mehr Computer als in der Avionik, insbesondere in einem Verkehrsflugzeug. Außerdem gibt es in der Branche mehr Computer als in einem Flugzeug. Sie können ihre Website in PHP, ihren Buchungsserver in Cobol, Infotainment in Java oder eine Datenbank in SQL schreiben, was auch immer.

immibis

Nur weil sie es benutzen, heißt das nicht, dass sie es im Flugzeug benutzen. Ich arbeite an (weniger kritischer) eingebetteter Software und das gesamte Testsystem ist in Python geschrieben, obwohl sich die eigentliche Software in C befindet.

LangeHaare

Was meinst du mit zertifiziert?

Roddy der gefrorenen Erbsen

Dies bittet um einen Witz "Schlangen im Flugzeug" ....

Peter

Um einen weiteren Kommentar zu C ++ hinzuzufügen, hat Lockheed speziell einen Codierungsstandard für die Verwendung im F-35-Programm geschrieben: stroustrup.com/JSF-AV-rules.pdf . Also ja, C ++ wird verwendet.

abelenky

Nur weil Luftfahrtentwickler Python verwenden, heißt das nicht, dass Python tatsächlich fliegt.

Bei vielen Entwicklungen in der Luftfahrt geht es darum, den fliegenden Code zu testen, zu betonen, zu validieren, zu analysieren und zu dokumentieren.

Python ist eine ausgezeichnete Sprache für all diese Validierungsarbeiten, auch wenn es am Boden bleibt.

selectstriker2

Ja, Python ist eine gängige Skriptsprache für die Automatisierung von Testgeräten. Die Hauptsprachen, die mir bekannt sind, sind Ada / SPARK, C / C ++ und Assembler

selectstriker2

Es ist nicht die Sprache, die Zertifizierungsprobleme verursacht. Dinge wie dynamischer Speicher, Ausnahmebehandlung, Vererbung und Funktionsüberladung können den Umfang der erforderlichen Zertifizierungs- (Verifizierungs-) Arbeit erhöhen. Die größte Zertifizierungslast besteht darin, dass Sie ein RTOS verwenden, anstatt für Bare Metal zu schreiben.

Slebetman

Und nur weil Code fliegt, heißt das nicht, dass er sicherheitskritisch ist. Heutzutage verwenden die Leute iPads als Teil ihres Avionik-Setups - IPADS !! Diese werden jedoch normalerweise für die Navigation und das Charting verwendet - das iPad kann niemals Steuerflächen, Fahrwerke oder andere mechanische Elemente steuern

Alephzero

Es gibt umfassende Richtlinien für die Softwareentwicklung in C und C ++. Diese verbieten die Verwendung der "problematischeren" Teile der Sprachen. Siehe misra.org.uk/Publications/tabid/57/Default.aspx . Ada "schien zu dieser Zeit eine gute Idee zu sein", aber es ist nie zu einer Mainstream-Sprache geworden, was bedeutet, dass die Benutzerbasis (wahrscheinlich nicht nachhaltig) klein ist - es sei denn, Sie glauben, dass es eine langfristige Zukunft hat, an der Sie teilnehmen möchten. Sie würden höchstwahrscheinlich vermeiden, sich darauf einzulassen.

psmears

@LandonZeKepitelOfGreytBritn: "Flugzeug C" - ist das ein absichtlicher Witz? :-)

T. Archer

Als Softwareentwickler, der bei einem Verteidigungsunternehmen arbeitet, das geschäftskritische (aber nicht sicherheitskritische) Systeme entwickelt und verkauft, kann ich bestätigen, dass die Entwicklung in Ada (95) für unsere Legacy-Produkte und verschiedene Arten von C / ziemlich gleichmäßig aufgeteilt ist. C ++ für unsere neuen Produkte. Die Entwicklung in beiden Fällen erfolgt natürlich nach den entsprechenden Standards.

Python ist weitgehend auf Plugins für unsere IDEs oder Validierungs- und Verifizierungsaktivitäten beschränkt (die sowohl von Software- als auch von Systemingenieuren verwendet werden).

Peter A. Schneider

Ich habe Ada 83 sehr genossen, als es an meinem College unterrichtet wurde, teilweise um gleiche Wettbewerbsbedingungen für die Studenten zu schaffen. Ich stellte fest, dass meine Programme bei Verwendung der Funktionen viel seltener abstürzten als mit C oder C ++. Ich finde besonders C ++ als Sprache außerordentlich schwierig (und ich benutze es seit> 20 Jahren und lese die letzten drei Standards - ok, vielleicht ist das der Grund). C ist nicht gerade sicher, aber zumindest eine kleine Sprache, die leicht vollständig zu verstehen ist (die Sprache, nicht die Bibliotheken). Also ist Ada tatsächlich sogar in der Avionik auslaufen? Das wäre traurig.

mbrig

@Peter Die SPARK / Ada-Leute behaupten, dass sie in den EuroFighter- und Rolls-Royce-Motoren Verwendung finden. Ich mag die Idee der Sprachbeweisbarkeit sehr, aber sie scheint definitiv ein Nischenmerkmal zu sein.

Reirab

@FreeMan Ich würde mir vorstellen, dass EuroFighter und Rolls auch das vom US-amerikanischen Verteidigungsministerium entwickelte Internet nutzen. :) DoD entwickelt viele Dinge.

T. Archer

@mbrig Ich arbeite gerade am Eurofighter, damit ich bestätigen kann, dass es überall im Taifun (und im Tornado) ist. Ich glaube, es wurde von der MOD vor langer Zeit beauftragt.

Superkatze

@ PeterA.Schneider: Ein Hauptproblem bei C besteht darin, dass der Standard feststellt, dass Implementierungen häufig dokumentierte Funktionen der Ausführungsumgebung in Fällen offenlegen, in denen der Standard ansonsten keine Anforderungen auferlegt, und die Programmierung auf niedriger Ebene häufig die Verwendung solcher Funktionen erfordert. Es gibt kein Standardmittel, mit dem Code anzeigen kann, dass er beispielsweise die Fähigkeit erfordert, relationale Operationen zu verwenden, um zu testen, ob zwei Zeiger überlappende Speicherbereiche identifizieren. Lineare Adressensysteme definieren im Allgemeinen eine globale transitive Ordnungsbeziehung zwischen allen Zeigern ...

Cody P.

Es gibt drei grundlegende Codierungsbereiche für Luftfahrtingenieure. Softwarecode, der auf Flugcomputern und anderen Avionikgeräten ausgeführt wird, Software, die diesen Code formell überprüft und erstellt, und Skripte zur Automatisierung informeller Arbeitsaufgaben. Python hat in allen unterschiedliche Anwendungsfälle.

Erstens für die eigentliche Software im Flugzeug. Hier gibt es unterschiedliche Sicherheitsstufen und unterschiedliche erforderliche Prüfstufen. Python wäre ein Albtraum für die Zertifizierung einer kritischen Anzeige, eines Autopiloten oder einer Warneinheit für Bodennähe. Cs Mangel an objektorientierter Programmierung und Beschwerden beim Missbrauch von Variablentypen können ärgerlich sein, führen aber auch zu einer einfachen Überprüfung, ob die Software hinter Ihrem Rücken nichts falsch macht. Andererseits habe ich von unkritischen Systemen wie Unterhaltung und Wartung während des Fluges gehört, selbst wenn Systeme wie Windows NT verwendet wurden.

Codegenerierung und formale Überprüfung (die Art, die dokumentiert ist, um den Zertifizierungsstellen zu beweisen, dass Sie niemanden töten werden) müssen manchmal formal qualifiziert sein. Sie können nicht einfach ein Python-Skript schreiben, um Ihre gesamte Software durch Simulation, formale Methoden usw. zu testen, und dann den Zertifizierungsstellen mitteilen, dass Ihr Python-Skript keine Probleme aufwies. Um genauer zu sein, bietet DO-330 eine Anleitung: Wenn Sie ein Tool zum Ersetzen von DO-178-Prozessen verwenden (z. B. Testen, Codegenerierung oder Konfigurationssteuerung), muss dieses Tool entweder formal qualifiziert sein oder seine Ausgabe muss überprüft werden (ja, auch wenn die Ausgabe narrensicherer ist als ein Mensch, der die gleiche Analyse durchführt).

Schließlich beinhalten viele Jobs von Ingenieuren Skripte, und es gibt derzeit nur wenige Sprachen, die für Skripte populärer sind als Python. Mit Skripten meine ich das Lösen von Problemen wie:

  • An welchen Themen arbeite ich in diesem Bereich?
  • Wie füge ich hundert Dateien gleichzeitig eine Beschreibung hinzu?
  • Unterscheiden sich diese Kriterien statistisch von diesen Kriterien?
  • Wie kann ich Hunderte von Datenzeilen aus unserer Datenbank abrufen und in eine Tabelle für meinen Projektingenieur kopieren?
  • Wie kann ich meinem Chef jeden Tag eine E-Mail senden und um eine Beförderung bitten?

In diesen unkritischen, aber alltäglichen Angelegenheiten kann Python-Scripting helfen, viele komplexe oder sich wiederholende Aufgaben zu lösen und sie handhabbar zu machen.

FreeMan

Ich habe mehr als ein paar Flughafenterminals gesehen, auf denen Win NT ausgeführt wird - das können Sie am BSOD erkennen! (Ja, ich habe ein paar gesehen.) Natürlich ist das luftfahrtbezogen, aber nicht flugzeugspezifisch.

T. Archer

Sicherlich verbringen wir viel Zeit damit, ausgefallene Excel-Tabellen voller VBA zu schreiben, um Daten zu verarbeiten!

Rohr

... hackt bei diesem Promotion-Skript weg

ein CVn

Mir gefällt, wie Sie sagen: "Wie kann ich meinem Chef jeden Tag eine E-Mail schicken und um eine Beförderung bitten?" als Problem, für dessen Lösung ein Skript erforderlich ist. Stellen Sie sicher, dass Sie in diesen E-Mails auf die Vorteile der Automatisierung hinweisen. :-)

Cody P.

@leftaroundabout Ja, C bietet viel Platz für Fehler wie NaN-Behandlung, Initialisierung und Speicherstrukturen. In der Regel wird die Codegenerierung für diese jedoch konsistent genug eingerichtet, um Probleme zu vermeiden (z. B. Vermeidung einer dyanmischen Zuordnung und Schutz vor Division durch Null). OOP und loses Tippen erfordern andererseits viele komplexe strukturelle Abdeckungstests, da das, was Sie für einen Foo halten, möglicherweise eine heimtückische Bar ist. Siehe zum Beispiel CAST-17.