NASA escribe software de vuelo crítico para misiones en C. Y las reglas son absolutamente INSANAS. > No se permite la recursión. Nunca. > Cada bucle debe tener un límite superior demostrable. > No se permite la asignación dinámica de memoria después de la inicialización. > Máximo ~60 líneas por función. > Mínimo 2 afirmaciones por función. > Cada valor de retorno debe ser verificado. > No se permiten advertencias del compilador. > Análisis estático diario. Cero advertencias allí también. > No se permiten punteros a funciones. > Desreferenciación de punteros restringida. Así es como escriben código en NASA / JPL para sistemas críticos de misión.