Recientemente tuve una conversación con personas activas en la industria de la aviación y me dijeron que uno de los principales lenguajes/herramientas que usan es Python.
Por otro lado, siempre he sabido que la gente evita C++ o, por ejemplo , Linux por razones de certificación de aviónica. La certificación también es una de las razones por las que no ve la IA y la visión artificial en C++ en los aviones. Sin embargo, esas personas usan Python todo el tiempo.
No tuve (y nunca tendré) la oportunidad de preguntar por qué y para qué lo usaron. ¿Alguien podría explicar por qué y para qué la gente seguiría usando Python aunque puede ser muy difícil obtener la certificación?
El hecho de que los desarrolladores de aviación usen Python no significa que Python realmente salga volando.
Gran parte del desarrollo de la aviación consiste en probar, estresar, validar, analizar y documentar el código que sale volando.
Python es un lenguaje excelente para todo ese trabajo de validación, aunque se queda en el suelo.
Como ingeniero de software que trabaja en una empresa de defensa que desarrolla y vende sistemas de misión crítica (pero no críticos para la seguridad), puedo confirmar que hay una división bastante pareja entre el desarrollo en Ada (95) para nuestros productos heredados y varios tipos de C/ C++ para nuestros nuevos productos. El desarrollo en ambos se hace, por supuesto, con los estándares apropiados.
Python se limita en gran medida a complementos para nuestros IDE o actividades de validación y verificación (utilizados tanto por ingenieros de software como de sistemas).
Hay tres áreas básicas de codificación para ingenieros de aviación. Código de software que se ejecuta en computadoras de vuelo y otros equipos de aviónica, software que verifica y crea formalmente ese código y secuencias de comandos para automatizar tareas de trabajo informales. Python tiene diferentes casos de uso en todos ellos.
Primero, para el software real en el avión. Hay diferentes niveles de seguridad aquí y diferentes niveles requeridos de prueba. Python sería una pesadilla para certificar una pantalla crítica, un piloto automático o una unidad de advertencia de proximidad al suelo. La falta de programación orientada a objetos de C y las quejas cuando se abusa de los tipos de variables pueden ser molestas, pero también facilitan la verificación de que el software no está haciendo nada malo a sus espaldas. Por otro lado, he oído hablar de sistemas no críticos como entretenimiento y mantenimiento a bordo, incluso utilizando sistemas como Windows NT.
La generación de código y la verificación formal (del tipo que está documentado para demostrar a las autoridades de certificación que no matarás a nadie), a veces tienen que estar calificados formalmente. No puede simplemente escribir una secuencia de comandos de Python para probar todo su software mediante simulación, métodos formales, etc., y luego decirle a las autoridades de certificación que su secuencia de comandos de Python no mostró problemas. Para ser más específicos, DO-330 brinda orientación de que si está utilizando una herramienta para reemplazar los procesos DO-178 (como pruebas, generación de código o control de configuración), entonces esa herramienta debe calificarse formalmente o su salida debe ser verificado (sí, incluso si la salida es más infalible que un humano que hace el mismo análisis).
Finalmente, muchos trabajos de los ingenieros implican la creación de secuencias de comandos, y hay pocos lenguajes más populares en este momento para la creación de secuencias de comandos que python. Por secuencias de comandos me refiero a resolver problemas como:
En estos asuntos no críticos pero cotidianos, las secuencias de comandos de Python pueden ayudar a resolver muchas tareas complejas o repetitivas y hacerlas manejables.
void*
cuál es el tipeo más flexible que puede obtener. Y sin ningún polimorfismo, es muy difícil adherirse a DRY, que en principio es muy deseable por seguridad.
usuario3528438
usuario253751
LangeHaare
Roddy de los guisantes congelados
reirab
Sincrondino
Trilarión
tuskiomi
reirab