Qué es el problema del año 2038?
El problema del año 2000 es entendido por la mayoría de la gente en estos días debido a la gran cantidad de atención mediática que recibió.
La mayoría de los programas escritos en el lenguaje de programación C son relativamente inmunes al problema del efecto 2000, pero sufren en cambio el problema del año 2038. Este problema surge porque la mayoría de los programas en C utilizan una biblioteca de rutinas llamada biblioteca de tiempo estándar . Esta biblioteca establece un formato estándar de 4 bytes para el almacenamiento de los valores de tiempo, y también proporciona una serie de funciones para convertir, mostrar y calcular los valores de tiempo.
Anuncio
El formato estándar de 4 bytes asume que el comienzo del tiempo es el 1 de enero de 1970, a las 12:00:00 a.m. Este valor es 0. Cualquier valor de tiempo/fecha se expresa como el número de segundos que sigue a ese valor cero. Así que el valor 919642718 es 919.642.718 segundos después de las 12:00:00 a.m. del 1 de enero de 1970, que es el domingo 21 de febrero de 1999, a las 16:18:38 hora del Pacífico (EE.UU.). Este es un formato conveniente porque si restas dos valores cualesquiera, lo que obtienes es un número de segundos que es la diferencia de tiempo entre ellos. A continuación, puede utilizar otras funciones de la biblioteca para determinar cuántos minutos/horas/días/meses/años han pasado entre las dos horas.
Si ha leído Cómo funcionan los bits y los bytes, sabrá que un entero de 4 bytes con signo tiene un valor máximo de 2.147.483.647, y de ahí viene el problema del Año 2038. El valor máximo del tiempo antes de que se pase a un valor negativo (e inválido) es 2.147.483.647, que se traduce en el 19 de enero de 2038. En esta fecha, cualquier programa en C que utilice la biblioteca de tiempo estándar empezará a tener problemas con los cálculos de fechas.
Este problema es algo más fácil de solucionar que el efecto 2000 en los mainframes, afortunadamente. Los programas bien escritos pueden simplemente ser recompilados con una nueva versión de la biblioteca que utilice, por ejemplo, valores de 8 bytes para el formato de almacenamiento. Esto es posible porque la biblioteca encapsula toda la actividad horaria con sus propios tipos y funciones de tiempo (a diferencia de la mayoría de los programas de mainframe, que no estandarizaron sus formatos de fecha o cálculos). Así que el problema del año 2038 no debería ser ni mucho menos tan difícil de solucionar como lo fue el efecto 2000.
Aquí hay algunos enlaces interesantes:
Publicidad