Algunas razones Es probable que haya cientos de sistemas y subsistemas en la aeronave, todos los cuales se programan independientemente uno del otro y se escriben para que puedan interactuar (cuando sea necesario) con otros programas. Todo esto tiene que suceder muy, muy rápido. Es probable que estén escritos en C ++ en su mayor parte, o en C, o una mezcla de los dos. Algunas partes pueden estar escritas en lenguaje ensamblador para un rendimiento aún mayor. Los lenguajes de bajo nivel requieren más líneas de código para hacer las cosas, y el manejo de errores generalmente también requiere un poco más de trabajo. Además, muchos sistemas tienen copias de seguridad a las que fallar. Más código para el sistema de respaldo, MÁS más código para detectar y manejar la conmutación por error.
Los lenguajes de programación de nivel superior facilitan las cosas para los programadores, pero también tienen un costo de rendimiento, sin importar cómo los optimice. También introducen nuevos puntos de falla. Un piloto de F-35 no puede llamar a su mesa de ayuda en medio de un tiroteo porque su radar de control de incendios exige una actualización de Java. Del mismo modo, incluso en un lenguaje de nivel inferior, los programas como este deben estar lo más cerca posible a prueba de balas. Eso significa más código (mi programa C ++ que ejecuta mi pequeña aplicación cliente-servidor financiero puede arrojar un error no detectado y bloquearse una vez en una luna azul y no me importa mucho). Si mi programa C ++ que controla el sistema fly-by-wire en mi F-35 falla, estoy en serios problemas (suponiendo que el sistema de respaldo también se bloqueó o no se produjo una falla en la computadora de respaldo).