Tecnologia

Bug do Milênio

O problema:
A maioria das datas, são armazenadas no computador, com dois dígitos. Para esta discussão, o formato MM/DD/AA será utilizado, reconhecendo que muitos formatos diferentes são usados pela industria de computadores no mundo.

A data de nascimento para uma pessoa nascida em 20 de julho de 1935, seria armazenada no computador como: 072035. Esta pessoa estará com 65 anos de idade no ano 2000 e alcançaria o direito de requerer a aposentadoria pelo sistema de securidade social dos Estados Unidos. Entretanto se o programa de computador do sistema de securidade social usa somente 2 dígitos e não é mudado, no ano 2000, o computador terá o ano corrente como “00” e subtrairá o ano de nascimento da pessoa (35) e concluirá que essa pessoa está com -35 (menos trinta e cinco) anos de idade. Naturalmente o seguro social seria negado, porque de acordo com o computador, essa pessoa não nasceu ainda, e não está pronta para a aposentadoria.

Outro exemplo do problema do ano 2000 está em um caso interessante, determinado pelo seu dinheiro. Para manter este exemplo simples e focado no problema do ano 2000, o interesse do cálculo não será complexo e fará uma suposição que os dividendos são pagos a você a cada ano, na data de aniversário e não adicionada no seu saldo.

Se você tem 5.000 dolares numa conta de poupança (usando os termos previamente descritos) a qual recebe uma taxa anual de 3%, você esperaria que no aniversário de 1 ano, você contaria com 150 dólares. Se você coloca seus 5.000 dólares em um banco em 1º de Janeiro de 1999, em 1º de Janeiro de 2000, o banco usando dois dígitos no ano mostraria que você na verdade deve a eles uma quantia substancial de dinheiro. Quando ao calcular quantos anos eles estão com seu dinheiro, o banco pega o ano corrente “00” e subtrai o ano de depósito desta data (99). Neste exemplo, eles estão com seu dinheiro por -99 (menos noventa e nove) anos. Quando o cálculo é feito para você, ele determina que você deve para o banco 14.850 dólares (multiplicando os -99 (menos noventa e nove) anos pelos supostos 150 dólares que você contaria a cada ano). Esta espécie de cálculo conduziria você para uma grande hipoteca, porque o banco deveria a você dinheiro, mas as companhias hipotecárias, tem já recorrido ao problema do ano 2000, apesar que ainda existem provavelmente alguns trabalhos a serem feitos.

Se você tem um cartão de crédito, que vence no ano 2000, alguns sistemas de computador apenas reconhecem ainda os dois últimos digitos do ano. Quando você usa o cartão de crédito em 1997, o sistema automatizado define que o ano corrente é 1997, e que este cartão venceu a 97 anos atrás, no ano “00”. Muitos emissores de cartão de crédito, estão atualmente emitindo cartões de crédito que vencem no ano 99 até que seus sistemas possam ser reprogramados. Por essa razão, se o emissor do cartão de crédito passa a trabalhar com o novo século corretamente, muitos dos programas de validação podem não “rodar”, e a transação ainda ser rejeitada.

A maioria das companhias já estão se livrando do problema, ou estão trabalhando as mudanças para corrigir os problemas de programação que ocorrerão no ano 2000. Existem ainda um número de pessoas debatendo se as mudanças serão em grande quantidade. As pessoas na maioria estão convencidas que este é um problema maior para negócios e governos que são aqueles que tem começado o processo de modificação de seus sistemas para incluir o século no campo de data. Muitas pessoas são postas em debate sobre se o problema do ano 2000 está sendo considerado em demasia por consultores e a mídia. Preferivelmente que estar iniciando seus próprios projetos de conversão, eles estão discutindo quem está certo ou errado sobre a extensão do problema. Alguns sistemas de computador serão relativamente simples para mudar e ser de acordo com o ano 2000. Outros sistemas irão requerer um maciço esforço para trabalhar depois de 31 de dezembro de 1999. A maior parte do tempo de programação não serão gastos escrevendo códigos, mas em seu lugar, serão gastos identificando as áreas de mudança e seus testes para estar certos se os programas rodam corretamente. Muitas companhias e órgãos de governo não sabem onde está o código fonte para alguns de seus programas.

Cada companhia ou organização do governo que confiam nos computadores precisam fazer uma avaliação do problema e o que precisa ser feito. O que pode ser um “estalo” para uma companhia, seria um projeto que não poderia ser terminado no devido tempo para outra companhia.

Companhias e governos por concordar com pessoas que acreditam que o problema está sendo forçado e deixam de lado o início da avaliação das mudanças, estão colocando suas companhias em risco. Apenas depois das avaliações terem sido feitas, algumas companhias estão descobrindo que o problema é muito maior uma vez pensado, depois eles começam a modificar e testar seus programas de computador.

COMO ISSO OCORREU?
O problema do o ano 2000 é um resultado de muitos problemas com a tecnologia que estava disponível nos anos 60, 70 e começo dos anos 80. Muitos problemas foram resolvidos, mas um par de problemas chave foram os cartões de impacto e o lento acesso a disco. O cartão de impacto tinha um número de colunas muito limitado, e desperdiçar espaço armazenando dois “bytes” extras para o século em campos como data de nascimento era “impensável”. Os discos eram também lentos e totalmente dispendiodos. O espaço em disco era medido em valores de kilobytes, raramente megabytes, gigabytes or terabytes. Os custos eram medidos em dezenas de milhares de dólares para este espaço limitado. Uns poucos anos depois, quando o CRT (monitor de vídeo) tornou-se mais comum, dados extras poderiam encaixar na tela de entrada, mas os discos ainda eram muito lentos e limitados. O primeiro mini-computador da Digital que eu programei (no final dos anos 70) tinha dis “floppy drives” os quais tinham um total de 520 Kbytes de espaço, ½ megabytes.

Estes 520K deveriam conter o sistema operacional, o programa aplicativo e os dados da companhia. Esta “maravilhosa tecnologia” custou cerca de 70.000 dólares. Por causa da quantidade limitada de espaço disponível no disco, obviamente alguma coisa tinha que sair, e aqueles dois bytes para o século foram os primeiros dois bytes a sair porta fora. As Companhias comprando computadores de grande porte (mainframes) nesta época estiveram na mesma situação, é claro que eles tinham mais espaço, mas necessitavam de armazenar muito mais dados.

A próxima geração de mini-computadores (que eu trabalhei) veio com o tempo e tinha muito mais espaço em disco.

O custo foi ainda totalmente proibitivo, os discos eram lentos e agora o espaço em disco estava na casa dos 5 megabytes. Naturalmente o sistema operacional pegava um bit a mais do novo disco, (um fenômeno que precede as aplicações para ambiente Windows) e os sistemas normalmente não tinham mais que dois destes discos, os quais somavam cerca de 10 megabytes. Com os sistemas pegando um bit a mais complicava e os usuários querendo armazenar mais dados por esta razão, ninguém estava disposto a desperdiçar aqueles dois bytes em cada gravação de data. Se existissem três datas para cada cliente no arquivo, aí teriam sido usados seis bytes para o século, para cada cliente no arquivo.

Concluindo, se os programadores tivessem colocado o século nas datas,e os primeiros computadores nunca usassem o século na data do sistema, muitos cálculos teriam sido impedidos de usar o século, de qualquer jeito.