Zerinho ou um: mais que uma brincadeira
Nós, seres humanos, utilizamos o sistema de numeração decimal desde que nascemos. Seja para medir a quantidade de dinheiro, massa, comprimento ou mesmo operações matemáticas, ele está presente nas mais diversas aplicações.
Já parou para pensar no porquê de utilizarmos a base decimal no dia a dia? Uma possível resposta para isso está na palma das nossas mãos: nós temos dez dedos. Ainda assim, esse não foi o único sistema de contagem já criado: por exemplo, temos os povos Pame no México e os Yuki na Califórnia que utilizavam um sistema octal, contando com os espaços entre os dedos, ao invés dos dedos em si. Seja como for, o sistema predominante em usos corriqueiros é o decimal.
No entanto, há uma aplicação de importância crucial na nossa sociedade em que não vemos o uso da base decimal: computadores. Se você é estudante de engenharia ou mais especificamente engenharia elétrica, já viu ou verá nas disciplinas de cálculo numérico, circuitos lógicos e eletrônica digital que a linguagem utilizada em máquinas é binária*, ou seja, 0 ou 1. O porquê disso tem a sua complexidade, mas uma resposta direta é que esse sistema permite representar perfeitamente duas condições opostas: ligado/desligado; sim/não; verdadeiro/falso. Essa binariedade auxilia as máquinas a distinguirem com facilidade os estados.
Atualmente a operação de um computador com 10 voltagens diferentes, ou seja, um computador cuja linguagem fosse decimal, não é possível com os componentes eletrônicos existentes. As principais razões para isso são a de que muito mais energia seria consumida, não havendo materiais econômicos capazes de armazenar 10 estados elétricos diferentes. Finalmente, mesmo se houvesse um material rentável o suficiente para essa função, persiste o problema de que os sinais elétricos não são estáveis e podem variar facilmente devido a interferências. Isso levaria a constantes variações da tensão entregue em relação à tensão desejada, causando graves erros no sistema.
*O uso de um ou mais dígitos adicionais envolveria aumentar a complexidade de cálculos e de níveis de tensão elétrica a serem empregados – de fato, existem computadores ternários com diversas vantagens em relação aos binários, mas ainda não há pesquisa suficiente para a sua implementação.
Dessa forma, para representarmos medidas do nosso mundo físico (decimal, em sua maioria) para sua eventual análise num computador (binário), é necessário converter a grandeza entre as duas bases. Como tudo na vida, esse processo de conversão não está a prova de erros. Por exemplo, representar o número (0.1)10 em decimal nos leva à (0.00011)2 em binário, que é uma dízima periódica.
Quando os erros saem da teoria
Sistema de mísseis Patriot: esse míssil superfície-ar (SAM) servia ao propósito de rastrear e destruir alvos aéreos, como outros mísseis e aeronaves. Foi utilizado em larga escala na Guerra do Golfo, 1991. Em 25 de fevereiro deste ano, o sistema falhou em interceptar um míssil inimigo, causando a morte de 28 soldados norte americanos. Um relatório apontou que a falha foi causada devido a uma propagação de erros de conversão: o tempo era medido em décimos de segundo. O valor (1/10) ao ser representado em binário não termina. Após 100 horas de operação, o relógio interno do sistema havia defasado em um terço de segundo. Devido à velocidade do míssil inimigo, isso resultou no sistema errar em mais de 500 metros o seu alvo.
Missão Cluster I: o vôo inaugural do projeto Ariane 5, uma missão espacial não tripulada da Agência Espacial Europeia para investigação da magnetosfera terrestre e sua interação com o vento solar. Realizado em 4 de junho de 1996, terminou em falha devido a vários erros no design do software, principalmente a proteção inadequada contra overflow (quando o número excede a capacidade de ser representado pelo sistema) que interrompeu todo o sistema de navegação inercial. A aceleração horizontal não prevista causou uma conversão de dados de um número de ponto flutuante de 64 bits para um valor inteiro de 16 bits que excedeu a capacidade do sistema. Isso resultou no foguete saindo de sua rota 37 segundos após o lançamento, começando a se desintegrar devido a forças aerodinâmicas não antecipadas. A falha ficou conhecida como um dos erros de software mais famosos e caros da história, resultando em uma perda de mais de US $ 370 milhões.
Sleipner A: é uma plataforma de petróleo do tipo Condeep – abreviação de estrutura de águas profundas de concreto – construída na Noruega. É conhecida por sua falha catastrófica em 23 de agosto de 1991, devido a uma falha de projeto. Foi rebocada para sua localização final, onde deveria ser baixada na água em uma operação controlada a uma taxa de 1 metro a cada 20 minutos. Quando o casco foi abaixado até a marca de 65 metros, ruídos estrondosos foram ouvidos seguidos pelo som da água caindo na unidade e uma rachadura grave se desenvolvia. Em alguns minutos, o casco começou a afundar a uma taxa de 1 metro por minuto. À medida que a estrutura afundava mais no fiorde, as câmaras de flutuação implodiam e os escombros atingiam o chão do fiorde, criando um terremoto na escala 3 de Richter. A investigação pós-acidente descobriu que a causa da falha resultou de cálculos imprecisos no projeto da estrutura. As tensões nas câmaras de lastro foram subestimadas em 47% e algumas paredes de concreto foram projetadas muito finas para resistir à pressão hidrostática. O principal fator foi a modelagem imprecisa de análise de elementos finitos – procedimento numérico para determinar soluções aproximadas de problemas de contorno.
A implementação incorreta ou o uso incorreto de algoritmos ou softwares já foi responsável por desastres reais, gerando perdas monetárias e mortes. Ao lidarmos com problemas de engenharia – não apenas o caso específico de conversão de números e sistemas de numeração e contagem – não estamos lidando apenas com números, cálculos e equações. O mais importante é o que todos eles representam: impacto na sociedade.
Matéria por Esteban Aguilar