Assemblersprache, die im Flugzeugsystem verwendet wird

9

Heute erwähnte mein Dozent den Grund, warum das Flugzeugsystem in Assemblersprache programmiert ist, weil das geschriebene Programm weniger Fehler aufweist. Ist diese Aussage wahr? Denn als er nach unserer Meinung fragte, sagte ich, dass die Montage ein schnelleres Programm erstellen kann, daher ist es eine gute Sprache für ein Echtzeit-orientiertes Flugzeugsystemprogramm. Ich suche in Google, kann aber anscheinend keinen Artikel finden, der die Aussage meines Dozenten verdeutlicht.

caramel1995
quelle
24
Entweder haben Sie Ihren Dozenten missverstanden oder Ihr Dozent ist ein Idiot.
Paul R
3
Sie möchten keine Echtzeit-Steuerungssoftware für kritische Geräte in der Baugruppe schreiben. Es gibt viel bessere Sprachen sowohl für die Echtzeit-Softwareentwicklung als auch für die kritische Softwareentwicklung.
Ein CVn
5
Ich wundere mich nur über das Alter Ihres Dozenten. Wie auch immer, er hat vielleicht nur versucht, darauf hinzuweisen (was anscheinend scheitert), dass eine Reihe moderner Sprachen wie Java für Missionen im Zusammenhang mit Flugzeugen verboten sind (Java hat dies übrigens in der zugehörigen Lizenz dargelegt) -kritische Anwendungen.
ZJR
1
@ZJR: Tatsächlich verwendet AFAIK, ein deutscher UAV-Hersteller, Java für das Flugsteuerungssystem. Vielleicht haben sie eine andere Lizenz gekauft?
Jörg W Mittag
1
@ JörgWMittag: Ein UAV kann möglicherweise Menschen mit anderen Methoden töten, aber das 'U' bedeutet, dass ein Versagen der Flugkontrolle bedeutet, dass es das menschliche Leben nicht sofort gefährdet. Die Java-Lizenz besagt, dass sie nicht für geschäftskritische Systeme geeignet ist, aber das hindert niemanden daran, diese Wahl zu treffen.
DaveE

Antworten:

29

Die Aussage Ihres Dozenten ist nachweislich falsch. Der Steuercode des Joint Strike Fighter ist in C ++ geschrieben. Die 777 von Boeing verwendet 99% + ADA . Die JPL verwendet hauptsächlich C , um Raumschiffe anzutreiben.

Ich bin sicher, dass es weitere Beispiele gibt, aber ich vermute, dass viele proprietär oder klassifiziert sind.

Hier ist ein Artikel, der einige Details zum Thema Testen von Avionik-Software auf einer allgemeineren Ebene behandelt.

Weltingenieur
quelle
Einige NASA-Projekte verwendeten in der Vergangenheit auch einen Lisp-Dialekt. Ein deutscher UAV-Hersteller verwendet sogar Java.
Jörg W Mittag
Der B2-Bomber wurde kürzlich in C umgeschrieben. Quelle: tech.slashdot.org/story/08/07/14/1934228/…
user16764
Zurück im dunklen Zeitalter (Anfang der 1980er Jahre) verwendete F-16A / B Assemblersprache für das Stores Management Set und JOVIAL J3B für den Firecontrol Computer. F-16C / D verwendete JOVIAL J73 für alles in den ersten Blöcken, und ich glaube, sie wurden in späteren Jahren auf Ada umgestellt. Ich weiß nicht, was sie heute benutzen.
John R. Strohm
5

Ich arbeite an OBOGS, einer Komponente, die in verschiedene Flugzeuge eingesteckt wird. Wir verwenden normalerweise C für die Geräte, die fliegen, aber wenn wir die historischen Dateien durchsehen, gibt es dort einige Montageprojekte.

Es ist Mode, ehrlich. Sprachen steigen und fallen. Die Gründe, warum Menschen den einen oder anderen benutzen, sind überall unterschiedlich und meist subjektiv. Ich finde es völlig plausibel, dass irgendwann jemand argumentierte, dass die Montage für ein Projekt irgendwo die richtige Wahl sei, weil sie weniger Fehler enthalten würde als in jeder anderen Sprache. Und er hatte wahrscheinlich Recht, aber das liegt daran, dass der Typ nicht wusste, wie man in C codiert, was verdammt wert ist. Bei weitem die beste Sprache für den Job ist die, die Sie kennen. (Und die beste Sprache für Ihr persönliches Wachstum ist eine, die Sie nicht haben.)

Sie können objektiv sagen, dass die Assemblierung näher an der Hardware liegt, weniger abstrahiert, direkter, mit mehr Anweisungen für dasselbe in anderen Sprachen. Man kann sogar sagen, dass es im Bereich der Möglichkeit liegt, dass eine Versammlung geschrieben werden kann, um den Aufwand zu verringern und schnell zu rauchen. Wenn Sie wissen, was Sie tun. Aber was Fehleranfälligkeit, Entwicklungsgeschwindigkeit, Lesbarkeit und die Fähigkeit zur Heilung von Krebs betrifft? All das hängt von den Fähigkeiten des Programmierers und dem ab, woran er in den letzten 20 Jahren gearbeitet hat. Messungen, bei welchen Projekten mit welcher Sprache X Fehler auftreten, unterliegen soziologischen Faktoren, die sie weitgehend wertlos machen. Nein, es ist alles so viel Mode.

Es ist gut zu wissen, worauf Ihr Code hinausläuft, daher werde ich sagen, dass es wichtig ist, das Zusammenbauen zu lernen. Wenn auch nur ein bisschen. Aber ich würde keine Avionik darin schreiben.

Philip
quelle
1
Am Ende bedeutet das Schreiben von Assemblys insgesamt weniger Maschinencode, wenn Sie wissen, was Sie tun, und Sie wissen ziemlich genau, wie der resultierende Maschinencode aussehen wird. Sie müssen keinem Compiler vertrauen, um es für Sie richtig zu machen.
Hawken