Efecto 2038 (Y2K38), el equivalente al Efecto 2000
Hoy os traigo un artículo que, desde mi punto de vista, es bastante interesante. Hoy os voy a hablar del Efecto 2038, también conocido como el Y2K38.
Antes de nada os voy a comentar un poco sobre su antecesor, el tan famoso Efecto 2000 o Y2K, del cual se creía que iba a surgir el caos de la era de la información.
Efecto 2000 (Y2K)
¿Sabes lo que es el Efecto 2000? Seguramente hayáis oído hablar de este famoso Efecto 2000 en numerosas películas y series. ¿Y en cual? Pues por ejemplo esto salió en Los Simpson en el capítulo de La Casa del Árbol del Terror X de la temporada 11 de dicha serie (ver reseña del capítulo).
En todas ellas había algo en común, el caos por culpa de los aparatos electrónicos y los ordenadores. Para aquellos que no sepan lo que es o quieran una información más técnica aquí os va.
Los problemas del nuevo año del 2000 venían dados por un problema que, a pesar de que se sabía que iba a llegar, nunca se le puso solución hasta faltados pocos días para el «desastre». ¿Y cual fue ese problema? Pues resulta que en aquella época los programadores abreviaban los años de las fechas en dos dígitos, de aquella forma el año 1996 era el año 96. ¿Y qué pasa con eso? Pues lo que sucede es que no hay ninguna diferencia entre el año 1900 y el año 2000 (puesto que ambos se abrevian como 00), por lo tanto al llegar a dicho año 2000 los ordenadores se pensarían que están en el año 1900.
Por suerte el problema se solventó rápidamente enviando actualizaciones a la mayoría de los dispositivos electrónicos, dando preferencia por supuesto a los ordenadores del estado, bancos, bolsa, …, para evitar una catástrofe. A pesar de todas las medidas tomadas, al llegar el año 2000 se toparon con algunos problemas leves, que sin duda hubiesen sido muchos mayores que si no se hubiese tomado ninguna medida.
¿Y por qué os cuento todo esto? Pues porque el Efecto 2038 es bastante similar …
Efecto 2038 (Y2K38)
Vamos al problema que nos atañe … y que por cierto, aún está sin solucionar …
Al igual que en el caso ya pasado hace 15 años, esto se sabe desde hace muchos años que iba a pasar, pero no se tomó hasta ahora ninguna medida al respecto. También, de igual forma que en el caso anterior, el problema viene dado por la “vuelta” a una fecha anterior de la que realmente estamos.
En este caso, todo se debe a la norma POSIX (IEEE 1003) que entre otras cosas, define los estándares de tiempos para la hora y la fecha del ordenador. En dicho estándar el tiempo se mide en segundos transcurridos desde una “época”, en general, el tiempo se mide en el número de segundos transcurridos desde la Época Unix (medianoche del día 1 de Enero del 1970).
¿Y qué problema hay con esto? Mientras contemos segundos no debería pasar nada, ¿no? Pues resulta que no. Esto se debe a que en un sistema operativo de 32 bits la fecha se guarda en una variable de dicha capacidad, pero se reserva un bit para el signo, dejándonos con 31 bits. Esta variable nos permite guardar hasta el número 2.147.483.648 (segundos), que son aproximadamente unos 68 años. Haciendo unos sencillos cálculos nos damos cuenta que el 19 de Enero del 2038 a las 03:14:07 será la última fecha posible con este sistema.
Como siempre he dicho, una imagen vale más que mil palabras, sobre todo si es una imagen animada:
¿Y qué pasará cuando lleguemos a esa fecha? Pues resulta que ese bit reservado para el signo se cambiaría a 1 (negativo), pero debido a que no hay fechas negativas, el sistema no lo toma como referencia. De tal forma que el 19 de Enero del 2038 a las 03:14:08, el ordenador lo entenderá como si fuera el 1 de Enero del 1970 a las 12:00:01 (puesto que es la fecha correspondiente para el valor 0). A este fenómeno en informática se le suele denominar como Desbordamiento o Overflow.
¿Entonces las fechas se confundirán? Sí, tal y como pasó con el Efecto 2000.
¿Y cual puede ser la solución? Es muy común pensar que el cambio a los 64 bits puede ser la solución, pero no lo es del todo … Lo que pasa es que los lenguajes de programación también se ven afectados por esto. Por ejemplo, C, uno de los lenguajes de programación más usados, se vería afectado por esto puesto que internamente sigue la regla POSIX de la que hablamos anteriormente. Por tanto, a pesar de que los 64 bits ayudan, por sí solos no son la solución. Además de que no hay que olvidarse de que no todos los sistemas que usamos día a día usan los 64 bits. Entonces el problema debe de ser solucionado de raíz creando un nuevo método para medir el tiempo, o ampliando el tamaño de las variables que lo almacenan.
¿Y qué pasa si intento poner la una fecha posterior al 1 de Enero del 2038 en algunos de mis dispositivos?Pues te recomiendo que lo pruebes (tened cuidado los usuarios de versiones de Android antiguas). Pero por si te da vagancia, te digo yo lo que pasa: yo lo probé en mi iPhone, mi iPad, mi MacBook Pro y mi ordenador Windows, y en ninguno de ellos me fue posible.
Conclusión
¿Qué opináis vosotros de todo esto? ¿Creéis que pasará algo grave ese día del año 2038? ¿Llegaremos a tiempo (es algo que se conoce desde hace mucho tiempo, pero los humanos somos muy vagos …)?
Si queréis saber más os dejo aquí unos enlaces a la sabelotodo Wikipedia: