No final dos anos 90, o mundo estava preocupado com os sistemas de computador que estavam prestes a falhar. Os especialistas intimidaram que, no início do ano 2000, o software não seria capaz de processar a data corretamente e o mundo mergulharia no caos: os sistemas de pagamento seriam encerrados, as bolsas parariam, qualquer eletrônico iria falhar. Na verdade, o novo século chegou sem problemas, as experiências foram em vão.
Foi assim que a consciência pública percebeu o erro de 2000. Por exemplo, um político britânico do Brexit disse que os temores sobre o impacto econômico do papel do Brexit eram semelhantes ao pânico do bug do ano 2000.
O Millennium Mistake foi esquecido quase imediatamente após 2000. Mesmo publicações não essenciais discutiram o bug do milênio por meses, mas já nos primeiros dias do novo ano, a atenção ao tópico se desvaneceu. A hipnotizante mudança no número de 1999 a 2000 não criou os desastres que tanto assustaram. Os céticos anunciaram que o dinheiro foi desperdiçado na correção do bug.
O que acontece nos bastidores é mais importante do que as opiniões dos não especialistas. O grau de pânico público realmente ultrapassou o nível que a situação merecia. O perigo real de falhas de computador em todo o mundo em 1o de janeiro de 2000 existia e exigia a intervenção de desenvolvedores de software. Departamentos inteiros de programadores vêm consertando o problema do Y2K há anos.
Fonte de problemas
Na vida cotidiana, não escrevemos os dois primeiros personagens do ano - eles são quase sempre os mesmos. Uma lógica semelhante ditou a regra de economizar espaço nas unidades dos primeiros computadores: se o século não for importante, pode ser descartado. Em vez de oito dígitos, a data é escrita em seis. A economia parece pequena, mas se houver milhões de datas, a conta vai para megabytes de memória, que os primeiros computadores tinham poucos.
O livro de 1958 "Cartões perfurados, suas aplicações para a ciência e a indústria" trata principalmente de leitores de cartões perfurados eletromecânicos. Fazendo uma bibliografia em um cartão perfurado IBM padrão. As colunas 15 e 16 mostram os dois últimos dígitos do ano de publicação. Em outra passagem, o livro motivaseleção de um formato de ano curto, de modo que a maioria das entradas se destinem ao século XX.
A pessoa nasceu em 1º de janeiro de XX20 e faleceu em 2 de janeiro de XX20. Ele viveu uma vida gratificante ou morreu repentinamente após o parto? É impossível estabelecer isso sem contexto, então perguntaremos novamente se um fígado longo incomum ou um bebê faleceu. Da mesma forma, sem especificar o século, o computador não consegue distinguir 2000 de 1900. Esta é a essência do erro Y2K.
Uma ilustração simples: a data de vencimento em um cartão de banco é indicada no formato MM / AA, e alguns dos algoritmos mais simples de sistemas de pagamento verificaram o vencimento por comparação aritmética de números YYMM. Um contra-exemplo para tal algoritmo é qualquer cartão válido após 2000. Em 1999, um algoritmo ingênuo invalidará um cartão com uma data de validade de 12/01 até dezembro de 2001.
Parece estranho que o mau hábito de encurtar o século tenha sobrevivido até o final dos anos noventa. Costuma-se dizer que a fonte dos problemas é o legado terrível dos primeiros computadores e linguagens de programação, que por alguma razão estúpida funcionaram sem mudanças por quase 40 anos. Isso é apenas parcialmente verdade: o alvorecer da era do computador estabeleceu pela primeira vez as tradições de desenvolvimento que ainda existem hoje. Por exemplo, o ambiente de desenvolvimento moderno é mais amplo do que 80 colunas de cartões perfurados, mas o limite de 80 caracteres por linha de código foi removido do Linux há apenas três meses.
Mesmo no final dos anos 70, as características dos computadores nas empresas continuavam modestas. Ao mesmo tempo, eles já eram necessários para aplicativos do mundo real em automação. Um mainframe com um processador de 0,9 milhão de operações por segundo, 1,5 MiB de RAM e 2 GiB de armazenamento em disco, de alguma forma, teve que espremer 20.000 transações por hora de 300-500 usuários simultâneos. E essas máquinas de computação fracas custam centenas de milhares, milhões de dólares. Somente em 1990, um gigabyte de dados em um disco rígido caiu para menos de US $ 10 mil.
E, no entanto, nem todas as empresas podem pagar pelas famílias S / 360 , S / 370 ou S / 390 . Para clientes menores, a IBM desenvolveu computadores S / 3 , S / 32 ,S / 34 , S / 36 , S / 38 , AS / 400 com características muito mais modestas. A capacidade máxima do disco rígido de um computador comercial IBM System / 32 é de 13 megabytes, nos quais você precisa inserir não apenas o código, mas também os dados.
Computador de usuário único IBM System / 32, 1975. A máquina com tela de 6 linhas foi projetada para tarefas de nível contábil. Foto: Museu da História da Computação .
Nessas circunstâncias, o aumento exagerado do nível XML ou JSON simplesmente não pode aparecer. Que tipo de formatos de texto existem - a conta foi para cada byte.
Da mesma forma, a data foi escrita em Cobol, uma das linguagens de programação de aplicativos de negócios mais antigas. Aqui, YY são dois dígitos do ano, MM é o número do mês, DD é o dia.
01 EMP-HIRE-DATE.
03 EMP-HIRE-DATE-YY PIC 99.
03 EMP-HIRE-DATE-MM PIC 99.
03 EMP-HIRE-DATE-DD PIC 99.
Aqui, a data é representada como 3 bytes, 4 bits para cada dígito. Cobol é tão antigo que os números pares nele são decimais (a menos que indicado de outra forma, O USO É COMPUTACIONAL ).
Não existe um campo de data padronizado no Cobol, mas as implementações escritas pelo próprio ainda eram guiadas por algo. O código
ACCEPT todays-date FROM DATEretorna a data atual do sistema como um número AAMMDD de 6 dígitos. Se você comparar com o número da apresentação acima, será fácil entender se esse dia chegou ou não. A função CENTURY-DATE, que retornou a data como um AAAAMMDD de 8 dígitos com o século, aparecerá em padrões de linguagem posteriores .
É conveniente ordenar pela data do formato AAMMDD: a comparação do que aconteceu antes é reduzida a uma operação aritmética.
Com o advento do novo século, a classificação será interrompida: o ano 00 deve ser posterior a 99, e não vice-versa. O número 000101 será menor que 991231, ou seja, em 1º de janeiro de 2000, o programa dirá que 31 de dezembro de 1999 ainda não chegou. Uma tentativa de calcular o período entre essas datas retornará quase 100 anos, não 1 dia.
Mesmo ao atualizar sistemas mais antigos, o formato da data não foi alterado para manter a compatibilidade com os bancos de dados existentes e outros componentes. O programador não achava que seu software seria usado em 20-30 anos. Para ele, o "bug do ano 2000" soa ainda mais distante do que para nós "estouro do tempo Unix de 32 bits". Este último acontecerá em 2038 e foi corrigido no Linux para sistemas de 32 bits apenas a partir do kernel 5.6. Mas, por algum motivo, não temos pressa em atualizar roteadores antigos.
Parte da "culpa" reside na proliferação do código decimal binário ( BCD ), no qual cada dígito do número decimal será escrito em 4 bits. O código decimal binário se deve à popularidade do setor bancário pela rapidez e previsibilidade no arredondamento dos números - é impossível em uma situação em que a
0.1 + 0.2resposta é 0,30000000000000004 . Contadores e financistas ficam um pouco nervosos quando aparecem artefatos de arredondamento de números de ponto flutuante binários. Portanto, os processadores para aplicativos de negócios suportavam o processamento BCD nativo e havia menos necessidade de traduzir números entre os formulários de notação.
Uma data de 6 dígitos caberá em 3 bytes. Obviamente, é mais seguro converter a data em um único inteiro binário. Mas a conversão exigirá operações matemáticas complexas: são longos ciclos ou tabelas. Isso é mais difícil do que converter BCD em código decimal em tempo linear, às vezes até com uma única instrução de máquina fornecida pelo fabricante do chip. O BCD adiciona apenas 1-2 bytes extras ao registro de data, mas elimina 5-10 instruções de montagem, que são difíceis de entender e fáceis de confundir.
Nos anos 80, os programadores do mundo dos aplicativos corporativos do tamanho de um armário estavam migrando para os computadores pessoais de mesa, mas mantiveram sua mentalidade. Nos primeiros computadores pessoais de 8 e 16 bits, eles foram recebidos pelo conhecido suporte BCD de hardware.
Finalmente, alguns dos problemas relacionados ao calendário. Se 2000 é um ano bissexto (é divisível por 400), 1900 não é. Em 2000 real, é 29 de fevereiro. Se o computador calcular que são 1900 no pátio, depois de 28 de fevereiro, o dia 1º de março chegará imediatamente.
Avisos antecipados
A atenção do público para o erro da virada do século foi atraída pelo programador canadense Peter de Jager. Em 1978, ele, então um funcionário da IBM, percebeu que um computador pode levar dois zeros para 1900. A gerência descartou a reclamação de Peter: por que pensar em um problema que não será relevante nos próximos 22 anos? No ano 2000, o erro será definitivamente corrigido, ele foi informado.
Em 1989, a situação não mudou. Na época, de Jager trabalhava para uma empresa que implantava o Professional Office Systems. Em 1o de janeiro de 1990, o sistema "adoeceu": no anexo, um dígito foi alocado para o ano. Para fins de experiência, Peter, que novamente se lembrou de 2000, mudou a hora em seu computador pessoal por alguns minutos até a meia-noite de 31 de dezembro de 1999. Dez minutos depois, a data mudou para 1984.
Em 1993, de Jager escreveu um artigo de três páginas para a Computerworld que deu início a tudo. A manchete "Doomsday 2000" trouxe Y2K para os holofotes. No início, as descrições coloridas do desastre iminente não foram levadas a sério, mas com a aproximação do ano 2000, de Jager ganhou a reputação de especialista em armagedom digital. Desde então, Peter tem lidado exclusivamente com o problema das datas.
Capa da revista Time, 18 de janeiro de 1999
No entanto, as estranhezas do processamento de dados na indústria foram observadas sem nenhum artigo. Martin Thomas, que liderou a equipe de correção de bugs do Y2K na Deloitte Consulting, descreveu como uma rede de supermercados britânica recebeu uma remessa de produtos enlatados no final dos anos 1980. O sistema contábil adotou a data de vencimento de 01/00 para janeiro de 1900 e exigiu que o ilíquido de 80 anos fosse liquidado.
Em meados de 1997, a Chrysler mudou todas as horas da fábrica de montagem de Sterling Heights para 31 de dezembro de 1999 para um teste, que trouxe muitas surpresas. Era impossível pagar o salário. O sistema de segurança simplesmente foi desligado: ninguém podia entrar ou sair.
No final da década, as empresas têm equipes de engenheiros que apenas analisam e corrigem o bug do Y2K. O problema foi até levado ao nível interestadual: em 1998, na cúpula do G8, todos os participantes concordaram sobre o perigo de um bug. Em 19 de outubro de 1998, o Presidente dos Estados Unidos adota a Lei de Divulgação de Informações e Prontidão do Ano 2000 . Na Rússia, a questão da compatibilidade com o Y2K foi tratada pelo Comitê Estadual de Comunicações e Informatização e por uma comissão governamental especial.
Não sem pânico. A popularidade dos cenários apocalípticos esteve presente na mente americana ao longo dos anos noventa. Jornalistas e escritores começaram a pintar com entusiasmo um quadro do Doomsday digital. Até mesmo grandes e confiáveis agências de notíciasrecomendado para estocar água e comida .
Post-folders do Y2K com elementos de conselhos para uma dona de casa A
literatura do erro de 2000 variou de guias detalhados de sobrevivência a romances de ficção sobre o mundo após uma interrupção global do computador. As obras ficcionais pintaram um futuro monstruoso. Em 1º de janeiro, a precipitação cai do céu na forma de aviões de passageiros, e em cada usina nuclear há um Chernobyl local. Eletrodomésticos explodem, o sistema financeiro global entra em colapso, as redes de energia e os telefones são cortados. Então, a partir desses ingredientes, um cenário é construído para a decomposição depressiva da civilização em uma sociedade semifeudal faminta com um crime organizado violento desenfreado.
O curta
estrelado por Leonard Nimoy explora o popular tema do medo do erro do Y2K. Os manuais do sobrevivente detalham como escapar do declínio da civilização. Eles não disseram quase nada sobre tentar consertar o bug e pouca discussão sobre a teoria por trás do bug 2000. Em vez disso, os livros foram direto para histórias de terror e conselhos para o mundo após o fechamento de bancos e o desemprego crescente. Alguém simplesmente aconselhou a comprar ouro. Outros gastaram páginas listando itens e recursos que precisavam ser estocados com urgência.
No entanto, como lembram os trabalhadores das livrarias, essa literatura não era popular e desapareceu das prateleiras após o início de 2000.
O Y2K Survivor Kits - experimentado por empresários empreendedores - tinha pelo menos algum valor prático. As rações secas reterão seu valor nutricional independentemente do formato dos dados do computador, mesmo que sejam vendidas a um preço inflacionado, tentando navegar na onda da histeria.
2.000 família pronta para o apocalipse do Colorado
Tipos de correções
A adição de dois números resolve o problema por 8.000 anos.
01 EMP-HIRE-DATE.
03 EMP-HIRE-DATE-YR.
05 EMP-HIRE-DATE-CC PIC 99.
05 EMP-HIRE-DATE-YY PIC 99.
03 EMP-HIRE-DATE-MM PIC 99.
03 EMP-HIRE-DATE-DD PIC 99.
Mas a duração do registro em Cobol é limitada. Se você precisar inserir dois bytes no centro, terá que reescrever todo o arquivo do zero em um novo e substituir o original por uma cópia corrigida. O código do aplicativo que processa esse arquivo também precisará ser ajustado. O processo promete longos testes e paralisações. Nem sempre é possível que o banco de dados fique lento assim.
Uma atualização relativamente pequena do código do programa não é tão elegante e adiciona apenas algumas décadas de vida, mas é menos demorada. Mesmo que o ano seja inferior a 50, este já é um novo século XXI.
IF EMP-HIRE-DATE-YY > 50
MOVE 19 TO PRINT-HIRE-DATE-CC
ELSE
MOVE 20 TO PRINT-HIRE-DATE-CC.
Nem todos os dados pressupõem que datas anteriores a 1950 ou após 2050 não sejam possíveis. Em alguns casos, essas "muletas" prolongaram a vida em apenas 20 anos. Descobriu - se em janeiro deste ano: alguém recebeu contas de 1920, algum software não funcionou.
Um recebimento incorreto chegou no início de janeiro de 2020. Em
alguns casos, o Y2K foi corrigido não até 10.000, mas por 9 séculos. Se 3 bytes da data foram armazenados em um número com sinal de 4 bits, um dígito caberá nos meio bytes não usados para assinar o século. Os programas com este patch são afetados pelo ano 2100 ou pelo ano 2900.
Uma data pode ser representada como o número de dias que se passaram desde um ponto no passado. O número de dias é registrado em um número binário de 14 bits. Então você pode imaginar 16 384 anos diferentes. Restrições específicas são definidas pela escolha da época.
Às vezes, o ano nem era corrigido. O formato TLE do Comando de Defesa Aeroespacial da América do Norte descreve objetos na órbita da Terra. Até agora, apenas os 2 últimos caracteres do ano são indicados nele. É curioso que a situação possa ser indiretamente influenciada por empresas de Internet via satélite, que planejam lançar dezenas de milhares de espaçonaves em órbita. O TLE é projetado para um número de objetos de cinco dígitos, portanto, esgotar o conjunto de números exigirá uma revisão de todo o formato dos dados.
Os detalhes dos patches de hardware militar são compreensivelmente mantidos em segredo. Na maioria das vezes, a mídia divulgou relatórios de um teste de prontidão para o Y2K usando simuladores e um ambiente de teste especial. Às vezes, testes de combate completos aconteciam. Em 1º de maio de 1999, a Marinha dos Estados Unidos lançou o míssil de cruzeiro Tomahawk. No dia anterior ao lançamento, o tempo do foguete foi definido para 29 de fevereiro de 2000, a fim de verificar o manuseio do ano bissexto ao mesmo tempo.
Adesivo conciso de prontidão do equipamento em 2000
Mas o retorno em larga escala de programadores veteranos da aposentadoria não aconteceu. Em vez do esperado recrutamento de legiões de kobolistas, as empresas costumavam se limitar a trabalhadores em tempo integral ou contratados terceirizados. Na preparação para 2000, as empresas americanas despejaram bilhões na mão de obra de baixo custo da Infosys, Wipro e TCS. Uma consequência inesperada do Y2K foi a popularização de empresas da Índia. Nos próximos anos, a terceirização indiana se tornará a norma.
Vida após 23:59:59 31 de dezembro de 1999
Apenas 7% dos americanos estavam muito preocupados com o erro do Y2K. Uma pesquisa em dezembro de 1999 mostrou que apenas um em cada cinco planejava estocar dinheiro. Alguém estava com medo de voar no último dia do ano. Peter de Jager diz que voou em 31 de dezembro para mostrar a segurança dos patches.
A manhã de 1 ° de janeiro foi "desagradável" surpresa. Não houve cortes de energia, as transações financeiras ainda estavam ocorrendo regularmente, um bug de computador não ativou ICBMs. A contagem de resíduos começou imediatamente. É difícil nomear o valor exato, embora o próprio de Jager estime os custos mundiais em 300-400 bilhões de dólares. Alguns bancos, disse ele, gastaram até US $ 100 milhões.
A crítica ainda tinha um fundamento. As comissões e especialistas exageraram e prometeram o irrealizável.
O mundo não caiu por causa de microcircuitos incorrigíveis em que o ano é representado por dois personagens. Entre eles estão os chips BIOS de alguns computadores e muitos microcontroladores. Há muitos deles, tudo não pode ser substituído, afirmava a história de terror. Na verdade, os especialistas do Y2K geralmente não tinham experiência em desenvolvimento de hardware - na melhor das hipóteses, eles entendiam de software. Eles não achavam que a tradução e a comparação de datas simplesmente não ocorriam nesses microcircuitos.
Os pôsteres do Y2K da Geek Squad no estilo dos filmes B dos anos 50 foram planejados para serem colocados em pontos de ônibus, mas simplesmente não havia necessidade de marketing extra. Foto: Best Buy .
Outro cenário assustador envolveu o desenvolvimento de uma cascata de falhas que se espalhou de programa para programa e se espalhou para componentes prontos para o Y2K. Na realidade, se um subsistema retorna erroneamente o ano 1900, então o outro, interagindo com ele, irá ultrapassar o ano 1900 ou dar um erro ou marcar o ano incorreto.
É fácil imaginar como as aeronaves prontas para o Y2K e vulneráveis ao bug de 2000, devido a um dia bissexto não registrado em 29 de fevereiro de 2000, recebem permissão de um computador para pousar na mesma pista. Mas em um aplicativo da web, uma entrada incorreta do banco de dados não começará a percorrer o sistema como um vírus.
O leigo não sentiu a preparação para o bug, nem a noite de insônia da virada do século para as equipes de suporte técnico, nem as consequências dos sistemas não corrigidos. Testemunhas oculares e líderes das equipes eliminatórias do Y2K lembram de pequenas falhas, mas nada catastrófico ou mesmo particularmente interessante. Alguns dos envolvidos na correção do bug atribuem o baixo número de relatórios de travamento a empresas que simplesmente não querem alardear suas próprias falhas.
Alguns dos problemas ainda vazaram para a mídia. Aqui estão apenas alguns travamentos do computador. Nenhum deles ameaçou vidas humanas.
- . , . . . .
- - . Y2K, .
- . CyberCash. — . Apple. 700 .
- . , . Golden 1 Credit Union 31 1999 .
- Os fornecedores de software de desktop geralmente só corrigem as versões mais recentes. Por exemplo, o Access versão 2.0 (1994) e anteriores não manipulam corretamente datas após 2000. Este último foi desagradável para usuários do Windows 3.0, nos quais as versões mais recentes do Access tiveram pior desempenho. Por outro lado, esse sistema operacional já estava fora de uso naquela época.
Além de pequenos problemas, a mídia noticiou casos curiosos.
- O primeiro recém-nascido em 2000 na Dinamarca foi registrado com 100 anos.
- Um cliente de uma locadora de vídeo em Nova York devolveu a fita de The General's Daughter no prazo, mas recebeu uma multa de $ 91.250 por um atraso de um século. O bug foi corrigido imediatamente.
- A transferência de 6 milhões de dólares datada de 30 de dezembro de 1899 chegou à conta bancária de um residente na Alemanha. A história silencia sobre quanto tempo ele se manteve milionário.
- O sistema policial, afetado por um bug de 2.000, transformou adolescentes em idosos. Os relatórios de crime relataram assédio sexual de uma mulher de 83 anos por um homem de 80 anos e dois adolescentes desaparecidos com 83 e 84 anos.
Há pelo menos um erro médico sério devido a um bug do ano 2000. Em uma das regiões da Inglaterra, alguns meses após o ano 2000 , observou - se um número excepcionalmente alto de crianças nascidas com síndrome de Down. O programa de avaliação estimou incorretamente a idade de 154 mulheres grávidas e identificou incorretamente o grupo de risco para estudos subsequentes de anmyocentese. No total, as mães com um grupo de baixo risco definido incorretamente tiveram 4 filhos com síndrome de Down. Devido a uma avaliação imprecisa do alto risco, 2 abortos foram realizados por engano.
No novo milênio, o mundo se esqueceu imediatamente do bug do computador de lidar com datas. Apenas os adesivos “Y2K Compliant” lembravam dele, que estavam colados no equipamento pronto para o novo século.
Exteriormente, o erro de 2000 difere pouco de mudar a exibição das casas de câmbio de quatro para cinco caracteres quando o rublo cai. Ajustar a data para quatro dígitos parece uma solução pequena, embora cara, para toda a economia.
Centenas de bilhões de dólares foram gastos para corrigir o erro. Sem as consequências desastrosas óbvias, o esforço de patch do Y2K parecia redundante e desnecessariamente caro. Os especialistas deram desculpas dizendo que o problema existia e foi corrigido. Alguns ficaram felizes com a atenção do público às atualizações e infraestrutura crítica.
Eventos em que os sinais acabaram e continuarão a acontecer no futuro. A mudança de redes IPv4 para IPv6 visa livrar o mundo da escassez de endereços de Internet. Algum dia, mais um dígito será adicionado aos números de telefone. 19 de janeiro de 2038 para sistemas Unix sem patch será 1º de janeiro de 1970 ou, devido ao uso de uma variável assinada, 13 de dezembro de 1901.
Qualquer projeto de informação tem limitações. Mas isso não deve ser temido. Se o sistema vai além de suas suposições inerentes, isso indica apenas sua popularidade não planejada.
Com base em materiais de Stack Exchange , Stack Overflow , Arquivos do Departamento de Defesa dos EUA ( 1 , 2 ), CelesTrak ( 1 , 2 ),Popular Mechanics , blog de Chris Weston , How-To Geek , Mental Floss , BBC , cs.swarthmore.edu , Fast Company , Inc.com , Computerworld , Cnet e Slate .