O que é uma tabela de símbolos?
Uma tabela de símbolos é usada pelos sistemas de computador como forma de centralizar informações e reduzir o tamanho dos programas. Essas tabelas funcionam como a chave para um código secreto; um símbolo ou string é colocado ao lado de outra informação, geralmente muito maior. Quando um programa lê um símbolo que está associado à tabela de símbolos, o programa faz referência à tabela e pega as informações em vez do símbolo. Isso permite que grandes informações ou estruturas comumente repetidas tenham apenas uma entrada, reduzindo o tamanho geral do programa.
O conceito por trás de uma tabela de símbolos é muito simples. Uma única tabela contém uma ampla variedade de informações usadas por um programa, cada uma com sua própria entrada e símbolo associado exclusivo. Essas informações podem ser cadeias de código, informações de depuração, localizações da memória, literalmente qualquer coisa que o programa possa usar para funcionar. Em vez de incluir essas informações no programa, o código simplesmente faz referência à tabela usando seu símbolo exclusivo.
Existem dois lugares em que uma tabela de símbolos é comum: na compilação de código em programas e na vinculação de bibliotecas usadas por vários programas. Quando usada em programas, a tabela real geralmente é absorvida no programa ou transformada em uma biblioteca compartilhada no momento da compilação. É incomum deixar a lista separada, pois a alteração da lista pode ter consequências extremas para o programa. Mesmo quando a tabela é transformada nesse processo, ainda é a mesma coisa básica, é apenas incluída junto com outro código.
Quando uma tabela de símbolos é usada em uma biblioteca de vinculação, as possibilidades de como ela pode funcionar se expandem drasticamente. Uma biblioteca de vinculação é um conjunto de informações que se supõe estar disponível para um programa a qualquer momento. Essas bibliotecas geralmente são compartilhadas por um sistema operacional ou uma família de programas relacionados, todos criados pela mesma empresa.
Cada uma dessas bibliotecas é preenchida com informações sobre determinados assuntos. Uma biblioteca pode conter uma ampla gama de programação para desenhar as bordas da janela da interface do usuário do sistema operacional, enquanto outra pode conter informações sobre onde um grupo específico de programas armazena informações na memória. Como uma biblioteca de vinculação pode conter uma variedade aleatória de informações, as tabelas de símbolos geralmente são incluídas com elas.
Ao incorporar uma tabela de símbolos em um vinculador, é possível compartilhar os símbolos em uma série de programas. Isso permite que vários programas acessem os mesmos dados a qualquer momento. Se um grande número de programas exigir todas as mesmas informações, incluí-las em uma tabela de símbolos em uma biblioteca reduz bastante o tamanho do grupo total de programas.