o nogome está em fase de re-estruturação.
Em muitas linguagens de programação o UTC (coordinate universal time), é utilizado como norma para tempo. Sistemas que utilizam o UTC gravam o número de segundos passados desde 1 de Janeiro de 1970 00:00:00. [Selo temporal Unix.] Este selo temporal é gravado num formato de 4 bytes (32 bits). A maioria das runtime libraries em C/C++ gravam este valor como um número inteiro. Esta convenção está na raiz do problema.
Os programadores de COBOL dos anos 50 deram-nos o bug Y2K, [além de descobrirem novas utilizações para psicotrópicos], os programadores em C dos anos 70, [ao mesmo tempo que sintetizavam os ditos psicotrópicos], criavam o bug do ano 2038. O problema vai surgir [ou não] exactamente numa pacata terça-feira, 19 de Janeiro de 2038. Às 03:14:07 da matina o tempo irá tornar-se um valor negativo. [Tenho que admitir que tudo isto me parece tremendamente irónico]. Exactamente 2147483647 segundos volvidos depois do selo temporal Unix ser estabelecido os relógios digitais revoltar-se-ão. [Exactamente como? Ainda não sei, mas imagino pessoas a andar para trás...] Se o número não parece especial experimentem copiar e colar o seguinte código na barra de IP do vosso browser e pressionarem enter:
javascript:alert((2147483647).toString(2));
Este valor é 231-1, muito simplesmente o maior número inteiro que pode ser representado quando 32 bits (4 bytes) estão a ser utilizados. Um bit é utilizado para o sinal positivo ou negativo do número os outros 31 bits são utilizados para gravarem o número. O que vai acontecer um segundo para lá da data acima referida? Em 2038.com, está disponível o código de uma demo que produz o seguinte resultado:
2147483647, Tue Jan 19 03:14:07 2038
-2147483648, Fri Dec 13 20:45:52 1901
Quando um número inteiro com sinal atinge o seu valor máximo e é incrementado, cai para o número negativo possível mais baixo. A razão para isso está aqui.
Assim a solução seria recompilar os programas com novas bibliotecas que utilizassem valores de 8 bytes(64 bits). Isto resolveria o problema para cerca de 300 biliões de anos (20 vezes a idade estimada do universo). Outra hipótese, será esperar que os computadores quantum estejam à venda algures na terceira década deste século.
Sistemas baseados na física clássica (série de bits, e circuitos baseados na lógica Booleana) irão eventualmente dar lugar a processadores quantum, onde os sistemas modelados são baseados na mecânica quântica (qubits).
Aconselho as seguintes leituras:
http://www.cs.caltech.edu/~westside/quantum-intro.html
http://www.qubit.org
