2.147.483.647 segundos: El problema del año 2038

Ciencia en general, tecnología, informática, medicina...
Responder
Avatar de Usuario
Miguel O
Funcionario
Mensajes: 7570
Registrado: 26 Sep 2010 21:55

2.147.483.647 segundos: El problema del año 2038

Mensaje por Miguel O »

Supongo que todos, o casi todos recordamos lo que pasó en el año 2000. El efecto 2000 lo llamaron. Para aquellos que no lo recuerden o fuesen demasiado pequeños para enterarse, fue un problema respecto a cómo los ordenadores almacenaban fechas. Bueno, mas que los ordenadores fue a causa de una "mala praxis" de los programadores. En vez de almacenar los años como por ejemplo 1988, lo almacenaban como 88. Esto se tradujo en que cuando se llegara al año 2000 muchos programas almacenarían la fecha como 00 y la interpretarían a posteriori como 1900. Fue un problema "facil" de solventar y de hecho no tuvo apenas consecuencias ya que era un problema muy centrado en programas informáticos concretos y no en la base sobre la que se funcionaba de manera general.

Pues bien, hoy programando me he encontrado con una limitación que no había tenido en cuenta, y cuando trataba con un numero bastante alto se me reducía a 2.147.483.647. Sabia que era una limitación del tipo de número con el que estaba trabajando, pero ya me he puesto a investigar sobre los límites de los tipos de números de los códigos con los que estoy trabajando.

Ese número es el numero entero con signo(positivo y negativo) más alto que se puede expresar directamente en sistemas de 32 bits, o sea 31 unos seguidos( 1111111111111111111111111111111). El bit restante se usa para decir si en positivo o negativo. Y aquí llega el problema.

Hay un sistema tremendamente extendido e incrustado por todos lados que es el sistema de medicion de tiempo basado en POSIX. Es un sistema que lo que hace es definir una fecha diciendo cuantos segundos han pasado desde el 1 de Enero de 1970 a las 00:00 hasta la fecha que se quiera definir. Esa manera de especificar un momento, se utiliza en todos lados. Es el estandar mucha de la programación que nos rodea y más importante aún, es el estandar en el lenguage de programación C, que es la base de la práctica totalidad de los lenguajes de programación que se usan hoy y se llevan usando desde hace décadas con lo que resulta incalculable las cosas que puede llegar a ser afectadas. También es la manera estandar de medir el tiempo en linux y unix. Esto nos hace que sea imposible cambiar el problema de un programa concreto sin más ya que es un asunto que viene de una manera mucho más interna en los sistemas informaticos y sistemas operativos y se escapa al poder de acceso de la práctica totalidad de los programadores.

Es cierto que cuando el sistema en vez de ser de 32bits es de 64bits, muchas cosas se solventan y la fecha límite que se puede alcanzar se dispara, pero el año 2038 está a la vuelta de la esquina y para entonces habrá aún miles de millones de sistemas informaticos que seguirán funcionando con sistemas operativos de 32 bits, librerias de programación pensadas en exclusiva para 32 bits y hardware con procesadores de 32 bits.

La nochevieja del 31 de diciembre de 2037 va a ser entretenida.

Por si quereis saber más sobre lo que hablo aquí os paso unos enlaces:

Problema del año 2000

Número 2147483647, el octavo Número primo de Mersenne

Tiempo UNIX

Problema del año 2038
Trapos y tontos. Herramienta de control solo igualable a las sectas...
xmigoll
Funcionario
Mensajes: 6833
Registrado: 18 Ene 2014 11:57

2.147.483.647 segundos: El problema del año 2038

Mensaje por xmigoll »

