Symbool (informatica)

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Een symbool in de informatica is een discrete waarde waaraan een semantische inhoud, dat wil zeggen een specifieke betekenis, is toegevoegd. Meer specifiek een associatie van een identifier met zijn eigenschappen, waaronder het geheugenadres, naam, type en taalafhankelijke restricties, voorbeelden hiervan zijn definities van klassen, variabelen, functies en constanten.

Doel[bewerken]

Het doel van het gebruik van symbolen is vierledig:

  • Symbolen zijn makkelijker te begrijpen, aangezien het lexeme, de tekst van het symbool, gebruikt kan worden voor verduidelijking. Een functienaam zoals "calculate_error" zegt meer dan een letterlijke instructie "call $7FCE:D832".
  • Een symbool kan onderscheid maken tussen verschillende betekenissen van dezelfde waarde. Als een tabel A en tabel B allebei 10 elementen bevatten, kan men aan een getal 10 niet zien of het op tabel A of B slaat. Het symbool TABLE_A_SIZE maakt echter zeer duidelijk welke tabel bedoeld wordt
  • Aangezien een symbool slechts op een plaats is gedefinieerd, hoeft er maar een wijziging te worden aangebracht als de waarde verandert. Is overal in het programma een letterlijke waarde gebruikt, moet deze waarde op vele plaatsen worden veranderd. In het bovenstaande voorbeeld hoeft slechts de waarde van TABLE_A_SIZE te worden veranderd, en hoeft niet voor ieder voorkomen van het getal "10" te worden uitgezocht of deze waarde op Tabel A, Tabel B of iets anders betrekking heeft.
  • Het loskoppelen van de waarde en de implementatie. Dit treedt bijvoorbeeld sterk op de voorgrond in object georiënteerde programmeertalen, waar een symbool (een method-call, bijvoorbeeld) verschillende implementaties in verschillende klassen kan hebben, maar ook HTML-tags zijn een goed voorbeeld, aangezien het effect van een tag afhankelijk is van de browser, terwijl de tag zelf door alle browsers wordt begrepen.

Verder gebruik[bewerken]

De in door de compiler samengestelde symbol table wordt in de regel in de objectcode opgeslagen. Deze tabel, samen met informatie over bestanden en regelnummers waar het symbool is gedefinieerd (de debug info), dient als basis voor z.g. symbolic- of sourcelevel debuggers, die in tegenstelling tot klassieke debuggers niet alleen een geheugenadres, maar ook de naam van de variabele in de programmatekst weergeven. Omdat hiermee een rechtstreekse link kan worden gelegd tussen een (reeks van) geheugenadres(sen) en de symbolische naam, vereenvoudigt dit het vinden van fouten in de broncode (de source).

Primitieve symbolen[bewerken]

Een speciaal geval vormen primitieve of axiomatische symbolen. Deze worden, in tegenstelling tot normale symbolen, niet in de programmatekst gedefinieerd, maar zijn in de definitie van de taal vastgelegd. Alle andere symbolen worden uiteindelijk gedefinieerd in termen van primitive symbols. Een bekend voorbeeld hiervan zijn keywords zoals if en else en voorgedefinieerde typen zoals int en float.

Voorbeelden van symbolen[bewerken]

Bronnen, noten en/of referenties
  • Programming language landscape, Syntax, semantics, implementation, tweede editie, M. Marcotty en H. Ledgard, Macmillan Publishing, London, 1985.
  • Structured Computer Organisation, tweede editie, A. S. Tanenbaum, Prentice Hall International editions, London, 1984.