Em 9 de setembro de 1947, uma equipe trabalhava no Harvard Mark II, um computador eletromecânico do tamanho de uma sala. A máquina apresentava um comportamento errado e ninguém entendia por quê. Depois de investigar componente por componente, alguém abriu o painel F e encontrou o culpado preso entre os contatos do relé número 70: uma mariposa.
O inseto foi removido com uma pinça e colado no diário de bordo da equipe, com uma anotação que virou lenda: first actual case of bug being found. O caderno existe, a mariposa continua colada nele, e as duas coisas estão hoje no acervo do Museu Nacional de História Americana, do Smithsonian.
A parte que quase todo mundo conta errado
A versão popular dessa história diz que foi ali que a palavra bug nasceu. É uma boa história, mas é falsa, e o próprio bilhete prova isso.
Repare na escolha das palavras: primeiro caso real de um bug sendo encontrado. A frase só tem graça, e só faz sentido, se o termo já existisse. A piada da equipe era justamente essa: eles chamavam falhas de bug havia tempo, de forma figurada, e naquele dia encontraram uma literal.
O uso do termo para defeito técnico é bem mais antigo. Há registro de Thomas Edison empregando a palavra nesse sentido já em 1878, em correspondência sobre problemas nos seus inventos, descrevendo as pequenas falhas que apareciam durante o desenvolvimento como bugs. A palavra circulava entre engenheiros de telégrafo e de equipamentos elétricos décadas antes de existir computador.
Por que a história pegou mesmo assim
Uma lenda só sobrevive se for útil, e essa é extremamente útil. Ela dá à computação uma origem física, quase cômica, num campo que costuma ser abstrato demais para render boas histórias.
Há também um detalhe que ajudou muito na popularização: a equipe do Mark II incluía Grace Hopper, uma das figuras mais influentes da história da programação, que mais tarde ajudaria a criar o compilador e a linguagem COBOL. Hopper contava o episódio com frequência em palestras, e a associação entre o nome dela e a mariposa consolidou a história no imaginário da área.
Vale a precisão: não há certeza de que tenha sido ela quem encontrou o inseto, e ela mesma não costumava reivindicar isso. O que ela fez foi contar bem, que é o que garante que uma história atravesse oitenta anos.
O termo que veio depois e ninguém questiona
Se bug é o defeito, debug é o ato de removê-lo. E aqui a lógica é literal: tirar o inseto de dentro da máquina.
A palavra se espalhou junto com a computação e hoje descreve uma das atividades centrais da profissão. Quem programa passa mais tempo entendendo por que algo não funciona do que escrevendo o que deveria funcionar. É uma inversão curiosa: a palavra nasceu descrevendo a exceção e virou o nome do trabalho.
O que mudou, e o que não mudou
Em 1947, a depuração era física. O defeito tinha lugar, tamanho e, naquele caso, asas. Alguém abria o painel, olhava os relés e encontrava o problema com os olhos.
Hoje o defeito não tem corpo, e por isso o trabalho ficou mais difícil, não mais fácil. Um sistema moderno tem camadas demais para inspecionar visualmente: código próprio, bibliotecas de terceiros, serviços externos, cache, rede, infraestrutura. O bug pode estar em qualquer uma, e frequentemente está na fronteira entre duas.
O que não mudou é o método, e ele continua sendo o mesmo daquela equipe em 1947: isolar até sobrar um lugar só. Reduzir o escopo, confirmar o que funciona, eliminar o que não é. A equipe do Mark II não encontrou a mariposa por sorte. Encontrou porque foi descartando componentes até chegar ao painel F.
Uma lição que envelheceu bem
Existe uma frase que circula entre programadores e resume bem o espírito da história: a máquina está sempre certa, o problema é sempre a suposição de quem a opera. A mariposa é o exemplo perfeito. A máquina estava fazendo exatamente o que a física mandava fazer com um relé obstruído. Quem estava errado era quem assumia que o relé estava livre.
Oitenta anos depois, a maior parte dos bugs continua sendo isso: não um erro de lógica espetacular, mas uma suposição silenciosa que ninguém checou. O arquivo existe. A variável chegou preenchida. A API devolveu o formato de sempre. O relé está livre.
Às vezes não está.



