Los ordenadores no dejarán de funcionar el 19 de enero de 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.
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.
Tobaga
22/12/14 20:27
Mi primer ordenador:
Macintosh SE
Procesador Motorola 68000 a 7,8 MHz
Sin disco duro
Pantalla monocromo
Claudio
22/12/14 20:36
na PC II, no recuerdo las características pero más o menos como las de Tobaga.
Tobaga
22/12/14 21:26
@ Doc Halliday:
¡Vaya lujo!…, pero cuando lo compré, a mi me regalaron un juego de Ping-Pong.
CarlosR
22/12/14 21:40
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 (!)
Nicolás
22/12/14 22:12
No va a faltar el despistado amante de lo retro que, llegado el día, crea haber viajado en el tiempo
CarlosR
22/12/14 22:24
Nicolás dijo:
Luego de una noche de juerga, despertarse y ver esto …
carajillo
22/12/14 22:28
Eso no creo que preocupe a los webmaster del foro….
lamentira
22/12/14 22:31
@ 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
Lampuzo
22/12/14 22:32
@ Tobaga:
@ CarlosR:
¡Increíble..! Ambos ordenadores los he utilizado en el trabajo.
L.M. yo las prácticas las hice con el primer ordenador Olivetti. ¡De las piramides..!
lamentira
22/12/14 22:34
@ Nicolás:
Tengo pendiente escribir sobre eso. ¿Conoces a John Titor?
Lampuzo
22/12/14 22:38
Bueno.., yo es que he programado hardware con tarjetas perforadas..
CarlosR
22/12/14 22:40
lamentira dijo:
50% más. No sé si reirme o llorar En realidad cuando la compré era algo obsoleta. Ya habían salido las clones turbo pero esta era una marca
@ Lampuzo:
Que tiempos aquellos. Cinco horas para bajar un programita de 200 Kb.
lamentira
22/12/14 22:42
@ Lampuzo:
Yo ahi ya no llego. Lo más que he hecho con una tarjeta perforada es usarla como marcador de libros.
CarlosR
22/12/14 22:44
Lampuzo dijo:
Yo aprendí perfoverificación con IBM 360. ¿Me servirá de algo ahora?
lamentira
22/12/14 22:45
CarlosR dijo:
Reir. Que te quiten lo bailao.
¿Hay alguien por aqui que usase las BBS?
CarlosR
22/12/14 22:46
lamentira dijo:
Yo… con Commodore 64.
lamentira
22/12/14 22:46
CarlosR dijo:
Lamentablemente no. Eso está ya obsoleto.
Lampuzo
22/12/14 22:49
CarlosR 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 para IBM .
CarlosR
22/12/14 22:50
lamentira dijo:
Tenía 18 años. Trabajé 1 año en eso. Te quedaban los dedos duros.
CarlosR
22/12/14 22:53
Lampuzo dijo:
Gracias, pero no me alcanza mi casa para poner la 360
lamentira
22/12/14 22:53
@ Lampuzo:
¿Esos floppys eran de 8″ no? Lo bien que se abanicaba uno con ellos.
Tru
22/12/14 22:55
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…
lamentira
22/12/14 22:56
@ 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.
CarlosR
22/12/14 22:59
lamentira dijo:
Las tarjetas tenían un número de orden perforado en binario. Pero ordenarlas igual era un lío.
CarlosR
22/12/14 23:01
Tru dijo:
err en línea 30 corresponde THEN