¿Qué es el error Y2K38 del que todo el mundo habla?, ¿estamos frente al nuevo efecto 2000?, ¿realmente es para preocuparse?. Pues bien, toma asiento que ahora mismo te lo explico…
Hace justo ahora 17 años se produjo una psicosis mundial, casi comparable a un verdadero apocalipsis. El motivo no era otro que el denominado efecto 2000. Para ponernos en antecedentes debemos recordar que, ya antes del año 2000, teníamos la mala costumbre de producir software escribiendo el año en las fechas únicamente con sólo los dos últimos dígitos. Por ejemplo 30/10/83, haciendo referencia al año 1983.
Este peligroso hábito provocó que la gran mayoría del software creado en la década de los 70, 80 y 90 se implementase de esta misma manera, es decir, únicamente con los dos últimos dígitos del año.
Evidentemente el 31/12/99 ponía de manifiesto el problema dado, ya que la siguiente fecha debería ser 01/01/00 y sin embargo había una gran incertidumbre en cómo el software se comportaría: ¿correspondería al año 2000 o al año 1900?, o incluso ¿dejará de funcionar?, ¿se volverá loco?… Tanto es así que incluso se especulaba sobre la posibilidad de que muchos aviones se estrellasen.
Por suerte el paso del tiempo confirmó que todos estos temores fueron completamente infundados. Claro que gran parte del software se parcheó y a partir de entonces se empezaron a usar los 4 dígitos para hacer referencia al año, pero es que incluso el software que no se tocó seguía funcionando con normalidad.
Finalmente el paso del tiempo confirmó que los temores provocados por el efecto 2000 fueron exagerados. Sin embargo ahora se nos presenta un digno heredero de aquella psicosis, conocido como efecto Y2K38
Pues bien, ahora se cierne sobre nosotros un problema similar a este efecto 2000, aunque la buena noticia es que no se producirá hasta el año 2038, más en concreto, el 19 de enero de 2038.
A continuación vamos a explicar en qué consiste este efecto y cómo nos puede afectar.
Y2K38: explicación de la representación binaria
Estoy seguro que más de una vez habrás escuchado la frase: “en informática todo se reduce a unos y ceros”. Y es así. Pero para que todo cobre sentido, estos unos y ceros deben tener un significado dentro de un contexto. En caso contrario, todo se convierte en un caos.
Es decir, si yo doy la siguiente secuencia de unos y ceros: 000001010000001100001010 … y no digo nada más, no me estará aportando información útil. Lo único que tengo es una ristra de unos y ceros sin ningún significado.
Si además de la ristra te digo que pertenece a una serie de números enteros que representan una magnitud cualquiera, por ejemplo variación de temperatura de un día al siguiente, entonces tengo algo más de información. Pero sigue sin estar completa. Para poder tener toda la información completa necesito saber que cada dato (variación de temperatura con respecto al día anterior) se representa con 8 bits cada uno.
Ahora ya puedo traducir la información de la ristra de unos y ceros a datos comprensibles:
Este proceso que hemos seguido se denomina codificación binaria y trata de dar sentido a la ristra de unos y ceros, que es el lenguaje en el que se comunican las máquinas.
Y2K38: explicación del problema
Y volviendo al problema planteado inicialmente, en los comienzos de la informática, los sistemas basados en UNIX tomaron como referencia el número de segundos transcurridos desde el 1 de enero de 1970 para la representación de fechas.
Este valor se codificó en una palabra binaria de longitud 32 bits. Por ejemplo, la palabra binaria 1011010010010010111101000000000, se corresponde al valor decimal 1514764800 que nos indica el número de segundos transcurridos desde este 1 de enero de 1970 hasta el 1 de enero de 2018. En el siguiente enlace puedes realizar más conversiones.
Como se puede intuir, con una palabra de 32 bits no se pueden representar todos los valores deseados, es decir, existe un límite de valores a representar. En concreto con una palabra de 32 bits se pueden representar 2^32 – 1 valores diferentes (esto es algo más de dos mil millones de segundos)
¿Puedes imaginar que fecha se correspondería al valor en segundos 2^32 -1 (desde 1970)? Exacto! Es el 19 de Enero de 2038. A partir, de ese día todas las máquinas programadas con este sistema de codificación de fechas ‘pensarán’ que están en el día 1 de Enero de 1970.
En informática este problema se conoce como overflow (o desbordamiento) y nadie está libre de él. Por ejemplo, le sucedió al mismísimo Google (en su plataforma Youtube) con el vídeo gangnam style. Resulta que el citado vídeo se convirtió en el vídeoclip más reproducido de la historia y cuando el contador alcanzo su límite (unos dos mil millones de visitas) se produjo el overflow y pasó a negativo. Esto provocó que Google migrara su plataforma a servidores de 64 bits:
Pero … ¿qué pasará en el 2038?
Bueno, eso depende. Primero habría que decir que las plataformas basadas en Windows usan otro sistema de codificación diferente para representar fechas. Por lo que no se verían afectados por este problema.
Los sistemas basados en UNIX (Linux, Android, IOS, etc.) y prácticamente la totalidad de sistemas embebidos sí que usan este sistema de codificación, por lo que sus aplicaciones deberán actualizarse para corregir este defecto.
Aunque bien es cierto que para el 2038 es de esperar que la mayoría de sistemas sea ya de 64 bits o superiores. Si bien, esto no soluciona el problema sí que lo alivia bastante porque con una palabra de 64 bits existen valores para representar fechas hasta 2,90 billones de años … si has leído bien 2.9 x 10 ^12 años, que se considera que es 220 veces la edad del Universo.
Analista programador en activo desde el 2001 usando lenguajes variados (Clipper, Pascal, Delphi, ensamblador, Visual Basic, C/C++, Java …) y actualmente Angular y VueJS para aplicaciones web FrontEnd.
Deja un comentario