http://www.cic.unb.br/~rezende/sd.htm > custo social: bug do milenio

Com quantos dígitos se faz uma canoa?

Publicado no caderno " informática" do Correio Braziliense em 28/09/1999

Prof. Pedro Antonio Dourado de Rezende
Departamento de Ciência da Computação
Universidade de Brasília
20 de Setembro de 1999


Este título, que remete a um ditado popular, parece não ter ficado bem aqui. Não estaria eu querendo perguntar ao leitor com quantos dígitos se faz um registro temporal? Não seriam as canoas feitas de paus, ou melhor, feitas com apenas um pau? O que tem a ver pau com dígito, ou data com canoa? Inventei esta metáfora porque este ditado é muito útil para apontar gentilmente às pessoas coisas que não sabem que não sabem.

Tenho grandes dificuldades em explicar o bug do milênio ao leigo. Sua primeira reação é sempre apontar a solução óbvia, e quase sempre, também sua surpresa com tanta badalação em torno de algo tão simples. Não se trata apenas de mudar o formato do campo da data referente ao ano nos programas de computador? Sim, trata-se apenas disso. Mas ao faze-lo -- e isso escapa ao leigo -- pretende-se que o programa continue a se comportar como dantes. Que continue o mesmo. É aí onde começam realmente os problemas. A técnica para se escrever programas de computador ainda está em evolução. Mesmo quem os escreve não pode predizer completamente seu comportamento se os programas são relativamente complexos. Programas são escritos a partir de especificações de funcionalidade, implementados e testados contra massas de dados empíricos, para só depois serem colocados em produção.

Da mesma forma, canoas e barcos são construídos fora d’água, para serem testados em águas mansas e rasas antes de enfrentarem correntezas e temporais. Quando se começou a usar chapas de aço na fabricação de navios e barcos, alguns bem grandes se partiam no primeiro teste, ao serem submetidos à pressão da flutuação. Programas de computador são artefatos para navegar mares de informações. São como cargueiros de significado para seus usuários. Programas simples, que podem ser feitos por um único programador, são como canoas. Programas complexos, que interagem com muitos outros programas, requerem especificação, implementação e testes mais detalhados e sofisticados do que uma só pessoa seria capaz de dominar. Para serem úteis, os programas, assim como os barcos, precisam de mecanismos de navegação.

Boa parte dos programas complexos usam registros temporais como fulcro da sua lógica interna, responsável por esta navegação. Qualquer barqueiro sabe das dificuldades para se reparar um leme quebrado com o barco n’água, mas no caso dos programas o desafio pode ser ainda maior. Programas com formato inadequado de datas precisam ser adaptados para navegação em novas correntezas e novos ventos.  Isso requer alterações na estrutura interna do registro temporal, e também em toda a lógica do programa que dela se utilize, para que esta lógica possa interpretar corretamente o conteúdo dos registro temporais e preservar o comportamento original do programa. Existem em operação pelo mundo programas com os mais variados graus de dificuldade de acesso, por parte de quem hoje os mantém, à sua lógica interna. Esta dificuldade corresponde ao grau de incerteza com que se pode planejar testes exaustivos às adaptações exigidas.

Quando o momento chegar, haverá por isso programas cuja lógica interna e estruturas de registros temporais foram adaptadas em diversos graus de completeza e corretude, o que levará alguns a se desgovernarem, podendo adernar, submergir ou colidir com outros programas que deles dependem. Devido exatamente a estas incertezas, só durante a tempestade poderemos saber do seu efeito.

Brasilia, 23/09/1999