Particularmente no voy a entrar a discutir aspectos técnicos, los cuáles me superan, pero si me gustaría plantear un discrepancia con el artículo y que no es más que observar el hecho que en el año 2038, veinte años vista más o menos, no creo que existan dispositivos bajo la arquitectura de 32 bits organizando nuestros aspectos principales desde las administraciones u otros organismos públicos que puedan llegar a afectarnos.
A título Privado puede ser que exista algún que otro usuario, serán excepciones contadas con los dedos de una mano, que siga usando este tipo de sistemas dejando de lado, según mi parecer, a aquellos que por cuestiones de coleccionismo lo usen. Más o menos cómo sucede con las consolas antiguas actualmente. Que parece se han revalorizado si tienrs la suerte de tener una en cuasi perfecto estado.
Ya me gustaría, estaría encantado, que mi actual dispositivo android de 32 bits, me durase hasta, ya no diré el 2038, el año 2p25. Cosa que creo imposible. Y más qje nada porque el software va dejando obsoleto el hardware. Aunque según mi opinión eso es una tomadura de pelo que esgrimen las compañías para forzar el cambio.

Lo que sí he podido observar es que en algunos relojes mécanicos y radio controlados, que suponiblemente son de "calendario perpetuo" en el año 2040 acaban su ciclo y comienzan desde el año 1900. Eso sí que es una gran putada y más valiendo lo que valen.
Un saludo.
Avatar de Usuario
Enxebre
Miembro del Politburó
Mensajes: 13914
Registrado: 01 Sep 2010 23:42

Re: 2.147.483.647 segundos: El problema del año 2038

Mensaje por Enxebre »

Mi pórtatil ya tiene unos añitos, no le rula el W10 y es 64 bits :hombros
Homo homini lupus
xmigoll
Funcionario
Mensajes: 6833
Registrado: 18 Ene 2014 11:57

Re: 2.147.483.647 segundos: El problema del año 2038

Mensaje por xmigoll »

Ya pero también dependerá de la cantidad de ram que tenga instalada, el disco duro o el tipo de procesador aunque sea de 64 bits.

De todas maneras esto en los pc's es algo que está empezando a pasar en estos momentos de forma más pronunciada que antes. Sobre todo en la ram. Han pasado de venderse equipos con 4 gb de ram, como lo más de lo más, a equipos con 16gb ya casi de configuración predeterminada. Con la problemática añadida de que si quieres manejar el nuevo Photoshop con 4 gb de ram, pues vas a ver que ciertas características se van a capar. Y si quieres ampliar la ram de tú pc, te puedes encontrar con la sorpresa, en la mayoria de los casos ordenadores menores a los 600 euros, de que no permiten la expansión de la memoria ram.

Y en Android, por lo menos en Samsung, tres cuartos de lo.mismo. Tengo un Note3. Una de las razones para dejarlo de actualizar fue el hardware no iba a permitir una correcta experiencia del usuario ante los nuevos SO. Pues caca de la vaca. Actualmente tengo una rom cocinada instalada 7.0 Nougat y va como un tiro. Así que no nos cuenten historias que ya me las sé todas.

Que un SO operativo sea de 64 bits no quiere decir que te vaya a dejar hacer todo lo que tú quieras, supongo que eso lo sepa; eso dependerá del hardware que le acompañe. Pero por lo menos lo que sí asegura es que usted no vaya a poder solucionar o no le afecte el problema que se indica en la noticia.
Un saludo
Avatar de Usuario
Regshoe
Autónomo
Mensajes: 11067
Registrado: 19 Oct 2015 10:45

Re: 2.147.483.647 segundos: El problema del año 2038

Mensaje por Regshoe »

Estas cosas tienen su lado bueno.

En Donosti había un sitio de alquiler de juegos cuyo programa para gestionar el tiempo que lo habías tenido alquilado reiniciaba el contador a los 90 días.

Jajojajotota.
Imagen
+++++++++++++
Avatar de Usuario
Enxebre
Miembro del Politburó
Mensajes: 13914
Registrado: 01 Sep 2010 23:42

Re: 2.147.483.647 segundos: El problema del año 2038

Mensaje por Enxebre »

