A programozás , névterek segítségével az épület a moduláris programok. Például a sin függvényszimbólum utalhat egy szinuszos számítására a matematikai függvények névterében, és a bűnre (az angol sin szó fordítás) egy másik vallási kérdésekkel foglalkozó névtérben. Ez megőrzi a homonim szimbólumok közötti elkerülhetetlen konfliktusokat.
Sok nyelv egy közös névtér az azonosítók a változók , függvények, és a speciális szolgáltatók, és nem biztosítja a képességét, hogy manipulálni (használat, hozzon létre) az új névtér. Az elnevezési konvenciók azonosítók kell majd elfogadni a programozók.
Például, a API C a GTK van objektum-orientált , bár a C nem egy objektum-orientált nyelv. Ennek elérése érdekében a GTK függvények nevei elnevezési megállapodást követnek. Itt van egy minta:
A függvény neve a következőképpen bomlik le:
A fő hátrány az, hogy a függvénynevek nagyon hosszúak lehetnek. Ezért kínál néhány nyelv olyan névtereket, amelyek lehetővé teszik a fejlesztő számára, hogy elkerülje a névütközéseket, és ezért rövidebb függvényneveket is használhat.
Néhány nyelv névtereket kínál a programozónak. Nevük : névtér a C ++ és a Microsoft .NET számára , csomag a Java és a Common Lisp számára, vagy modul a Python vagy az OCaml számára .
A Common Lisp emellett csomagokat is kínál, amelyek szimbólumgyűjtemények, a nyelv által alapértelmezésben biztosított mintegy tíz névtér mellett.
Bizonyos esetekben a nyelv nyelvtana lehetővé teszi az implicit névterek meghatározását. Például a C nyelven a következő kód érvényes:
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";A fordító valóban rendelkezik elegendő információval a szám szimbólum homonímia feloldásához .
A modern programozási nyelvek minden funkcióhíváshoz külön névteret hoznak létre. Ezért támogatják a lokális változók használatát, amelyek lehetővé teszik a rekurzív algoritmusok megvalósítását . Ezt a fogalmat nevezzük egy azonosító bezárásának , beszélünk láthatóságról vagy hatókörről is.
Számos nyelv lehetővé teszi a bezárások bonyolultabb vezérlését: globális változók láthatók az egész programban, találhatunk olyan változókat is, amelyek az aktuális fájlra vagy egy tetszőleges blokkra korlátozódnak (például C-ben a kapcsos zárójelek segítségével).
A homonímia problémáinak megoldására a különböző névterek között alkalmazott módszer azt jelenti, hogy ezek a különböző helyi névterek elrendelik, hogy válasszák ki az elsőt, amely a keresett szimbólumot tartalmazza. Általában két fő osztályozási módszer létezik: a lexikális hatókör , amelyet olyan nyelvben használnak, mint a C, és a dinamikus hatókör , például a Perl-ben .