Linguaggio di assemblaggio utilizzato nel sistema aeronautico


9

Oggi il mio docente ha menzionato il motivo per cui il sistema aeronautico è programmato in linguaggio assembly perché il programma in fase di scrittura ha meno errori. Questa affermazione è vera? Perché quando ha chiesto della nostra opinione, ho detto che l'assemblaggio può creare un programma più veloce, quindi è un buon linguaggio per il programma di sistema di aeromobili orientato in tempo reale. Cerco su Google ma non riesco a trovare un articolo che chiarisca la dichiarazione del mio docente.


24
O hai frainteso il tuo conferenziere o il tuo conferenziere è un idiota.
Paul R,

3
Non si desidera scrivere software di controllo di apparecchiature critiche in tempo reale nell'assemblaggio. Sono disponibili lingue molto migliori sia per lo sviluppo di software in tempo reale sia per lo sviluppo di software critico.
un CVn il

5
Mi chiedo solo l'età del tuo conferenziere. Ad ogni modo, avrebbe potuto solo tentare di sottolineare, (in qualche modo un fallimento, a quanto pare) che un certo numero di lingue moderne, come java, sono vietate (java lo ha spiegato nella sua licenza di accompagnamento, tra l'altro) per la missione relativa agli aerei applicazioni critiche.
ZJR,

1
@ZJR: In realtà, AFAIK, un produttore tedesco di UAV utilizza Java per il sistema di controllo del volo. Forse hanno acquistato una licenza diversa?
Jörg W Mittag,

1
@ JörgWMittag: un UAV potrebbe essere in grado di uccidere le persone con altri metodi, ma "U" significa che un fallimento del controllo del volo significa che non mette immediatamente a repentaglio la vita umana. La licenza Java afferma che non è adatta per sistemi mission-critical, ma ciò non impedisce a nessuno di fare questa scelta.
DaveE,

Risposte:


29

L'affermazione del docente è di fatto falsa. Il codice di controllo del Joint Strike Fighter è scritto in C ++. Il 777 di Boeing utilizza il 99% + ADA . Il JPL usa principalmente C per guidare astronavi.

Sono sicuro che ci sono altri esempi ma sospetto che molti siano proprietari o classificati.

Ecco un documento che approfondisce il tema del test del software avionico a un livello più generale.


Alcuni progetti della NASA hanno anche usato un dialetto Lisp in passato. Un produttore di UAV tedesco utilizza persino Java.
Jörg W Mittag,

Il bombardiere B2 è stato recentemente riscritto in C. Fonte: tech.slashdot.org/story/08/07/14/1934228/…
user16764

Back in the Dark Ages (primi anni '80), F-16A / B utilizzava il linguaggio assembly per il Stores Management Set e JOVIAL J3B per Firecontrol Computer. F-16C / D ha usato JOVIAL J73 per tutto per i primi blocchi, e credo che siano passati ad Ada negli anni successivi. Non so cosa stiano usando oggi.
John R. Strohm,

5

Lavoro su OBOGS, che è un componente collegato a vari velivoli. In genere usiamo C per i dispositivi che volano, ma guardando attraverso i file storici, ci sono un paio di progetti di assemblaggio.

È la moda, onestamente. Le lingue aumentano e diminuiscono. Le ragioni per cui le persone usano l'una o l'altra variano in tutto il luogo e sono per lo più soggettive. Trovo del tutto plausibile che qualcuno ad un certo punto abbia sostenuto che l'assemblaggio fosse la scelta giusta per qualche progetto da qualche parte interamente perché avrebbe avuto meno errori rispetto a qualsiasi altra lingua. E probabilmente aveva ragione, ma questo perché il ragazzo non sapeva come scrivere un codice in C degno di nota. Di gran lunga la migliore lingua per il lavoro è quella che conosci. (E la lingua migliore per la tua crescita personale è quella che non conosci.)

Puoi obiettivamente affermare che l'assemblaggio è più vicino all'hardware, meno astratto, più diretto, con più istruzioni per la stessa cosa in altre lingue. Puoi anche dire che è nel regno della possibilità che l'assemblea possa essere scritta per eliminare le spese generali e fumare velocemente. Se sai cosa stai facendo. Ma per quanto riguarda la propensione all'errore, la velocità di sviluppo, la leggibilità e la capacità di curare il cancro? Tutto ciò dipende dalle capacità del programmatore e da cosa hanno lavorato negli ultimi 20 anni. Le misurazioni di quali progetti con quale lingua hanno X quantità di bug sono soggette a fattori sociologici, rendendoli in gran parte metriche inutili. No, è tutta così tanta moda.

È bello sapere a cosa si riduce il tuo codice, quindi dirò che è importante imparare l'assemblaggio. Se solo un po '. Ma non scriverei alcun avionica in esso.


1
Alla fine, scrivere assembly significa meno codice macchina in generale se sai cosa stai facendo e sai praticamente esattamente come sarà il codice macchina risultante; non devi fidarti di un compilatore per farlo bene per te.
Hawken,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.