“Dados los suficientes ojos, todos los bugs son evidentes”
Gracias a la última tira de User Friendly hoy he descubierto el “bug del año 2038″ de los sistemas Unix (y en general de los programas escritos en lenguaje C) de 32 bits. Básicamente, el problema reside en que el Unix C utiliza para medir el tiempo el número de segundos transcurridos desde el 1 de enero de 1970. Este número en ciertos casos se almacena en cuatro bytes, que alcanzan hasta 231 (más un bit para el signo) o, lo que es lo mismo, 2147483647 segundos. Esa cantidad de segundos se alcanzará en el año 2038, exactamente el martes 19 de enero a las 03:14:07 de la madrugada; en ese momento, la cuenta se revertirá a -2147483647. Por supuesto, es bastante improbable que para dentro de treinta y un años todavía haya sistemas y programas de 32 bits funcionando con ese bug. (Más información en 2038bug.com y en la Wikipedia).
Justo hoy se puede leer en Slashdot una noticia sobre un bug de fechas que obligó a un F-22 Raptor, un caza “stealth” recién estrenado, a dar media vuelta en un vuelo a Japón y regresar a la base en Hawaii guiado visualmente por los aviones cisterna que lo acompañaban, debido a que todo el software de a bordo falló al cruzar la línea horaria que separa un día del siguiente. Por lo visto, si no hubiera ido acompañado o si el tiempo hubiese sido malo, habría tenido serios problemas para regresar. Imaginad lo que debe de ser pilotar “a mano” un F-22.
Esta clase de bugs no son una cosa que ocurre cada milenio. En realidad están relacionados con limitaciones de la programación, que se pueden dar en cualquier momento y en cualquier circunstancia si se supera un umbral. Normalmente los errores se descubren pronto, pero a veces una tecnología perdura más de lo esperado y excede las circunstancias para las que estaba pensada. Sin embargo, otras veces, como en el caso del F-22, se deben única y exclusivamente a una cagada del programador que estaba al cargo.