Todos hemos escuchado hablar del ‘Efecto 2000’ provocado por un bug muy común, pero, ¿qué hay del ‘Efecto 2038’?

En el siglo pasado, los programadores, asumiendo que el software no iba a reciclarse, habían tomado por costumbre omitir la centuria o siglo en el que estaban. Es decir, que trataba las fechas con los dos últimos dígitos y no por completo, porque se almacenaban de dos en dos. Así se conseguía ahorrar espacio, que era mucho más valioso que ahora.

Al pasar de siglo, justo a las 00:00 horas del año 00 se produciría el error en aquellos sistemas que estuvieran activos (en el resto, cuando se encendieren). Dio pie a muchas anécdotas graciosas, aunque no produjo ningún fallo grave. Por ejemplo, en un colegio de Pensilvania, Estados Unidos, un software de préstamos de libros cobró a los niños como si hubieran tenido los libros prestados por 100 años.

efecto 2000 problema anecdota 1900

Qué ocurrirá en el año 2038

Ahora, a pesar de que ya hemos dejado atrás el ‘Efecto 2000’, nos enfrentamos al ‘Efecto 2038’, también conocido como ‘Y2K38’. Lo que ocurrirá es que muchos dispositivos, al llegar el martes 19 de enero de 2038, pensarán que estamos en el 13 de diciembre de 1901. Concretamente el error se producirá al pasar 7 segundos sobre las 3:14 horas.

efecto 2038 hora y fecha

El error será producido por la forma de contar fechas, pues habitualmente es mediante el conteo de segundos transcurridos entre el año 1970 (1969 en el caso de Android) y el año actual. En algunos sistemas operativos programados en C o en derivados de este, solamente se podrán acumular segundos hasta el 2038, fecha en la que no se podrá distinguir entre la actual y el año 1901.

En la imagen superior vemos la representación de lo que ocurrirá a partir del segundo 7: no se podrá distinguir entre una fecha y otra porque la representación en binario es la misma.

¿Qué equipos estarían afectados? Cualquiera que ejecute un software de 32 bits y que esté basado en Unix, lo que implica que estarán afectados GNU/Linux (Linux, como se le suele llamar comúnmente), Android y iOS (que no macOS).

La clave está, como decimos, en usar software de 32 bits, por lo que sustituyéndolo por software de 64 bits se soluciona el problema. Entrando en profundidad, datos tales como las fechas se almacenan en un entero de 32 bits con signo, por lo que se puede representar dentro de un rango que va desde -2.147.483.648 hasta 2.147.483.647.

¿Pero, por qué estos números?

La razón por la que hablamos de estos números se reduce al exponente 232, (2 como base por el sistema binario de 1 y 0, y 32 por los bits del sistema) con lo que pueden representarse 4.294.967.296 valores. Si tenemos en cuenta que se representan tanto valores positivos como negativos, tenemos que tener en cuenta también que el signo se lleva una cifra (‘0’ si es positivo y ‘1’ si es negativo).

Así, no tenemos 232, sino 231 valores, por lo que realmente tenemos 2.147.483.648 valores que, si le restamos el valor 0, pues también cuenta, tenemos que podemos representar desde el -2.147.483.648 hasta 2.147.483.647, como adelantábamos antes.

‘El efecto 2038’ y el Gangnam Style

A pesar de que el famoso videoclip Gangnam Style no es el origen de este nuevo efecto, el coreano sí que nos recordó por qué no debíamos olvidarlo. Muchos no lo recordarán o nunca llegaron a saberlo, pero cuando el vídeo de YouTube alcanzó las 2.147.483.647 reproducciones en 2014, el contador no fue capaz de funcionar más.

‘Efecto 2038’: ¿hay algo de lo que preocuparse?

Si ya de por sí en 2017 la transición entre los equipos de 32 bits y los de 64 bits está muy avanzada, en 2038 quedarán ninguno o pocos ordenadores de arquitectura x86 o que usen software de 32 bits activo. Por lo tanto, no habría de qué preocuparse.

desarrollo web programacion lenguajes de programacion

En cualquier caso, si por algún motivo llegase algún dispositivos de tal características a tal año, se podría parchear perfectamente cambiando el tipo de variable en el que se almacena la fecha. Y aunque no se pudiera parchear, lo único que afectaría sería que los sistemas mostrasen el año 1901, lo que únicamente podría provocar anécdota como las que ocurrieron en el 2000.

Como curiosidad, esto mismo no ocurriría con los procesadores de 64 bits, pues con capaces de almacenar mucha más información y el problema llegaría dentro de muchos milenios. Básicamente, el crecimiento de 32 a 64 es exponencial.

Por ejemplo, si quisiéramos romper YouTube de nuevo, pero en 64 bits, tendríamos que alcanzar el exponente 263 (el exponente es 63 y no 64 porque quitamos una cifra que se lleva el signo), o lo que es lo mismo, las 9.223.372.036.854.775.807 visualizaciones, algo impensable. En tiempo, correspondería a dentro de 9.223.372.036.854.775.807 segundos, que en años serían 2,9 x 1011.

Noticias relacionadas