Che cos'è una tabella dei simboli?
Una tabella di simboli viene utilizzata dai sistemi informatici come mezzo per centralizzare le informazioni e ridurre le dimensioni dei programmi. Queste tabelle funzionano come la chiave di un codice segreto; un simbolo o una stringa viene posizionato accanto a un'altra informazione, generalmente molto più grande. Quando un programma legge un simbolo associato alla tabella dei simboli, il programma fa riferimento alla tabella e acquisisce le informazioni anziché il simbolo. Ciò consente a grandi informazioni o a strutture comunemente ripetute di avere una sola voce, riducendo le dimensioni complessive del programma.
Il concetto alla base di una tabella dei simboli è molto semplice. Una singola tabella contiene una vasta gamma di informazioni utilizzate da un programma, ognuna con la propria voce e un unico simbolo associato. Queste informazioni potrebbero essere stringhe di codice, informazioni di debug, posizioni di memoria, letteralmente qualsiasi cosa che il programma possa usare per funzionare. Invece di includere tali informazioni all'interno del programma, il codice fa semplicemente riferimento alla tabella usando il suo simbolo univoco.
Esistono due posizioni in cui una tabella dei simboli è comune: nella compilazione del codice in programmi e nel collegamento delle librerie utilizzate da più programmi. Se utilizzata nei programmi, la tabella effettiva viene in genere assorbita nel programma o trasformata in una libreria condivisa al momento della compilazione. È insolito lasciare l'elenco separato, poiché la modifica dell'elenco potrebbe avere conseguenze estreme per il programma. Anche quando la tabella viene trasformata in questo processo, è sempre la stessa cosa di base, è appena inclusa insieme ad altro codice.
Quando una tabella dei simboli viene utilizzata in una libreria di collegamento, le possibilità di come può funzionare si espandono drasticamente. Una libreria di collegamento è un insieme di informazioni che si presume siano disponibili per un programma in qualsiasi momento. Queste librerie sono spesso condivise da un sistema operativo o da una famiglia di programmi correlati, tutti realizzati dalla stessa azienda.
Ognuna di queste biblioteche è piena di informazioni su determinati argomenti. Una libreria può contenere una vasta gamma di programmi per disegnare i bordi delle finestre dell'interfaccia utente del sistema operativo, mentre un'altra può contenere informazioni su dove un gruppo specifico di programmi memorizza informazioni in memoria. Poiché una libreria di collegamento può contenere un tale assortimento casuale di informazioni, le tabelle dei simboli sono spesso incluse con esse.
Incorporando una tabella dei simboli in un linker, è possibile condividere i simboli attraverso una serie di programmi. Ciò consente a più programmi di accedere agli stessi dati in qualsiasi momento. Se un gran numero di programmi richiede tutti le stesse informazioni, incluso in una tabella dei simboli in una libreria si riduce notevolmente la dimensione del gruppo di programmi totale.