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úmero 2.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.
En este caso, un error de desbordamiento causó que el sistema de defensa no pudiera seguir la trayectoria del misil Scud,
que viajaba a una velocidad de 1,7km/s, y en su lugar escaneara el
espacio aéreo a más de 500 metros de distancia del objetivo.
Como resultado, el Scud cayó sobre las barracas, con saldo de 28 soldados muertos y 98 personas heridas.
Error de Gangnam
No todos los problemas de desbordamiento son tan destructivos como
estos ejemplos, pero con frecuencia crean efectos inesperados.
Por ejemplo, en el videojuego Civilization, un error imprevisto ocasionó que el pacífico personaje de Gandhi se volviera hostil.
Cuando los jugadores escogían una cierta modalidad de juego, el valor
que definía la agresividad de Gandhi se echaba para atrás hacia el
cero, y de ahí seguía retrocediendo hasta dar el valor máximo.
En consecuencia, Gandhi amenazaba a los jugadores con armas nucleares cada vez que aparecía, lo que hizo reír a muchos de ellos.
En diciembre, se informó que Gangnam Style, el video más popular de todos los tiempos en YouTube, había “roto” el contador del sitio web.
Aparentemente, el contador había sido programado para llegar solo
hasta 2.147.483.647 (de nuevo, el valor positivo máximo de un procesador
de 32 bits).
Resultó un buen truco publicitario para YouTube, que actualizó el
contador. El nuevo máximo está muy por arriba de los nueve cuatrillones.
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”.
Siguenos a traves de nuestro twitter @elparroquiano
Si deseas comunicarte con nosotros ya sea para denunciar, aportar o publicitar con nosotros, escribenos aca: eparroquiano5@gmail.com
No hay comentarios.:
Publicar un comentario