Los ordenadores no dejarán de funcionar el 19 de enero de 2038

2038

A finales de los años 60, los primeros ordenadores UNIX (todavía no había Windows, aunque no podáis creerlo) contaban el tiempo en fracciones de 1/60 de segundo. La cuenta se llevaba sobre un entero con signo de 32 bits, que podía representar números desde −2.147.483.648 hasta 2.147.483.647. Aunque parezca un número muy grande, realmente solo permitía llevar la cuenta del tiempo durante 414 días. Más tarde, el sistema cambió para contar segundos enteros, lo que permitía gestionar fechas durante 24.855 días (68 años). Se decidió que la cuenta empezase en el primer segundo del 1 de enero de 1970. A esta manera de gestionar las fechas en computación se le llama tiempo Unix o Tiempo POSIX.

Ya desde su inicio se sabía que el día 19 de enero de 2028 a las 3:14:08 el sistema fallaría, marcando como fecha el 13 de diciembre de 1901 a las 8:45.

Year_2038_problem

Esto indudablemente supone un problema, ya que todos los programas que trabajan con este formato de tiempo se verán afectados. Todavía son muchos los sistemas que cuentan el tiempo con un entero de 32 bits con signo, como los sistemas android, iphone y muchos servidores, principalmente UNIX. Si vais a vuestro móvil y le intentáis cambiar la fecha, comprobaréis que no os deja avanzar más allá de 2037. La razón es esta, usan enteros de 32 bits con signo.

¿Por qué es esto un problema?

Porque después de más de 40 años utilizando este sistema, la codificación del tiempo con 32 bits está tan arraigada, que actualizarlo a 64 requiere de una gran inversión. Por ejemplo, se codifica el tiempo con 32 bits en muchos sistemas de ficheros (UNIX principalmente), en los campos de fecha de las bases de datos, en dispositivos bancarios, médicos y militares.

Cualquier cambio en el formato del tiempo provocaría la incompatibilidad con toda la información y los binarios previamente codificados con 32 bits.

