El martes 4 de junio de 1996 se recordará por
siempre como un día oscuro para la Agencia Espacial Europea (AEA).
El primer vuelo no tripulado del cohete Ariane
5, cargado con cuatro costosos satélites científicos, se convirtió en una bola
de fuego y humo 39 segundos después de empezar.
Se estima que la explosión significó una
pérdida de US$370 millones.
¿Qué pasó? No hubo falla mecánica ni acto de sabotaje. No: el lanzamiento terminó en desastre gracias a un simple error de software. Una computadora superada por la matemática: esencialmente, porque se vio abrumada por un número más grande de lo que se esperaba.
¿Cómo es posible que una computadora quedara
aturdida por números? Pues resulta que tales errores son responsables de una
serie de desastres y percances en años recientes, que han terminado en la
destrucción de cohetes, el extravío de naves espaciales y el lanzamiento de
misiles fuera de objetivo.
¿Qué los provoca y cómo ocurren?
Imagínate que tratas de representar el valor
de, digamos, 105.350 kilómetros en un odómetro con un valor máximo de 99.999.
El contador volverá al valor de 00.000 y contará a partir de ahí hasta 5.349, el saldo restante.
Esta es la misma especie de inexactitud que
condenó al fracaso el lanzamiento del Ariane en 1996. Más técnicamente, se le
llama "desbordamiento de entero" (integer overflow, en inglés).
Significa que los números son demasiado grandes para el sistema de almacenamiento,
lo que puede ocasionar el mal funcionamiento.
Lanzamiento fallido
La investigación del incidente del Ariane
encontró que un proceso que había quedado en el software de una generación
anterior de cohetes, el Ariane 4, había capturado una lectura inesperadamente
alta de la velocidad lateral del nuevo y más rápido vehículo.
El software del Ariane 5 no pudo manejar esa
cifra. Una secuencia de autodestrucción se inició. Un par de segundos después,
el cohete era historia.
Esta clase de problemas surge con una
frecuencia sorprendente. Se sospecha que la razón por la cual la Nasa perdió
contacto con la sonda espacial Deep Impact en 2013 fue que llegó a un límite de
enteros.
Hace poco se informó que el Boing 787 puede estar afectado por un problema similar.
La unidad de control que maneja la
distribución de energía a los motores de la nave entran en modo de respaldo
automáticamente –y apagan los motores- si se la deja encendida por más de 248
días.
Hipotéticamente, los motores podrían apagarse
de repente incluso en mitad de un vuelo. Aunque se han dado a conocer muy pocos
detalles –la Autoridad Federal de Aviación (FAA, por sus siglas en inglés) y
Boeing declinaron la oportunidad de dar su opinión para este artículo-, algunos
observadores aficionados han destacado que 248 días (contados en centésimas de
segundos) equivalen al número2.147.483.647, lo cual es muy significativo.
¿Y por qué? Sucede que 2.147.483.647 es el
valor positivo máximo que puede almacenarse en un procesador de 32 bits,
comúnmente instalado en muchos sistemas de computación.
Límite intrigante
Los números son infinitos, así que ¿por qué
escoger un almacenamiento tan limitado?
La respuesta es que, tradicionalmente, las
computadoras han exigido eficiencia para todo. El espacio que se usaba para
almacenar información solía ser mucho más costoso de lo que es ahora y procesar
valores más grandes tomaba más tiempo.
Si te mantenías dentro de ciertos límites, el
software funcionaba mejor. Los sistemas de dirección de un cohete hacen muchas
cuentas críticas muy rápido, así que cualquier número de sobra realmente
importa.
El problema con eso es que, como demostró el
Ariane 5, tales limitaciones no siempre son percibidas como problemáticas de
antemano.
"Tenemos que reconocer que con el
software siempre manejamos una realidad aproximada", explica Bill
Scherlis, un experto de la Carnegie Mellon University. "Siempre hay una
negociación entre el costo de lograr una representación más exacta y el
beneficio de la eficiencia".
El matemático Douglas Arnold, de la
Universidad de Minnesota, incluye el incidente del Ariane 5 en una página web
titulada "Algunos desastres atribuibles a mala computación numérica".
Arnold también resalta un caso de 1991 en el
que un misil Patriot falló en su intento de interceptar un ataque de misiles
Scud iraquíes contra unas barracas del ejército estadounidense durante la
Guerra del Golfo.
Con frecuencia es este tipo de supuesto, que
inicialmente se piensa razonable, lo que causa problemas más adelante.
El desbordamiento más sonado de la historia,
que muchos recordarán, fue el cacareado "error del milenio". Aunque
generalmente se lo considera un fiasco, el Y2K causó algunos dolores de cabeza.
Con el Y2K, el problema era más simple. ¿Qué
pasa cuando uno registra los años sólo con los últimos dos dígitos? 1900 se
vuelve lo mismo que 2000.
Mucha gente se dio cuenta de que esto causaría
confusión en los sistemas de computación que almacenaban valores anuales de
esta manera. Al final, no cayeron aviones del cielo, pero hubo algunas
consecuencias interesantes.
Por ejemplo, el equipo de detección de
radiación de la localidad japonesa de Ishikawa colapsó a medianoche; 150
máquinas de apuestas de un hipódromo de Delaware fallaron, y varios sitios web
dieron como nueva fecha "1 de enero de 19100".
Doce años después, en un incidente similar,
una mujer sueca de 1905 de nombre Anna Eriksson recibió una carta que la
invitaba a comenzar en el jardín de infantes porque el software había sido
diseñado para contactar a los individuos nacidos en "07" (2007, no
1907).
La incapacidad para reconocer correctamente el
año llevó a que millones de tarjetas de débito y crédito no pudieran usarse en
Alemania el día de Año Nuevo de 2010.
El año 2038
Hace unos 15 años, al programador William
Porquet se le ocurrió pensar por anticipado en otra fecha crucial: las 3.14.07
de la mañana, GMT, del martes 19 de enero de 2038.
Ese será el momento en que el número de
segundos que habrán pasado desde el 1 de enero de 1970 excederá el valor máximo
de muchos registros de fecha y hora de muchos computadores hoy.
Como en el caso del error del milenio, si no
nos preparamos podemos terminar en colapso.
"Escribí por primera vez sobre el asunto
en 1999", comenta Porquet. "Adquirí el dominio 2038.org, primero como
una travesura. Pero luego me di cuenta de que hay algunos problemas
reales".
A Porquet le preocupan partes viejas de
software a las que nadie presta ya atención en redes bien establecidas. Cuántas
de ellas seguirán operando en 23 años y qué consecuencias tendrá eso es algo
que nadie sabe.
"Muchos sistemas de computación -señala
Porquet- podrían fallar en forma predecible. Pero lo harán de modos impredecibles".
Error en el tiempo
Markus Kuhn, un científico de computación de
la Universidad de Cambridge, explica que los errores relacionados con la fecha
crean interés porque sus consecuencias son impredecibles, pero también porque
"no son inesperados", y la gente puede especular sobre lo que puede
pasar cuando el día temido amanezca.
Kuhn piensa que el problema de 2038 será menos
significativo que el Y2K porque el error del milenio preparó a la industria de
la computación para hacer las correcciones necesarias.
De hecho, ese es el plan de William Porquet.
"Espero que sea algo que me saque de un semi retiro por una gran cantidad
de dinero", dice medio en serio, medio en broma.
Para Kuhn, el problema interesante no es el
error de desbordamiento en sí, sino otro que ocurrirá el próximo mes de junio.
El año 2015 será un segundo más largo que 2014
gracias a una medida tomada para corregir la discrepancia entre el tiempo
astronómico (el que se basa en el movimiento de rotación de la Tierra) y el
tiempo atómico (el método más exacto de medición del tiempo).
La última vez que eso pasó fue 2012, y
ocasionó el colapso de muchas computadoras. Afortunadamente, dice Kuhn, esta
vez estaremos mejor preparados.
Parece que, sin importar lo que hagamos,
ciertos números y cálculos siempre van a confundir a las computadoras, causando
errores o cosas peores.
"Hemos aprendido mucho de la experiencia
del Y2K y otros eventos similares", dice Scherlis. "Pero en realidad
siempre estamos haciendo aproximaciones y teniendo que hacer negociaciones en
el terreno de la ingeniería. Eso nos acompañará para siempre".
No hay comentarios:
Publicar un comentario