El programa Mariner y los bucles en Fortran

El 22 de Julio de 1962 despegaba a las 09:26:16 UT el Mariner 1 desde Cabo Cañaveral. Pasados 4 minutos se envió la orden de autodestrucción a la nave y ésta se desintegró en miles de fragmentos. La explicación oficial fue un fallo en el sistema de navegación.
Uno de los errores a los que estaban expuestos los programadores en la década de los 60 del siglo pasado era el de usar palabras reservadas del lenguaje como variables y que el compilador malinterpretara las sentencias. Por ejemplo, intentar IF=5; IF(IF) 3,5,6. Hoy en día los modernos compiladores raramente dejarán pasar un intento de este tipo sin algún tipo de advertencia pero en aquellos tiempos bastante era conseguir que el compilador hiciera su trabajo corriendo en sistemas comparativamente muy lentos y escasos de recursos.
Un error de esta clase pudo causar el desastre en el programa Mariner de la NASA, aunque la institución nunca lo aclaró y algunas fuentes aseguran que realmente podía haber afectado al proyecto Mercury. Se trataba de un bucle DO implementado en Fortran: DO 5 K=1.3 que fue interpretado por el compilador como una asignación: DO5K=1.3, por lo que el bucle esperado no se ejecutó.

No hay comentarios:

Publicar un comentario