Symbool (informatica): verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Geen bewerkingssamenvatting
Regel 4:
Het doel van het gebruik van symbolen is vierledig:
 
* Symbolen zijn makkelijker te begrijpen, aangezien het ''lexeme''[[lexeem]], de tekst van het symbool, gebruiktvoor verduidelijking kan worden voor verduidelijkinggebruikt. Een functienaam zoals ''"<code>calculate_error"''</code> zegt meer dan een letterlijke instructie "<code>call $7FCE:D832"</code>.
* 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 ''<code>TABLE_A_SIZE''</code> maakt echter zeer duidelijk welke tabel bedoeld wordt bedoeld.
* 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 slechtsalleen de waarde van ''<code>TABLE_A_SIZE''</code> 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 ==
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 [[Debugger|''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 (geheugenadres of een reeks van) geheugenadres(sen)geheugenadressen en de symbolische naam, vereenvoudigt dit het vinden van fouten in de [[broncode]], in (de ''source'').
 
== Primitieve symbolen ==
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 uiteindelijksamengesteld gedefinieerduit inde termenenkelvoudige van[[Karakter ''primitive symbols''(informatica)|karakters]]. Een bekend voorbeeld hiervan zijn ''[[Sleutelwoord|keywordssleutelwoord]]''en zoals ''if'' en ''else'' en voorgedefinieerde typen zoals ''[[Integer (informatica)|'int']]'' en ''[[Zwevendekommagetal|'float']]''.
 
== Voorbeelden van symbolen ==
* [[Karakter (informatica)|Karakterskarakters]]'',
* ''[[Identifier (programmeren)|identifieridentifiers]]s'' en ''[[keyword]]s'' in verschillende [[computertaalComputertaal|computertalen]],
* [[HyperText Markup Language|HTML]]-tags,]]
 
{{Appendix|literatuur|2=
* ''M Marcotty en H Ledgard. Programming language landscape, Syntax, semantics, implementation'', tweede editie, M1985. MarcottyISBN en H. Ledgard, Macmillan Publishing, London, 1985.978-0-574-21945-9
* [[Andrew S. Tanenbaum|AS Tanenbaum]]. [http://fuuu.be/polytech/INFOF201/Bouquin%20syst%c3%a8mes%20d_exploitations.pdf Structured Computer Organisation], 1984. {{pdf}}
* ''Structured Computer Organisation'', tweede editie, A. S. Tanenbaum, Prentice Hall International editions, London, 1984.
}}
 
[[Categorie:Symbool]]
[[Categorie:Informatica]]
[[Categorie:Symbool]]