Reprodução/Facebook
Reprodução/Facebook

Como Gangnam Style quebrou o contador do YouTube

Programadores já fizeram ajustes e agora Psy está a salvo até que seu maior sucesso ultrapasse a marca de nove quintilhões

Economist.com

11 Dezembro 2014 | 17h27




SEATTLE - A popularidade do videoclipe de Gangnam Style, do astro coreano Psy, vai além de qualquer cálculo. Isso só mudou agora, com uma alteração na programação do YouTube. 

O clipe do cantor estava prestes a ultrapassar a marca de 2.147.483.647 visualizações, e o YouTube não conseguiria contar além disso. Mas os programadores fizeram alguns ajustes e agora Psy está a salvo até que seu maior sucesso ultrapasse a marca de 9.223.372.036.854.775.808 visualizações - pouco mais de nove quintilhões. 

Por que o YouTube não conseguia acompanhar a contagem de visualizações a partir daquele ponto?

A resposta envolve uma investigação dos próprios alicerces da computação. Todos os números nos computadores digitais, sejam eles armazenados em chips de memória de silício ou em pratos magnéticos de um disco rígido, são representados por dígitos binários, ou bits. 

Na base dez, os números são representados usando dez dígitos (de zero a nove); no código binário, ou na base dois, eles são representados usando dois dígitos (zero e um). Por exemplo, na base dez, os dígitos de um número de três dígitos correspondem às centenas, dezenas e unidades, e o maior número que podemos representar é 999; no código binário, os dígitos de um número de três dígitos correspondem aos conjuntos de quatro, dois e um, e o maior número que pode ser representado é 111 (em outras palavras, sete). 

Um número binário de oito dígitos, que pode representar valores de 0 a 255, é chamado de byte; números maiores são representados usando múltiplos bytes. Dois bytes (ou 16 bits) podem representar números de 0 a 65.536; quatro bytes (ou 32 bits) podem representar números de 0 a 4.294.967.294; e assim por diante. 

Quando o YouTube foi criado, os programadores decidiram usar um número de 32 bits para armazenar o número de visualizações, uma decisão que pareceu razoável na época.

Mas o leitor atento deve ter reparado que o limite para a contagem de visualizações do YouTube era 2.147.483.647, e não 4.294.967.294. Qual a explicação para essa discrepância? A resposta é que o valor de 32 bits é na verdade um inteiro com sinal: o dígito mais à esquerda de um número binário de 32 bits deve ser a coluna "2.147.483.647" (assim como o dígito mais à esquerda de um número de dez dígitos da base dez é a coluna dos "bilhões"). 

Mas, se a coluna receber em vez disso o valor negativo -2.147.483.647, torna-se possível usar um número binário de 32 bits para armazenar números de -2.147.483.647 a 2.147.483.647, em vez de 0 a 4.294.967.294. O YouTube não precisa contar as visualizações negativas, mas algumas linguagens de programação e bancos de dados exigem o uso de números inteiros com sinal, pois isso é útil para armazenar valores positivos e negativos. 

Como resultado, o YouTube se viu com um contador de visualizações com limite pouco superior a 2 bilhões, porque esse é o maior número que pode ser representado com um inteiro de 32 bits com sinal. Para consertar o problema, os programadores passaram agora a usar um número inteiro de 64 bits com sinal. Isso significa que o número máximo de visualizações passou a ser 9.223.372.036.854.775.808, pouco mais de nove quintilhões.

O YouTube não é o único a enfrentar esse tipo de problema: outros sistemas construídos anos atrás também se deparam com problemas envolvendo limites numéricos. 

O sistema operacional Unix e todos os seus derivados - que encontramos nos celulares Android e Apple, nos computadores Macintosh e na maioria dos servidores de internet - vai ter seu relógio esgotado no dia 19 de janeiro de 2038 às 03:14:07. Por padrão, o Unix conta os segundos a partir da meia noite de 1º de janeiro de 1970, usando um número inteiro de 32 bits com sinal, o que significa que é impossível contar mais do que 2.147.483.647 segundos a partir desse momento, criando aquilo que é conhecido como "problema do ano 2038", semelhante ao Bug do Milênio. 

Versões modernas do sistema operacional solucionaram a questão empregando um número inteiro de 64 bits para contar os segundos, mas alguns dispositivos antigos ou aqueles que rodam software de outra geração ainda podem apresentar falhas inesperadas. Além disso, em 2038, é possível que o vídeo de Psy já tenha ultrapassado a nova marca dos nove quintilhões de visualizações.

© 2014 The Economist Newspaper Limited. Todos os direitos reservados.

Da Economist.com, traduzido por Augusto Calil, publicado sob licença. O artigo original, em inglês, pode ser encontrado no site www.economist.com

Mais conteúdo sobre:
TheEconomistPsyYoutube

Encontrou algum erro? Entre em contato

O Estadão deixou de dar suporte ao Internet Explorer 9 ou anterior. Clique aqui e saiba mais.