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.
9
Odpowiedzi:
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.
źródło
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.
źródło