Bueno, más bien quería señalar que los 64bits no eran raros antes (es decir no eran maquinones a la última) y que dentro de unos añitos supongo que serán habituales

Estos "problemas" son cíclicos, el año 2000, lo de las IP's de 4 octetos...si me dices una TV pues igual si jode, pero este mundillo asusta por lo rápido que las cosas se quedan obsoletas, aunque uno de Intel ya me contó que eso de duplicar los transitores cada 2 años se va a acabar, así que los procesadores se van a estancar finalmente y al fin uno podrá tener un ordenador durante muchos años sin preocuparse de que tal o cual programa no rule
Homo homini lupus
jordi
Funcionario
Mensajes: 7913
Registrado: 26 May 2011 21:16

Re: 2.147.483.647 segundos: El problema del año 2038

Mensaje por jordi »

No creo que va a ser un (gran) problema. Los sistemas informáticos saben calcular sin problemas más lejos en el tiempo que 2038 y también con números mayores que 2.147.483.647. También los sistemas "32 bits". Supongo que este problema solo afectará a ciertas aplicaciones mal programadas y eso en teoría porque es muy improbable que en el año 2038 seguiremos usando las mismas aplicaciones de hoy.
If you are neutral in situations of injustice you have chosen the side of the oppressor
Desmond Tutu
Avatar de Usuario
Enxebre
Miembro del Politburó
Mensajes: 13914
Registrado: 01 Sep 2010 23:42

Re: 2.147.483.647 segundos: El problema del año 2038

Mensaje por Enxebre »

A ver, sin ser mucho menos un experto y estaré encantado de que MiguelO me corrija o matice...

Bajo mi opinión y intuición es un problema de arquitectura de hardware hoy...Es el reloj interno del sistema que lleva pila para que cuando apagues el ordenador no tengas que ponerle la fecha de nuevo y el SO sólo puede leer cierta cantidad de datos de ahí

Los primeros ordenadores eran 8-bits (Spectrum, Amstrad...), mi primer ordenador fue un Amstrad disco (innovación) de 128k (de RAM) y no veas para lo que daba, con el Amiga y el PC (que es un nombre genérico) llegan los 16-bits, hoy pues o hay 32-bits o 64-bits, el asunto es que si no tienes 4 GB de RAM tener 64-bits es un derroche de recursos ya que esa es la limitación de los 32-bits, pero vamos de nuevo a la carrera tecnológica de procesadores y demás que es un crecimiento de progresión geométrica y ni siquiera aumentan los costes...el peor ordenador dentro de 20 años seguro que es mejor que el mejor ordenador hoy

Para móviles y demás supongo que habrá que buscar otras soluciones...pero tampoco sé qué limitaciones supondrá este problema
Homo homini lupus
jordi
Funcionario
Mensajes: 7913
Registrado: 26 May 2011 21:16

Re: 2.147.483.647 segundos: El problema del año 2038

Mensaje por jordi »

No creo que los ordenadores 8 bits se limitan a un tiempo máximo de 255 segundos, los de 16 bits a uno de 65535 segundos ni los de 32 bits a un tiempo máximo de 2.147.483.647 segundos.
If you are neutral in situations of injustice you have chosen the side of the oppressor
Desmond Tutu
Avatar de Usuario
Edison
Alto ejecutivo
Mensajes: 13519
Registrado: 04 Ene 2014 16:23

Re: 2.147.483.647 segundos: El problema del año 2038

Mensaje por Edison »

Claro que no. Pues no habré programado temporizadores de segundos a horas con el MC68705 de 8 bits. Y si no eran días, meses o años, es porque no lo necesitaba. Lo que estaba diseñando se reiniciaba cada dia.

Imagen

Otra cosa es que si la palabra es de 16, 32 o 64 bits y trabajas a nivel de lenguaje máquina o ensamblador, tendrás tendencia a usar unidades de este tamaño o múltiplos de este tamaño. Pero si programas en alto nivel y no tienes idea de lo que hace la CPU por dentro, te da igual.

