V programování , obory názvů pomoc při budování modulárních programů. Například funkční symbol sin může odkazovat na výpočet sinusoidy v oboru jmen matematických funkcí a na sin (anglické slovo sin je překlad) v jiném oboru jmen zabývajícím se náboženskými otázkami. Tím se zachovají nevyhnutelné konflikty mezi stejnojmennými symboly.
Mnoho jazyky poskytují společný jmenný prostor pro identifikátory z proměnných , funkcí a speciálních operátorů, a neposkytují schopnost manipulovat (používat, vytvářet) nových jmenných prostorů. K jmenovat konvence identifikátorů pak musí být přijata programátory.
Například API C z GTK je objektově orientované , ačkoli C není objektově orientovaného jazyka. K dosažení tohoto cíle se názvy funkcí GTK řídí konvencí pojmenování. Zde je ukázka:
Název funkce se člení takto:
Hlavní nevýhodou je, že názvy funkcí mohou být velmi dlouhé. To je důvod, proč některé jazyky nabízejí jmenné prostory, které vývojáři umožňují snadno se vyhnout kolizím jmen, a proto umožňují použití kratších názvů funkcí.
Některé jazyky nabízejí programátorovi jmenné prostory. Nazývají se: namespace pro C ++ a Microsoft .NET , balíček pro Java a Common Lisp nebo modul pro Python nebo OCaml .
Common Lisp také poskytuje balíčky, které jsou kolekcemi symbolů, kromě deseti jmenných prostorů poskytovaných standardně jazykem.
V některých případech umožňuje gramatika jazyka definici implicitních jmenných prostorů. Například v jazyce C je platný následující kód:
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";Kompilátor má skutečně dostatek informací k vyřešení homonymie číselného symbolu .
Moderní programovací jazyky vytvářejí vyhrazený jmenný prostor pro každé volání funkce. Proto podporují použití lokálních proměnných, které umožňují implementaci rekurzivních algoritmů . Tento pojem se nazývá uzavření identifikátoru, mluvíme také o viditelnosti nebo rozsahu.
Mnoho jazyků umožňuje složitější ovládání uzávěrů: globální proměnné jsou viditelné v celém programu, můžeme také najít proměnné, které jsou omezeny na aktuální soubor nebo na libovolný blok (například v C pomocí symbolů složených závorek).
Metoda použitá k řešení problémů homonymie mezi různými jmennými prostory se rovná objednání těchto různých místních jmenných prostorů k výběru prvního, který obsahuje hledaný symbol. Obecně existují dvě hlavní metody klasifikace: lexikální obor používaný v jazyce jako C a dynamický obor používaný například v Perlu .