Lenguaje ensamblador utilizado en el sistema de aeronave

9

Hoy mi profesor mencionó que la razón por la cual el sistema de la aeronave está programado en lenguaje ensamblador se debe a que el programa que se está escribiendo tiene menos errores. ¿Es verdadera esta afirmación? Porque cuando preguntó por nuestra opinión, dije que el ensamblaje puede crear un programa más rápido, por lo que es un buen lenguaje para el programa de sistemas de aeronaves orientado en tiempo real. Busco en google pero parece que no puedo encontrar un artículo que aclare la declaración de mi profesor.

caramelo1995
fuente
24
O entendiste mal a tu profesor o tu profesor es un idiota.
Paul R
3
Usted no quiere escribir el software de control de los equipos críticos en tiempo real en el montaje. Hay idiomas mucho mejores disponibles tanto para el desarrollo de software en tiempo real como para el desarrollo de software crítico.
un CVn
55
Solo me pregunto acerca de la edad de tu profesor. De todos modos, podría haber tratado de señalar (aparentemente un poco fallido) que varios idiomas modernos, como java, están fuera de los límites (java tiene esto enunciado en su licencia de acompañamiento, por cierto) para misiones relacionadas con aviones -aplicaciones críticas.
ZJR
1
@ZJR: En realidad, AFAIK, un fabricante alemán de vehículos aéreos no tripulados utiliza Java para el sistema de control de vuelo. ¿Quizás compraron una licencia diferente?
Jörg W Mittag el
1
@ JörgWMittag: un UAV podría matar personas por otros métodos, pero la 'U' significa que una falla en el control de vuelo significa que no está poniendo en peligro la vida humana de inmediato. La licencia de Java dice que no es adecuada para sistemas de misión crítica, pero eso no impide que nadie tome esa decisión.
DaveE

Respuestas:

29

La declaración de su profesor es demostrablemente falsa. El código de control de Joint Strike Fighter está escrito en C ++. El 777 de Boeing utiliza 99% + ADA . El JPL usa principalmente C para conducir naves espaciales.

Estoy seguro de que hay más ejemplos, pero sospecho que muchos son propietarios o están clasificados.

Aquí hay un documento que entra en detalles sobre el tema de probar el software de aviónica en un nivel más general.

Ingeniero mundial
fuente
Algunos proyectos de la NASA también usaron un dialecto Lisp en el pasado. Un fabricante alemán de UAV incluso usa Java.
Jörg W Mittag el
El bombardero B2 fue reescrito recientemente en C. Fuente: tech.slashdot.org/story/08/07/14/1934228/…
usuario16764
En la Edad Media (principios de la década de 1980), el F-16A / B usaba lenguaje ensamblador para el conjunto de gestión de tiendas y JOVIAL J3B para la computadora Firecontrol. F-16C / D usó JOVIAL J73 para todo durante los primeros bloques, y creo que se cambiaron a Ada en años posteriores. No sé lo que están usando hoy.
John R. Strohm
5

Trabajo en OBOGS, que es un componente que se conecta a varios aviones. Normalmente usamos C para los dispositivos que vuelan, pero mirando a través de los archivos históricos, hay un par de proyectos de ensamblaje allí.

Es moda, sinceramente. Las lenguas suben y bajan. Las razones por las cuales las personas usan uno u otro varían en todo el lugar y son principalmente subjetivas. Me parece completamente plausible que alguien haya argumentado en algún momento que el ensamblaje fue la elección correcta para algún proyecto en algún lugar por completo porque tendría menos errores que en cualquier otro idioma. Y probablemente tenía razón, pero eso es porque el tipo no sabía cómo codificar en C que valía la pena. Con mucho, el mejor idioma para el trabajo es el que usted conoce. (Y el mejor idioma para tu crecimiento personal es uno que no conoces).

Puede decir objetivamente que el ensamblaje está más cerca del hardware, menos abstraído, más directo, con más instrucciones para lo mismo en otros idiomas. Incluso puede decir que está en el ámbito de la posibilidad de que el ensamblaje se pueda escribir para recortar gastos generales y fumar rápidamente. Si sabes lo que estás haciendo. ¿Pero en cuanto a la propensión a errores, la velocidad de desarrollo, la legibilidad y la capacidad de curar el cáncer? Todo eso depende de la capacidad del programador y de lo que han trabajado durante los últimos 20 años. Las mediciones de qué proyectos con qué idioma tiene X cantidad de errores están sujetos a factores sociológicos, lo que los convierte en métricas inútiles. No, todo es tanta moda.

Es bueno saber a qué se reduce su código, así que voy a decir que es importante aprender a ensamblar. Si solo un poco. Pero no escribiría ninguna aviónica en él.

Philip
fuente
1
Al final, escribir ensamblado significa menos código de máquina en general si sabes lo que estás haciendo y sabes exactamente exactamente cómo se verá el código de máquina resultante; no tiene que confiar en un compilador para que sea adecuado para usted.
Hawken