La primera consecuencia de esta limitación, es que tendréis que cambiar de móvil antes de 23 años. La segunda, es que todos los programas que usen este protocolo de medida del tiempo tendrán que migrar si o si a un sistema equivalente de conteo del tiempo de 64 bits. Todavía no hay un criterio común sobre cual es la solución óptima, pero seguramente pasará por la coexistencia de los dos formatos, de 32 y 64 bits, y el paulatino abandono del antiguo para adoptar el nuevo. Sobre la adaptación de los datos que tienen embebido el formato de 32 bits, lo que ahora puede parecer una tarea faraónica, en 10 años parecerá un juego de niños. El primer disco duro con el que trabajé tenía 30 MBs. Pensaba que el tamaño de mi disco era absurdo, y que nunca nadie necesitaría tanto almacenamiento. Hoy lo habría llenado con 4 fotos. Dentro de 23 años es muy difícil estimar que capacidades tendrán nuestros ordenadores, pero para hacerse una idea, hace 23, en 1991, un PC medio como el que podemos tener en casa hoy, tenía un procesador intel 486 a 33 MHz (por supuesto, de un core), un disco duro de 500 MB y un modem a 2400 baudios. En 2038, este efecto será una anécdota.

  • Mi primer ordenador:
    Macintosh SE
    Procesador Motorola 68000 a 7,8 MHz
    Sin disco duro
    Pantalla monocromo

  • na PC II, no recuerdo las características pero más o menos como las de Tobaga.

  • @ Doc Halliday:
    ¡Vaya lujo!…, pero cuando lo compré, a mi me regalaron un juego de Ping-Pong. :-D

  • Mi primera PC de verdad, una IBM XT con 512 kb de ram, monitor de fósforo ambar, HD de 40 Mb, Floppy disk 5 1/4. Llegó a mis manos usada. Wordstar, Lotus (!)

  • No va a faltar el despistado amante de lo retro que, llegado el día, crea haber viajado en el tiempo :-D

  • Nicolás dijo:

    No va a faltar el despistado amante de lo retro que, llegado el día, crea haber viajado en el tiempo

    :-D Luego de una noche de juerga, despertarse y ver esto …

  • Eso no creo que preocupe a los webmaster del foro…. :-D

  • @ CarlosR:

    Con uno como ese hice mis prácticas de cobol. Me parece que somos unos cuantos los que pasamos de los 40 por aqui :-D

  • @ Tobaga:
    @ CarlosR:

    ¡Increíble..! Ambos ordenadores los he utilizado en el trabajo. :-D

    L.M. yo las prácticas las hice con el primer ordenador Olivetti. ¡De las piramides..!

  • @ Nicolás:

    Tengo pendiente escribir sobre eso. ¿Conoces a John Titor? :)

  • Bueno.., yo es que he programado hardware con tarjetas perforadas.. :duele:

  • lamentira dijo:

    @ CarlosR:
    Con uno como ese hice mis prácticas de cobol. Me parece que somos unos cuantos los que pasamos de los 40 por aqui

    50% más. No sé si reirme o llorar :mareo: En realidad cuando la compré era algo obsoleta. Ya habían salido las clones turbo pero esta era una marca :-D

    @ Lampuzo:

    Que tiempos aquellos. Cinco horas para bajar un programita de 200 Kb.

  • @ Lampuzo:
    Yo ahi ya no llego. Lo más que he hecho con una tarjeta perforada es usarla como marcador de libros.

  • Lampuzo dijo:

    Bueno.., yo es que he programado hardware con tarjetas p

    Yo aprendí perfoverificación con IBM 360. ¿Me servirá de algo ahora? :-D

  • CarlosR dijo:

    50% más. No sé si reirme o llorar :mareo:

    Reir. Que te quiten lo bailao.

    . Cinco horas para bajar un programita de 200 Kb.

    ¿Hay alguien por aqui que usase las BBS?

  • lamentira dijo:

    ¿Hay alguien por aqui que usase las BBS?

    Yo… con Commodore 64.

  • CarlosR dijo:

    Yo aprendí perfoverificación con IBM 360.

    Lamentablemente no. Eso está ya obsoleto.

  • CarlosR dijo:

    Lampuzo dijo:
    Bueno.., yo es que he programado hardware con tarjetas p
    Yo aprendí perfoverificación con IBM 360. ¿Me servirá de algo ahora?

    No se.., pero si quiere practicar creo que tengo todavía en el trastero, un recuerdo por si toman precio como los discos de vinilo, varias pruebas en ensamblador para IBM . :-D

  • lamentira dijo:

    CarlosR dijo:
    Yo aprendí perfoverificación con IBM 360.
    Lamentablemente yo. Eso está ya obsoleto.

    :bueno: Tenía 18 años. Trabajé 1 año en eso. Te quedaban los dedos duros.

  • Lampuzo dijo:

    No se.., pero si quiere practicar creo que tengo todavía en el trastero, un recuerdo por si toman precio como los discos de vinilo, varias pruebas en ensamblador de IBM 360. :-D

    Gracias, pero no me alcanza mi casa para poner la 360 :-D

  • @ Lampuzo:

    ¿Esos floppys eran de 8″ no? Lo bien que se abanicaba uno con ellos.

  • 10 INPUT «¿Qué hora es?»;fechayhora$
    20 PRINT «Pues va a ser,»;fechayhora$
    30 IF fechayhora=19/01/2038/3:14:07 THEM fechayhora=19/01/2038/3:14:09
    40 END IF

    Por los pelos, pero asunto arreglado… :droga:

  • @ CarlosR:

    Yo eso no lo viví. Un compañero me contó una anecdota que le pasó. Después de perforar un programa, llevaba todas las tarjetas ordenadas en una caja… y tropezó.
    Para los que no sepan de lo que estoy hablando, imaginad un programa cuyas líneas de código por accidente se desordenan completamente. :ohno:

  • lamentira dijo:

    @ CarlosR:
    Yo eso no lo viví. Un compañero me contó una anecdota que le pasó. Después de perforar un programa, llevaba todas las tarjetas ordenadas en una caja… y tropezó.
    Para los que no sepan de lo que estoy hablando, imaginad un programa cuyas líneas de código por accidente se desordenan completamente.

    Las tarjetas tenían un número de orden perforado en binario. Pero ordenarlas igual era un lío.

  • Tru dijo:

    10 INPUT “¿Qué hora es?”;fechayhora$
    20 PRINT “Pues va a ser,”;fechayhora$
    30 IF fechayhora=19/01/2038/3:14:07 THEM fechayhora=19/01/2038/3:14:09
    40 END IF
    Por los pelos, pero asunto arreglado…

    :-D err en línea 30 corresponde THEN



\Incluya

Puedes seguir las respuestas a esta entrada por RSS 2.0 feed.