Quizá muchos han escuchado del Efecto 2000 también conocido como Y2K que empezó a tomar relevancia por ahí del 1999 que era una amenaza de un colapso a nivel tecnológico, también se le llamo «El error del milenio» y que llego a provocar un temor generalizado en la sociedad ante un fallo que provocaría que un segundo después del 31 de diciembre de 1999 todos los sistemas informáticos pasarían o retrocedieran al 1 de enero de 1900 en vez de seguir su rumbo normal, esto porque la mayoría de los sistemas informáticos codificaban el año en dos dígitos y que fue provocado por un bug o un error de software que se temía que tuviese letales consecuencias y que trascendiese más allá del mundo de la informática.
Bien, esto nos da pie para poder entender el ahora llamado «Efecto 2038» que no es más que otro “bug” relativo, que en este caso, a la codificación del tiempo en los sistemas de 32 bits (el reloj que usan), que nos llegaría a afectar en enero del año 2038. Esto básicamente por el reloj que tienen muchos equipos que se basan en POSIX, que es un contador de segundos que va ascendiendo con cada segundo que pasa y que tiene como fecha de referencia el 1 de enero de 1970; por tanto, el tiempo es igual al número de segundos transcurridos desde esta fecha de referencia. Sin embargo, como en los sistemas de 32 bits los tiempos se codifican con un número entero y un signo, llegará un momento en que el contador llegará al número máximo que es capaz de almacenar en positivo y comenzará a contar en negativo (volveremos a 1901). Los sistemas que cuentan la hora desde (21:00 31/12/1969) provocarían el error de cálculo a las 00:14:07 del 19 de enero de 2038, ya que confundirán la fecha con el 13 de diciembre de 1901.
Ignoramos las consecuencias que esto podría provocar en algunos años, pero de lo que si estamos seguros es que aun existe bastante tiempo para poder resolver este problema y evitar un pánico colectivo como el que provoco en su momento el Y2K o Efecto 2000.
El “Efecto 2038” afectará principalmente al sistema operativo Unix, sobre el que se asientan tanto Android como iOS así como muchos servidores de Internet, puntos de acceso Wi-Fi o routers.
Casi todos los sistemas operativos que se utilizan hoy en día se remontan a UNIX. Cuando los ingenieros desarrollaron el primer sistema operativo para máquinas UNIX en la década de 1970, decidieron arbitrariamente que el tiempo se representaría como un entero de 32 bits con signo y se mediría como el número de segundos desde las 12:00:00 am del 1 de enero de 1970. Los sistemas de fecha y hora de bits solo pueden contar hasta 2,147,483,647, lo que se traduce en el 19 de enero de 2038 (3:14:08 am). En esta fecha, cualquier programa en C que utilice la biblioteca time_t estándar de 32 bits tendrá problemas para calcular la fecha.
La mayoría de las funciones de soporte que utilizan el tipo de datos time_t no pueden manejar valores time_t negativos. Fallan y devuelven un código de error, y esto hace que el programa de llamada se bloquee.
¿Existe una solución para el Y2K38?
Si bien se hace mucho eco de ser un problema grave, la realidad es que con el tiempo y de manera indirecta se han tomado acciones para que este error no afecte en la fecha estimada, al cambiar los equipos con procesadores de 32 bits a 64 bits, lo que de plano resolvería este problema al tener capacidad para muchos siglos sin tener que lidiar con este problema del reloj.