Mapear

O que é Mapear em um Computador?

Mapear (em Inglês: to map) possui dois significados: associar um valor a outro valor (e.g. mapear teclas a comandos), que seria um sentido comum no mundo dos computadores, ou mapear no sentido de criar um mapa de verdade, que é o que você espera normalmente desse verbo.

Mapear significa associar em um computador pois esse é um significado que vem da matemática. Quanto temos dois conjuntos de elementos, chamamos de mapear o ato de descrever quais elementos do primeiro conjunto estão associado a quais elementos do segundo conjunto. Por exemplo, se fossemos mapear um conjunto de frutas com um conjunto de cores, maça mapearia a cor vermelha, banana mapearia a cor amarela, limão mapearia a cor verde, e assim por diante.

Alguns exemplos na prática: mapear teclas do teclado a comandos em um jogo de videogame, e.g. mapear as teclas WASD ao movimento de andar para frente, para esquerda, para trás, e para direita, respectivamente; mapear uma função de um aplicativo a um atalho de teclado, e.g. Ctrl+O a função de abrir um arquivo; mapear uma extensão de arquivo a um aplicativo capaz de abrir um certo tipo de arquivo, e.g. mapear a extensão .svg ao Inkscape, um editor de arquivos no formato SVG; mapear nomes de domínio a endereços IP, que seria o trabalho de um servidor DNS; mapear uma frase em Inglês a uma frase em outro idioma, que é como programas de computador são traduzidos para outros idiomas; etc. Enfim, muita coisa no computador involve mapeamento de valores.

O mapeamento mais fundamental de um computador é mapear bits e bytes a valores lógicos. Toda sequência de bits é mapeável a um numero binário, e todo numero binário é mapeável a um número decimal e um número hexadecimal, e.g. 11111111 (8 bits 1 em sequência), equivale a 11111111(2) em binário, 255(10) em decimal, ou FF(16) em hexadecimal. Consequentemente, qualquer coisa que pode ser mapeada a números naturais pode ser mapeada a bits.

Um exemplo é como o computador entende texto. Para transformar bits em letras, o computador usa um sistema de mapeamento chamado de codificação de texto, em que um número natural (i.e. uma sequência de bits) é mapeada a uma letra, numeral, ou símbolo, chamado de caractere. Por exemplo: A é mapeado ao número 65, B ao número 66, C ao número 67, e assim por diante até chegar no Z (número 90). Como 65(10) em decimal é 1000001(2) em binário, a sequência de bits 1000001 seria mapeada a letra A nesse sistema, 1000010 a letra B, 1000011 a letra C, e assim por diante.

Chamamos de um mapa (em Inglês: map) uma estrutura de dados que diz quais elementos de um conjunto mapeiam a quais elementos do outro conjunto. O tipo de mapa mais simples de ser criado é uma lista, onde o índices são mapeados a valores.

Um exemplo simples é uma paleta de cores. Em alguns formatos de imagens de 8 bpp, os pixels de uma imagem podem ter no máximo 256 cores distintas. Nesse caso, o valor de cada pixel seria um número de 0 a 255, e existiria uma paleta de 256 cores, começando pela cor número 0 e indo até a cor número 255. O programa que exibe a imagem na tela do computador obtém a cor do pixel mapeando o valor de 0 a 255 do pixel com a respectiva cor na paleta.

Mapas são extremamente importantes em computadores pois são o conceito fundamental para obter abstrações.

Por exemplo, vamos supor que a cor 0 seja branca, e metade de uma imagem é branca pois metade dos pixels estão mapeados a essa cor 0. Se mudarmos a cor 0 para verde, automaticamente todos os pixels ficaram verdes. Isso por que os pixels não são diretamente brancos ou verdes, mas indiretamente. Sua cor atual é derivada através do mapa que chamamos de paleta. Em outras palavras, a paleta abstrai o valor concreto dos pixels.

O mesmo conceito é observado quando abrimos um arquivo clicando nele duas vezes. O computador não associa diretamente cada arquivo com um programa, mas sim deriva qual programa está associado a cada arquivo através de um mapa de associações de tipos de arquivos com o programa padrão para abrir aquele tipo de arquivo. Se mudarmos o programa padrão para abrir arquivos .svg, o comportamento de todos os arquivos .svg seriam "atualizados" automaticamente.

Mais fundamentalmente, os arquivos em si no computador são espaços em um disco rígido ou SSD. Esses espaços estão "mapeados" aos caminhos dos arquivos. Nesse caso, como dois arquivos não podem ocupar o mesmo espaço no disco, dizemos que os espaços também estão reservados.

O mesmo principio se aplica a como programas de computador reservam a memória RAM. Toda vez que você executa um programa, o espaço que ele ocupa na memória é diferente. Por exemplo, suponha que não haja nada na memória, logo, um programa que usará 1 megabyte de memória pode ficar ocupar qualquer espaço da memória. Agora, suponha que a memória esteja quase cheia, quase todos os espaços já reservados por outros programas. Nesse caso, o novo programa só pode ocupar um dos espaços vazios restantes. Porém, o programa em si não muda. O programa foi programado por um programador, e ele sempre fará a mesma coisa, independente de onde ele fica na memória RAM. Você já parou para pensar como pode isso? Se estiver escrito no programa que o programa usa os primeiros bytes da memória RAM, e esse bytes já estiverem sido usados por outro programa, o programa não funcionaria se outro programa já estivesse usando aquela memória. Logo, quando o programa diz "eu preciso de 1 byte de memória," existe um sistema de mapeiamento de endereços de memória que mapeia os endereços programados pelo programador para os endereços que estão disponíveis no sistema quando o programa roda.

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *