Se você utiliza o computador com frequência, provavelmente já mexeu com algum arquivo compactado. Mas você sabe como isso funciona? O que WinZip, WinRAR, 7-Zip e afins fazem para deixar os arquivos menores e depois maiores novamente?
Tecnologia, negócios e comportamento sob um olhar crítico.
Assine já o The BRIEF, a newsletter diária que te deixa por dentro de tudo
Não existe nenhum processo mágico que faz os bytes desaparecerem e depois reaparecerem do outro lado. O que acontece com os arquivos é que eles são reescritos de uma forma mais inteligente para que possam ocupar menos espaço em disco.
Na verdade, o processo é mais fácil de entender do que parece e, depois desse texto, você vai finalmente ver como isso é feito.
Para o computador, a maioria dos arquivos é igual: amontoados de informações redundantes descritas diversas vezes. Podem ser comandos, instruções ou até mesmo texto. O que o compactador de arquivos faz é simplesmente eliminar essas redundâncias, consequentemente eliminando espaço em disco.
O processo de compactação nada mais é um processo de reestruturação de forma mais inteligente desses dados, e funciona assim:
Em vez de listar as mesmas informações diversas vezes, ele relaciona apenas uma e depois cria uma referência para a primeira, todas as vezes que essa informação aparecer no arquivo. Como essa referência é menor que a ocorrência inicial, o arquivo comprimido acaba sendo muito menor que o original.
Para criar essas referências, o software compactador de arquivos possui um algoritmo que analisa todo o conteúdo do arquivo e busca pelas ocorrências que mais se repetem. Esses padrões, então, são adicionados ao “dicionário”, que é o responsável por traduzir as referências pelos termos originais.
Veja o exemplo na expressão a seguir:
O TecMundo é o melhor site de tecnologia do mundo. O melhor site de tecnologia do mundo é o TecMundo.
Para facilitar o entendimento, vamos supor que cada um dos caracteres dessa sentença — incluindo espaços — ocupe um byte na memória do computador.
Com isso, podemos dizer que a sentença ocupa 101 bytes.
Agora, vamos pegar cada uma das palavras e atribuir a ela um código numérico. Essa lista será o nosso dicionário.
- TecMundo=1
- melhor=2
- site=3
- de=4
- tecnologia=5
- do=6
- mundo=7
Agora, vamos reescrever a frase, mas utilizando os códigos em vez das palavras:
O 1 é o 2 3 4 5 6 7. O 2 3 4 5 6 7 é o 1.
Contabilizando a diferença, podemos notar que agora a nossa sentença ocupa apenas 41 bytes na memória, contra 101 bytes da versão original.
Obs.: como no início convencionamos que cada caractere ocuparia 1 byte, não é necessário adicionar as letras isoladas ao dicionário.
Essa diferença significa uma diminuição de aproximadamente 60% no tamanho do arquivo. Entretanto, o arquivo modificado precisa carregar consigo o dicionário, caso contrário não será possível retornar o arquivo ao seu estado original novamente.
Desde modo, é preciso somar o tamanho do arquivo (41 bytes) com o tamanho do dicionário (51 bytes). O resultado é um arquivo de 92 bytes, pouca coisa menor que o original, mas que já apresenta uma diferença.
Isso mostra que, quanto maior o arquivo, maior a possibilidade de compressão, já que há uma chance maior de haver redundâncias em seu conteúdo.
Para entender melhor isso, vamos ao segundo exemplo, que traz aquela mesma sentença inicial, mas desta vez repetida dez vezes, o que nos rende um arquivo com 1.010 bytes. Em seguida, vamos utilizar o mesmo dicionario de antes para criar uma versão compactada desse arquivo, com os códigos no lugar das palavras.
Como antes, substituímos as ocorrências repetidas pelos itens do dicionário. O nosso novo arquivo compactado ocupa agora 521 bytes, o que equivale a uma compressão de quase 50%.
Vale lembrar que, apesar de a lógica dos programas de compactação ser a mesma, cada um possui um algoritmo de compactação diferente. Isso faz com que o modo de busca por padrões e a criação do dicionário seja independente em cada um deles.
Compactação de músicas e imagens
O processo de compactação descrito antes é o mesmo para qualquer arquivo gravado no computador. Para o sistema, não existe distinção de conteúdo, já que para a máquina a única coisa que muda é o modo como as informações são dispostas.
Esse tipo de compressão de arquivos é conhecida como “compactação sem perda”, uma vez que é possível recuperar todo o conteúdo original do arquivo após o processo de descompactação.
Mas também existe um outro tipo de compactação, que é a chamada “compactação com perda”, na qual partes dos arquivos são perdidas para sempre. Isso acontece em imagens e músicas, por exemplo.
Para diminuir o tamanho das imagens, os programas cortam informações consideradas desnecessárias. Para entender, imagine uma foto de uma paisagem, que possui um céu azul. O que o programa faz é escolher a informação de cor do pixel azul que mais aparece na imagem e em seguida reescrever os demais para o mesmo valor. Desse modo, a maioria dos pixels passa a possuir a mesma referência de cor, o que diminui o tamanho da imagem.
No caso de arquivos de som, mais precisamente o MP3, o software de compactação elimina partes da música que nosso ouvido não consegue notar, fazendo com que não percebamos a diferença de um arquivo descomprimido de áudio para um comprimido. É claro que existem diferenças no som, e, se comparadas as canções, é possível perceber as mudanças. Contudo, essa compactação pode fazer um arquivo de música ficar até 10 vezes menor, algo que acaba sendo uma troca justa.
A vantagem desse tipo de compactação é que é possível utilizar os arquivos comprimidos normalmente, pois imagens continuam sendo imagens e músicas continuam sendo músicas, diferente do que acontece com a compactação citada no início do texto, em que é preciso descompactar os arquivos antes do uso.
Fontes
Categorias