miércoles, 2 de enero de 2008

Comenzamos mal el año

Los lectores más madrugadores del día 1 de enero han podido comprobar que la página "Edición papel" no funcionó por la mañana durante un rato.

La culpa ha sido del que firma estas líneas: debido a un error de programación, la página trataba de mostrar todas las portadas hasta el año 2038. Obviamente, todavía no publicamos el periódico con tanta anticipación. Tras un breve repaso, descubrí mi error (un error trivial, todo hay que decirlo) y en unos minutos ya estaba todo arreglado.

Pero, ¿por qué trataba de mostrar las portadas hasta el 2038 y no otra fecha? La razón es la forma en que la mayoría de los sistemas informáticos manejan las fechas: miden el tiempo basándose en una fecha "cero" o inicial y contando los segundos desde esta fecha. La fecha de referencia más habitual es el 1 de enero de 1970 a las 00:00:00 horas.

El número de segundos desde esta fecha de referencia se denomina "timestamp" (marca de tiempo) y, como decíamos, es uno de los métodos más habituales de manejar las fechas/hora en informática.

En el momento en que estoy escribiendo esto, mi sistema me dice que el "timestamp" es 1199227361, esto es, han pasado ese número de segundos desde el 1 de enero de 1970.

La mayor parte de las máquinas actuales utilizan 32 bits para representar el tiempo, esto quiere decir que pueden manejar valores entre -2147483648 y 2147483647. En el momento que alcancemos el segundo 2147483648, los sistemas fallarán y seguirán contando en el segundo -2147483648, una cifra sin mucho sentido. Por ejemplo, mi equipo "piensa" que el segundo 2147483648 corresponde al 13 de diciembre de 1901.

El segundo 2147483647 realmente lo alcanzaremos el día 19 de enero de 2038. Si para entonces no se han modificado los sistemas actuales, tendremos un problema, el llamado "Problema del año 2038". Se espera que en ese momento la mayoría de equipos utilizarán 64 bits para manejar las fechas y horas, pero ¿qué pasará con los sistemas que todavía utilicen 32 bits? Todavía no hay una solución definitiva, pero no hay mucha prisa, tenemos 30 años por delante para arreglarlo. Esperemos que no nos "pille el toro".

5 comentarios:

  1. José Manuel Mancebo2 de enero de 2008, 14:28

    Bastante curioso, la verdad. Nunca dejarás de sorprenderme David, pero me hago una pregunta: ¿Por qué tratabas de mostrar todas las portadas hasta el año 2038 y no hasta la actualidad? Siempre intentando ''forzar'' los sistemas...Y para que no te preocupes, piensa que siempre puede ser peor y si no, mira:http://www.terra.es/tecnologia/articulo/html/tec18018.htmUn saludo de un ex compañero y amigo.

    ResponderEliminar
  2. José Manuel:¡El error era precisamente ése: se supone que la página debía mostrar sólo las portadas hasta la fecha actual!Mi metedura de pata provocó que el programa siguiese ejecutándose hasta que se desbordó el contador de tiempo.Un abrazo.

    ResponderEliminar
  3. El "efecto" 2038...La mayoría de los sistemas informáticos manejan las fechas midiendo el tiempo basándose en una fecha “cero” o inicial y contando los segundos desde esta fecha. La fecha de referencia más habitual es el 1 de enero de 1970 a las 00:00:00 horas....

    ResponderEliminar
  4. muy interesante deivid!tampoco había caído yo en ese problema del 2038... y sí, nos quedan 30 años, pero tal y como somos los humanoides españoles, me da a mí que la solución la dejaremos para diciembre de 2037!^_^un saludete!!

    ResponderEliminar
  5. Como muy bien dices, y cito-''Se espera que en ese momento la mayoría de equipos utilizarán 64 bits para manejar las fechas y horas''-Hoy en dia la mayoria de las máquinas usan 64 bits, el problema es que aun no hay software comercial suficiente que funcione con 64 bits. Creo que para dentro de 30 años, eso ya se habrá solucionado.

    ResponderEliminar