Język asemblera używany w systemie lotniczym

9

Dzisiaj mój wykładowca wspomniał, że powodem, dla którego system samolotów jest zaprogramowany w języku asemblera, jest to, że w pisanym programie występuje mniej błędów. Czy to stwierdzenie jest prawdziwe? Ponieważ, gdy zapytał o naszą opinię, powiedziałem, że asembler może stworzyć szybszy program, dlatego jest to dobry język dla programu systemu samolotów zorientowanego w czasie rzeczywistym. Przeszukuję google, ale nie mogę znaleźć artykułu wyjaśniającego wypowiedź mojego wykładowcy.

karmel 1995
źródło
24
Albo źle zrozumiałeś swojego wykładowcę, albo wykładowca jest idiotą.
Paul R
3
Zdajesz nie chcesz pisać w czasie rzeczywistym oprogramowania sterującego krytycznym sprzęt w montażu. Dostępne są znacznie lepsze języki zarówno do tworzenia oprogramowania w czasie rzeczywistym, jak i do tworzenia oprogramowania o znaczeniu krytycznym.
CVn
5
Zastanawiam się tylko o wieku twojego wykładowcy. W każdym razie mógł jedynie starać się wskazać (najwyraźniej trochę zawodzi), że wiele współczesnych języków, takich jak java, jest niedostępnych (java ma to określone w licencji towarzyszącej, btw) dla misji związanych z samolotami -krytyczne zastosowania.
ZJR
1
@ZJR: W rzeczywistości AFAIK, niemiecki producent UAV, używa systemu Java do sterowania lotem. Może kupili inną licencję?
Jörg W Mittag
1
@ JörgWMittag: UAV może być w stanie zabijać ludzi innymi metodami, ale „U” oznacza brak kontroli lotów, co oznacza, że ​​nie zagraża to bezpośrednio ludzkiemu życiu. Licencja Java mówi, że nie jest odpowiednia dla systemów o znaczeniu krytycznym, ale to nie przeszkadza w dokonywaniu tego wyboru.
DaveE

Odpowiedzi:

29

Oświadczenie twojego wykładowcy jest możliwe do udowodnienia. Joint Strike Fighter kod sterujący „s jest napisany w języku C ++. 777 z Boeinga wykorzystuje 99% + ADA . JPL używa głównie C do kierowania statkami kosmicznymi.

Jestem pewien, że jest więcej przykładów, ale podejrzewam, że wiele jest zastrzeżonych lub sklasyfikowanych.

Oto artykuł, który szczegółowo opisuje temat testowania oprogramowania awioniki na bardziej ogólnym poziomie.

Inżynier świata
źródło
Niektóre projekty NASA używały w przeszłości dialektu Lisp. Niemiecki producent UAV używa nawet Javy.
Jörg W Mittag
Bombowiec B2 został niedawno przepisany w C. Źródło: tech.slashdot.org/story/08/07/14/1934228/…
user16764
W średniowieczu (wczesne lata 80-te) F-16A / B używał języka asemblera dla zestawu zarządzania sklepami i JOVIAL J3B dla komputera Firecontrol. F-16C / D używał JOVIAL J73 do wszystkiego przez kilka pierwszych bloków i sądzę, że przeszli na Adę w późniejszych latach. Nie wiem, czego dziś używają.
John R. Strohm,
5

Pracuję na OBOGS, który jest komponentem podłączanym do różnych samolotów. Zwykle używamy C do latania urządzeń, ale przeglądając pliki historyczne, jest tam kilka projektów asemblacyjnych.

Szczerze mówiąc, to moda. Języki rosną i spadają. Powody, dla których ludzie używają jednego lub drugiego, różnią się w zależności od miejsca i są w większości subiektywne. Uważam za całkowicie prawdopodobne, że ktoś w pewnym momencie argumentował, że asembler był właściwym wyborem dla jakiegoś projektu gdzieś całkowicie, ponieważ miałby mniej błędów niż w jakimkolwiek innym języku. I prawdopodobnie miał rację, ale to dlatego, że facet nie umiał cholernie kodować w C. Zdecydowanie najlepszym językiem dla tej pracy jest ten, który znasz. (A najlepszym językiem dla twojego osobistego rozwoju jest ten, którego nie znasz.)

Można obiektywnie powiedzieć, że montaż jest bliższy sprzętowi, mniej abstrakcyjny, bardziej bezpośredni, z większą liczbą instrukcji na to samo w innych językach. Można nawet powiedzieć, że istnieje możliwość napisania zespołu w celu wycięcia nad głową i szybkiego palenia. Jeśli wiesz co robisz. Ale co do podatności na błędy, szybkości rozwoju, czytelności i zdolności do leczenia raka? Wszystko to zależy od umiejętności programisty i tego, nad czym pracowali przez ostatnie 20 lat. Pomiary, w których projektach, w których języku występuje X liczby błędów, podlegają czynnikom socjologicznym, w dużej mierze czyniąc je bezwartościowymi. Nie, to wszystko tyle mody.

Dobrze wiedzieć, do czego sprowadza się twój kod, więc powiem, że ważna jest nauka montażu. Choćby trochę. Ale nie napisałbym w tym żadnej awioniki.

Philip
źródło
1
I na koniec, pisanie asemblera oznacza ogólnie mniej kodu maszynowego, jeśli wiesz, co robisz, i wiesz dokładnie, jak będzie wyglądał wynikowy kod maszynowy; nie musisz ufać kompilatorowi, aby uzyskać go dla siebie.
Hawken,