I programmering , navnerom hjelp til å bygge modulære programmer. For eksempel kan funksjonsymbolet sin referere til beregning av en sinusoid i et navneområde for matematiske funksjoner og til synd (det engelske ordet sin er en oversettelse) i et annet navneområde som omhandler religiøse spørsmål. Dette bevarer de uunngåelige konfliktene mellom homonyme symboler.
Mange språk gir et felles navneområde for identifikatorer av variabler , funksjoner og spesielle operatorer, og gir ikke muligheten til å manipulere (bruke, opprette) nye navneområder. De navnekonvensjoner av identifikatorer må deretter vedtas av programmerere.
For eksempel, den API C av GTK er objektorientert , selv om C er ikke et objektorientert språk. For å oppnå dette følger navnene på GTK-funksjonene en navngivningskonvensjon. Her er et eksempel:
Navnet på en funksjon brytes ned som følger:
Den største ulempen er at funksjonsnavnene kan bli veldig lange. Dette er grunnen til at noen språk tilbyr navnerom som gjør at utvikleren enkelt kan unngå navnekollisjoner og derfor tillater bruk av kortere funksjonsnavn.
Noen språk tilbyr navnerom til programmereren. De kalles: namespace for C ++ og Microsoft .NET , pakke for Java og Common Lisp eller modul for Python eller OCaml .
Common Lisp tilbyr også pakker, som er samlinger av symboler, i tillegg til de ti navneområdene som er gitt av språket som standard.
I noen tilfeller tillater språkets grammatikk definisjon av implisitte navneområder. For eksempel i C-språket er følgende kode gyldig:
struct address { int number; const char* road; }; struct phone { const char* number; const char* prefix; }; struct address myaddress; struct phone myphone; myaddress.number = 23; myphone.number = "67 45 00 23";Kompilatoren har faktisk nok informasjon til å løse homonymy av antall symbol .
Moderne programmeringsspråk skaper et eget navneområde for hver funksjonsanrop. De støtter derfor bruken av lokale variabler som tillater implementering av rekursive algoritmer . Denne forestillingen kalles lukking av en identifikator, vi snakker også om synlighet eller omfang.
Mange språk tillater mer kompleks kontroll av nedleggelser: globale variabler er synlige i hele programmet, vi kan også finne variabler som er begrenset til den nåværende filen eller til en vilkårlig blokk (for eksempel i C ved hjelp av seler-ikonene).
Metoden som brukes for å løse problemene med homonymi mellom de forskjellige navneområdene, tilsvarer å beordre disse forskjellige lokale navneområdene til å velge det første som inneholder det søkte symbolet. Det er vanligvis to hovedklassifiseringsmetoder: leksikalt omfang , brukt på et språk som C, og dynamisk omfang som brukes for eksempel i Perl .