2038: UN AÑO PARA ESTAR ALERTA
En informática, el problema del año 2038 podría causar que una parte del software falle en ese año. El problema afecta a los programas que usen la representación del tiempo basada en el sistema POSIX, que se basa en contar el número de segundos transcurridos desde el 1 de enero de 1970 a las 00:00:00 (ignorando los segundos intercalares).
Esta representación es un estándar de facto en los sistemas tipo Unix y también en los programas escritos para muchos otros sistemas operativos debido al gran alcance del lenguaje de programación C. En la mayoría de sistemas de 32 bits, el tipo de dato time_t usado para guardar el contador de segundos es un entero de 32 bits con signo, es decir, que puede representar un rango de números entre -2.147.483.648 y 2.147.483.647 (-231 y 231-1; 1 bit para el signo, y 31 para el valor absoluto), por lo que el último segundo representable con este formato será a las 03:14:07 UTC del 19 de enero de 2038, cuando el contador llegue a 2.147.483.647. Un segundo después, el contador se desbordará, y saltará al valor -2.147.483.648, que causará el fallo de programas que interpretarán el tiempo como que están en 1901 ó 1970 (dependiendo de la implementación), en vez de 2038. A su vez, esto causaría cálculo y procesamiento incorrecto.
No hay una forma sencilla de arreglar este problema para las combinaciones existentes de CPU/SO. Cambiar la definición de time_t para usar un tipo de 64 bits rompería la compatibilidad binaria para el software, almacenamiento de datos, y, por lo general, cualquier cosa que tenga algo que ver con la representación binaria del tiempo. Cambiar time_t a un entero de 32 bits sin signo afectaría a los programas que hacen cálculos con diferencias de tiempo.
La mayoría de sistemas operativos para arquitecturas de 64 bits utilizan enteros de 64 bits para time_t. La migración a estos sistemas está todavía en proceso y se espera que se complete mucho antes de 2038. Usar un entero de 64 bits retrasaría la fecha del problema unos 290 mil millones de años (290 × 109). Es decir, 22 veces la edad aproximada del Universo.

Es posible que la plataforma “PC” (o lo que sea que utilicemos como ordenador personal en 2038) esté exenta del problema. Actualmente los procesadores de 64 bits están convirtiéndose en la norma, y la mayoría de sistemas operativos para arquitecturas de 64 bits utilizan enteros de 64 bits para time_t. La migración a estos sistemas seguramente estará lista mucho antes del “Día D”. Sin embargo, varios cientos de millones de pequeños y anónimos dispositivos que hoy funcionan con núcleos de 32 bits todavía estarán dando vueltas en 2038, y ocasionaran algún que otro problema. A diferencia de los SO como Linux o Windows, los programas de muchos de esos sistemas son escritos por particulares o empresas pequeñas, que quizás ni siquiera sigan en el negocio dentro de 30 años, por lo que difícilmente reescriban sus aplicaciones.
Seguramente te estés preguntando cuándo volveremos a estar en esta situación si, en lugar de una variable de 32 bis, utilizamos una de 64. La diferencia entre el rango que pueden manejar es tan grande, que el efecto se retrasaría unos 290 mil millones de años. Si logramos pasar sin problemas el 2038, el próximo evento de este tipo ocurriría el 4 de diciembre del año 292 277 026 596 a las 15:30:08 UTC, arruinándoles el domingo a más de cuatro usuarios de ordenadores.




