O Gandhi nuclear

Mahatma Gandhi, o líder indiano conhecido mundialmente pela filosofia da não-violência, torna-se um crápula sanguinário, detonador de bombas atômicas, no jogo Civilization. Seria isso um erro de código?

O jogo “Civilization” tem o objetivo de evoluir civilizações. Infelizmente, nunca joguei o mesmo para comprovar ou não a veracidade, mas diz a lenda que o líder indiano Gandhi começa pacífico nas primeiras fases, e depois que a Índia desenvolve bombas atômicas, ele se torna agressivo a ponto de usar e abusar das mesmas!

Uma explicação possível envolve um erro de código: um overflow.

A agressividade dos líderes seria um número de 1 a 10, e Gandhi começa com o menor número possível, 1. A variável com a agressividade é armazenada num tipo inteiro sem sinal, com um byte (8 bits).

Um inteiro sem sinal com 8 bits armazena inteiros de 0 a 255 (equivale a 2^8 − 1).

Quando as civilizações atingem a era democrática, todos os jogadores têm decréscimo de dois pontos na agressividade. Opa. Se Gandhi começa com 1, ele ficaria com -1 no final. Só que, na aritmética computacional, ocorre um overflow (ou melhor, um underflow), e o -1 equivale ao valor 255.

Ou seja, o pacífico Gandhi se tornaria 25 vezes mais terrível do que o mais terrível dos outros líderes!

Tal caso é ensinado em escolas de computação, como exemplo de overflow.

O que dizem os criadores?

Há várias investigações sobre o tema. Em resumo, eles negam que a lenda acima seja verdade. Gandhi teria um comportamento tão igual quanto o esperado. Talvez pela Índia ter mais chance de desenvolver bombas atômicas, pode ser que pareça que Gandhi tenha esse comportamento.

De qualquer forma, é uma situação tão inusitada que os criadores incorporaram de propósito esse comportamento bizarro a Gandhi, a partir de Civilization V, como uma piada e um easter egg.

Recomendo os links abaixo para maiores detalhes técnicos.

Sei que esse episódio gerou uma série de memes engraçados.

Algumas fontes:

https://en.wikipedia.org/wiki/Nuclear_Gandhi

Livro Humble Pi – Matt Parker

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s