Overflow, a fronteira final

15 Sep 2010

Certa vez minha irmã perguntou por quê não conseguia mais salvar suas fotos no computador. Como todo bom usuário final, ela ignorava as mensagens de erro que diziam que o disco estava lotado. Talvez ela imaginasse que os computadores são repositórios infinitos de informação, assim como a fantástica bolsa de espaço infinito de um jogo de RPG, que se for acidentalmente aberta dentro do mar, suga toda a água do planeta, mantendo, porém, o mesmo peso e aparência.

Overflow

Se pudermos imaginar que o universo, em toda a sua infinidade ainda não mensurável, for um grande HD com espaço para zilhões de fotos de Carl Sagan em alta resolução salvas no formato BMP, teremos uma idéia aproximada do quão grande é a coisa. Agora vamos imaginar que o universo na verdade é um complexo programa que está sendo executado, ocupando toda a memória disponível do computador, tal qual um pesadíssimo jogo de última geração com vários efeitos visuais e compatível com poucas placas de vídeo. Nesse programa, nós seríamos meras instâncias da classe Humano, em busca de uma resposta para as eternas questões: Onde estamos? Quem somos? Quem vai ser o eliminado desse paredão?.

A persistência e a genialidade humana nos levariam aos confins do espaço, à soleira da porta do universo, na qual bateríamos três vezes e seríamos pessimamente atendidos por um velho barbudo resmungão, segurando um grande livro de algoritmos e estruturas de dados, que nos diria grosseiramente que se cruzássemos a fronteira, o universo inteiro teria de aumentar seu diâmetro para continuar nos contendo (já que querendo ou não, pertencemos a ele, estamos em seu escopo), e isso seria impossível. Nós falaríamos ao velho, com toda a nossa astúcia, perseverança e conhecimento reunido, perdido em guerras e reunido novamente, que o universo é dinâmico e se adapta ao seu conteúdo, assim como um vetor de caracteres dinâmico se expande para conter strings maiores. Esse argumento seria convincente o bastante para deixar o velho completamente absorto em questionamentos acerca da eficiência da alocação dinâmica de memória, assim nos deixando livres para trespassar os limites do universo.

Nesse exato instante, um programador em alguma dimensão paralela estaria procurando desesperadamente em seu código o problema que causou o desastroso overflow, e aplicando um tratamento de erros eficiente, que no caso, seria substituir o velhinho resmungão por um dragão feroz e sem interesse algum por estrutura de dados. Segundos antes, nós, os humanos, veríamos finalmente que do outro lado não havia nada de extraordinariamente especial ou esclarecedor, além de uma grande mensagem de erro, que no fim das contas foi ignorada, e todos se perguntaram se ainda daria tempo de chegar em casa para ver quem seria o eliminado da semana.