En la época del CP/M, cuando lo normal era trabajar con RAM de muy pocos kbytes, si que había que ahorrar al máximo. El problema es que muchos programas no son más que unión de subrutinas de programas del año de Maricastaña.
Avatar de Usuario
Miguel O
Funcionario
Mensajes: 7570
Registrado: 26 Sep 2010 21:55

Re: 2.147.483.647 segundos: El problema del año 2038

Mensaje por Miguel O »

El problema es efectivamente con la arquitectura del hrdware, pero tambien con el software. La ram no es el problema. Para hacer un simil mas entendible es como si tuvieses que expresar el año 10.000 despues de cristo pero solo dispusieras de 4 cifras para hacerlo. Es imposible ya que con 4 cifras solo podrias expresar el año 9.999 despues de cristo. Solo puedes expresar el año 10.000 despues de cristo con 5 cifras.

Pues bien, con los sistemas de 32 bits y el 2038 es como si solo pudiese expresar el año con 4 cifras y quisieras expresar el año 10.000 .Cuando digo sistema de 32 bits me refiero al hardware y al software.

Imagina tener un matasellos y una hoja. Si la hoja es demasiado pequeña no cabrá el matasellos. Podemos tener un matasellos de esos qie les pones la fecha que escriba 5 cifras, pero si no cabe en la hoja no podremos escribir la fecha 10.000 dc. Lo mismo sucede si tenemos una hoja enorme pero disponemos de un matasellos que solo tiene 4 cifras.

Ahora mismo estamos haciendo hojas enormes (procesadores de 64bit) pero hay por todos lados matasellos de 4 cifras (software de 32 bit) hay matasellos de 4 cifras incluso en sitios escondidos e inaccesibles.

Cuando se programa uno se ba basando inevitablemente en codigos basadoa en codigos que estan basados en codigos etc... entre todo eso hay infinidad de matasellos de 4 cifras a los que no podemos acceder la practica totalidad de programadores.
Trapos y tontos. Herramienta de control solo igualable a las sectas...
Avatar de Usuario
Miguel O
Funcionario
Mensajes: 7570
Registrado: 26 Sep 2010 21:55

Re: 2.147.483.647 segundos: El problema del año 2038

Mensaje por Miguel O »

Eso ultimo es el problema. A saber que libreria de las miles de herencias que hay hasta llegar a la programacion de alto nivel es la que puede petar.
Trapos y tontos. Herramienta de control solo igualable a las sectas...
Avatar de Usuario
Miguel O
Funcionario
Mensajes: 7570
Registrado: 26 Sep 2010 21:55

Re: 2.147.483.647 segundos: El problema del año 2038

Mensaje por Miguel O »

De cosas asi estamos mas rodeados de lo que imaginamos.
Trapos y tontos. Herramienta de control solo igualable a las sectas...
xmigoll
Funcionario
Mensajes: 6833
Registrado: 18 Ene 2014 11:57

Re: 2.147.483.647 segundos: El problema del año 2038

Mensaje por xmigoll »

Sí. Y este tipo de cosas me enervan, de verdad.
Estoy esperando contestación a un correo que he mandado a citizen, hace ya un par de semanas, respecto a este particular. A ver que me contestan.
Un saludo.
Capitán Tranchete
Miembro del Politburó
Mensajes: 1357
Registrado: 10 Sep 2010 18:20
Ubicación: Tranchetelandia

Re: 2.147.483.647 segundos: El problema del año 2038

Mensaje por Capitán Tranchete »

Yo recuerdo haber manejado fechas en POSIX bastante mas alejadas de 1970 que 2037 (por ejemplo, 1840) en equipos de 32 bits. Si habia algun cheating dentro en el manejo de formatos interno pues ni idea, pero si que se hacia... y se hace
Responder