नेमस्पेस

कम्प्यूटिंग में, नामस्थान संकेतों (नामों) का सेट है जो विभिन्न प्रकार की वस्तुओं को पहचानने और संदर्भित करने के लिए उपयोग किया जाता है। नामस्थान यह सुनिश्चित करता है कि दिए गए ऑब्जेक्ट्स के सभी सेट के अद्वितीय नाम हों ताकि उन्हें आसानी से पहचाना जा सकें।

अलग-अलग संदर्भों में नामों के पुन: उपयोग की अनुमति देने के लिए नामस्थानों को आमतौर पर पदानुक्रम के रूप में संरचित किया जाता है। सादृश्य के रूप में, लोगों के नामकरण की नृविज्ञान की प्रणाली पर विचार करें जहां प्रत्येक व्यक्ति का एक दिया गया नाम है, साथ ही परिवार का नाम उनके रिश्तेदारों के साथ साझा किया जाता है। यदि परिवार के सदस्यों के पहले नाम केवल प्रत्येक परिवार के भीतर अद्वितीय हैं, तो प्रत्येक व्यक्ति को पहले नाम और परिवार के नाम के संयोजन से विशिष्ट रूप से पहचाना जा सकता है; केवल जेन डो है, हालांकि कई जेन हो सकते हैं। डो परिवार के नाम स्थान के भीतर, सिर्फ जेन इस व्यक्ति को स्पष्ट रूप से नामित करने के लिए पर्याप्त है, जबकि सभी लोगों के वैश्विक नाम स्थान के भीतर, पूरा नाम इस्तेमाल किया जाना चाहिए।

नामस्थानों के प्रमुख उदाहरणों में फाइल सिस्टम शामिल हैं, जो फाइलों को नाम प्रदान करते हैं। कुछ प्रोग्रामिंग भाषा अपने वेरिएबल (कंप्यूटर साइंस) और सबरूटीन को नामस्थान में व्यवस्थित करती हैं।  कंप्यूटर नेटवर्क और वितरित सिस्टम संसाधनों को नाम देते हैं, जैसे कंप्यूटर, प्रिंटर, वेबसाइट और रिमोट फाइल्स। वर्चुअलाइजेशन ओएस-स्तरीय वर्चुअलाइजेशन का समर्थन करने के लिए ऑपरेटिंग सिस्टम पृथक नामस्थानों द्वारा कर्नेल संसाधनों को विभाजित कर सकते हैं।

इसी तरह, पदानुक्रमित (कंप्यूटिंग) फाइल सिस्टम फाइलों को निर्देशिकाओं में व्यवस्थित करते हैं। प्रत्येक निर्देशिका अलग नामस्थान है, ताकि निर्देशिका पत्र और चालान दोनों में जेन की फ़ाइल हो सकती है।

कंप्यूटर प्रोग्रामिंग में, नामस्थान आमतौर पर विशेष कार्यक्षमता के आसपास प्रतीकों और पहचानकर्ताओं को समूहीकृत करने के उद्देश्य से और ही नाम साझा करने वाले कई पहचानकर्ताओं के बीच नाम टकराव से बचने के लिए नियोजित होते हैं।

नेटवर्किंग में, डोमेन की नामांकन प्रणाली वेबसाइटों (और अन्य संसाधनों) को श्रेणीबद्ध नामस्थानों में व्यवस्थित करता है।

नाम विरोध
तत्व के नाम डेवलपर द्वारा परिभाषित किए गए हैं। विभिन्न एक्सएमएल अनुप्रयोगों से एक्सएमएल दस्तावेज़ों को मिलाने का प्रयास करते समय यह अक्सर विरोध का कारण बनता है।

इस एक्सएमएल में एचटीएमएल तालिका की जानकारी होती है:

इस एक्सएमएल में तालिका (फर्नीचर) (यानी फर्नीचर का टुकड़ा) के बारे में जानकारी है: यदि इन एक्सएमएल अंशों को साथ जोड़ा गया था, तो नाम विरोध होगा। दोनों में  तत्व होता हैं, लेकिन तत्वों की सामग्री और अर्थ भिन्न होते हैं।

एक्सएमएल पार्सर को यह नहीं पता होगा कि इन अंतरों को कैसे नियंत्रित किया जाए।

उपसर्ग के माध्यम से समाधान
एक्सएमएल में नाम के विरोध को नाम उपसर्ग के प्रयोग से आसानी से टाला जा सकता है।

निम्नलिखित एक्सएमएल तत्वों की शुरुआत में एच और एफ उपसर्ग करके एचटीएमएल तालिका और फर्नीचर के बारे में जानकारी के बीच अंतर करता है।

नामकरण प्रणाली
नाम स्थान में नाम में नाम स्थान का नाम और स्थानीय नाम होता है। नामस्थान नाम आमतौर पर स्थानीय नाम के लिए उपसर्ग (कंप्यूटर विज्ञान) के रूप में लागू किया जाता है।

संवर्धित बैकस-नौर रूप में: name = separator

जब स्थानीय नामों का स्वयं उपयोग किया जाता है, तो नाम संकल्प (प्रोग्रामिंग भाषा) का उपयोग यह तय करने के लिए किया जाता है कि कौन सा (यदि कोई है) विशेष नाम किसी विशेष स्थानीय नाम से संकेतित है।

प्रतिनिधिमंडल
वर्ल्ड वाइड वेब की संरचना जैसे वास्तविक दुनिया के अनुप्रयोगों में पार्टियों के बीच जिम्मेदारियों का प्रत्यायोजन महत्वपूर्ण है। नामस्थान वैश्विक विशिष्टता को बनाए रखते हुए कई नाम जारी करने वाले संगठनों को पहचानकर्ता असाइनमेंट सौंपने की अनुमति देते हैं। केंद्रीय पंजीकरण प्राधिकरण राष्ट्रीय इंटरनेट रजिस्ट्री को पंजीकृत करता है। प्रत्येक नेमस्पेस नाम एक संगठन को आवंटित किया जाता है जो बाद में उनके आवंटित नेमस्पेस में नामों के असाइनमेंट के लिए जिम्मेदार होता है। यह संगठन एक नाम जारी करने वाला संगठन हो सकता है जो स्वयं मेटाडेटा रजिस्ट्री करता है,या किसी अन्य पंजीकरण प्राधिकरण को नाम निर्दिष्ट करता है जो आगे उनके नामस्थान के कुछ हिस्सों को विभिन्न संगठनों को सौंपता है।

पदानुक्रम
नामकरण योजना जो तृतीय पक्षों को नामस्थानों के उप-प्रत्यायोजन की अनुमति देती है, श्रेणीबद्ध नामस्थान है।

पदानुक्रम पुनरावर्ती है यदि नामस्थान नामों के लिए सिंटैक्स प्रत्येक उप-प्रतिनिधि के लिए समान है। पुनरावर्ती पदानुक्रम का उदाहरण डोमेन नाम है।

गैर-पुनरावर्ती पदानुक्रम का उदाहरण समान संसाधन का नाम है जो इंटरनेट असाइन किए गए नंबर अथॉरिटी (आईएएनए) नंबर का प्रतिनिधित्व करता है।

नामस्थान बनाम स्कोप
नाम स्थान का नाम नाम के लिए संदर्भ (कंप्यूटर विज्ञान में स्कोप (कंप्यूटर विज्ञान)) प्रदान कर सकता है, और कभी-कभी शब्दों को दूसरे के स्थान पर उपयोग किया जाता है। हालाँकि, किसी नाम का संदर्भ अन्य कारकों द्वारा भी प्रदान किया जा सकता है, जैसे कि वह स्थान जहाँ वह होता है या नाम का वाक्य-विन्यास।

प्रोग्रामिंग भाषाओं में
कई प्रोग्रामिंग भाषाओं के लिए, नामस्थान उनके पहचानकर्ता (कंप्यूटर भाषाओं) के लिए संदर्भ है। ऑपरेटिंग सिस्टम में, नामस्थान का उदाहरण पदानुक्रमित है। निर्देशिका में प्रत्येक नाम विशिष्ट रूप से फ़ाइल या उपनिर्देशिका की पहचान करता है।

नियम के रूप में, नामस्थान में नामों के से अधिक अर्थ नहीं हो सकते; अर्थात्, अलग-अलग अर्थ ही नाम को ही नामस्थान में साझा नहीं कर सकते हैं। नामस्थान को संदर्भ (कंप्यूटिंग) भी कहा जाता है, क्योंकि अलग-अलग नामस्थानों में ही नाम के अलग-अलग अर्थ हो सकते हैं, प्रत्येक अपने नामस्थान के लिए उपयुक्त है।

नामस्थान की अन्य विशेषताएँ निम्नलिखित हैं:
 * नामस्थान में नाम वस्तुओं के साथ-साथ अवधारणाओं का प्रतिनिधित्व कर सकते हैं, नामस्थान प्राकृतिक भाषा, निर्मित भाषा, पेशे की तकनीकी शब्दावली, बोली, सामाजिक, या कृत्रिम भाषा (जैसे, प्रोग्रामिंग भाषा) हो सकती है।
 * जावा (प्रोग्रामिंग भाषा) में, नामस्थान में दिखाई देने वाले पहचानकर्ताओं का छोटा (स्थानीय) नाम होता है और नामस्थान के बाहर उपयोग के लिए अद्वितीय लंबा योग्य नाम होता है।
 * कुछ कंपाइलर्स (सी ++ जैसी भाषाओं के लिए) नाम मंगलिंग नामक प्रक्रिया में कंपाइलर में आंतरिक उपयोग के लिए नामस्थान और नामों को जोड़ते हैं।

साथ ही इसके सार भाषा तकनीकी उपयोग जैसा कि ऊपर वर्णित है, कुछ भाषाओं में अन्य उपयोगों के साथ स्पष्ट नाम स्थान नियंत्रण के लिए विशिष्ट कीवर्ड का उपयोग किया जाता है। नीचे C++ में नाम स्थान का उदाहरण दिया गया है:

कंप्यूटर-विज्ञान के विचार
कंप्यूटर विज्ञान में नाम स्थान (कभी-कभी नाम का दायरा भी कहा जाता है) अमूर्त कंटेनर या पर्यावरण है जो विशिष्ट पहचानकर्ताओं या प्रतीकों (अर्थात नाम) के तार्किक समूह को धारण करने के लिए बनाया गया है। नामस्थान में परिभाषित पहचानकर्ता केवल उस नामस्थान से जुड़ा होता है। ही पहचानकर्ता को कई नामस्थानों में स्वतंत्र रूप से परिभाषित किया जा सकता है। अर्थात्, नामस्थान में परिभाषित पहचानकर्ता का वही अर्थ हो सकता है या नहीं हो सकता है जो दूसरे नामस्थान में परिभाषित समान पहचानकर्ता के रूप में है। नामस्थानों का समर्थन करने वाली भाषाएं उन नियमों को निर्दिष्ट करती हैं जो निर्धारित करते हैं कि कौन सा नामस्थान पहचानकर्ता (इसकी परिभाषा नहीं) से संबंधित है।

इस अवधारणा को सादृश्य द्वारा चित्रित किया जा सकता है। कल्पना कीजिए कि दो कंपनियां, एक्स और वाई, प्रत्येक अपने कर्मचारियों को आईडी नंबर प्रदान करती हैं। X के पास ही आईडी नंबर वाले दो कर्मचारी नहीं होने चाहिए, और इसी तरह Y के लिए; लेकिन दोनों कंपनियों में ही आईडी नंबर का इस्तेमाल करना कोई समस्या नहीं है। उदाहरण के लिए, यदि बिल कंपनी X के लिए काम करता है और जेन कंपनी Y के लिए काम करता है, तो उनमें से प्रत्येक के लिए कर्मचारी #123 होना कोई समस्या नहीं है। इस समानता में, आईडी नंबर पहचानकर्ता है, और कंपनी नामस्थान के रूप में कार्य करती है। यह ही पहचानकर्ता के लिए प्रत्येक नामस्थान में अलग व्यक्ति की पहचान करने में समस्या पैदा नहीं करता है।

बड़े कंप्यूटर प्रोग्राम या दस्तावेजों में सैकड़ों या हजारों पहचानकर्ताओं का होना आम बात है। नामस्थान (या इसी तरह की तकनीक, #अनुसरण नामस्थान देखें) स्थानीय पहचानकर्ताओं को छिपाने के लिए तंत्र प्रदान करते हैं। वे तार्किक रूप से संबंधित पहचानकर्ताओं को संबंधित नामस्थानों में समूहीकृत करने का साधन प्रदान करते हैं, जिससे सिस्टम अधिक प्रतिरूपकता (प्रोग्रामिंग) बन जाता है।

डेटा भण्डारण उपकरण और कई आधुनिक प्रोग्रामिंग भाषाएं नामस्थानों का समर्थन करती हैं। भण्डारण उपकरण निर्देशिकाओं (या फ़ोल्डर्स) को नामस्थान के रूप में उपयोग करते हैं। यह दो फ़ाइलों को ही नाम के साथ उपकरण पर संग्रहीत करने की अनुमति देता है जब तक कि वे अलग-अलग निर्देशिकाओं में संग्रहीत हों। पायथन (प्रोग्रामिंग भाषा) (जैसे C++, Python (प्रोग्रामिंग भाषा)) में, नामस्थान का नामकरण करने वाले पहचानकर्ता स्वयं संलग्न नामस्थान से जुड़े होते हैं। इस प्रकार, इन भाषाओं में नामस्थान नामस्थान ट्री (डेटा स्ट्रक्चर) बनाते हुए नेस्ट कर सकते हैं। इस वृक्ष के मूल में अस्पष्ट वैश्विक नामस्थान है।

सी
C99 के बाद से C (प्रोग्रामिंग भाषा) में नामस्थान के रूप में अस्पष्ट संरचनाएं का उपयोग करना संभव है।

सी ++
सी ++ में, नामस्थान को नामस्थान खंड के साथ परिभाषित किया गया है। इस खंड के भीतर, पहचानकर्ताओं का ठीक उसी तरह उपयोग किया जा सकता है जैसे वे घोषित किए गए हैं। इस खंड के बाहर, नामस्थान विनिर्देशक को उपसर्ग किया जाना चाहिए। उदाहरण के लिए,, के बाहर      को अभिगम करने के लिए   लिखा जाना चाहिए। सी ++ में एक और निर्माण शामिल है जो इस शब्दाडंबर को अनावश्यक बनाता है। लाइन जोड़कर कोड का टुकड़ा, उपसर्ग   अब जरूरत नहीं है।

पहचानकर्ता जिन्हें स्पष्ट रूप से किसी नामस्थान में घोषित नहीं किया जाता है, उन्हें वैश्विक नामस्थान में माना जाता है। इन पहचानकर्ताओं का उपयोग ठीक उसी तरह किया जा सकता है जैसे वे घोषित किए गए हैं, या, चूंकि वैश्विक नाम स्थान का नाम नहीं है, नामस्थान विनिर्देशक  उपसर्ग किया जा सकता है। उदाहरण के लिए,   को   भी लिखा जा सकता है।

सी ++ में नामस्थान रिज़ॉल्यूशन पदानुक्रमित है। इसका मतलब है कि काल्पनिक नाम स्थान के भीतर, पहचानकर्ता   का अर्थ है  को संदर्भित करता है। यदि   मौजूद नहीं है, तो यह   को संदर्भित करता है यदि न तो   और न    मौजूद है, तो    को संदर्भित करता है, जो वैश्विक नाम स्थान में एक पहचानकर्ता है।

नामकरण टकराव से बचने के लिए सी ++ में नामस्थान अक्सर उपयोग किए जाते हैं। हालांकि हाल ही के C++ कोड में नामस्थानों का बड़े पैमाने पर उपयोग किया जाता है, अधिकांश पुराने कोड इस सुविधा का उपयोग नहीं करते हैं क्योंकि यह भाषा के शुरुआती संस्करणों में मौजूद नहीं था। उदाहरण के लिए, संपूर्ण C++ मानक पुस्तकालय के भीतर परिभाषित किया गया है, लेकिन मानकीकरण से पहले कई घटक मूल रूप से वैश्विक नामस्थान में थे। प्रोग्रामर सम्मिलित कर सकता है   नामस्थान रिज़ॉल्यूशन आवश्यकताओं को बायपास करने और पुराने कोड के साथ पश्चगामी संगतता प्राप्त करने का निर्देश जो सभी पहचानकर्ताओं को वैश्विक नामस्थान में होने की अपेक्षा करता है। हालांकि का उपयोग   पश्चगामी अनुकूलता (जैसे, सुविधा) के अलावा अन्य कारणों के लिए निर्देश को अच्छे कोड अभ्यासों के विरुद्ध माना जाता है।

जावा
जावा (प्रोग्रामिंग भाषा) में, नामस्थान का विचार जावा पैकेज में सन्निहित है। सभी कोड पैकेज के अंतर्गत आते हैं, हालाँकि उस पैकेज को स्पष्ट रूप से नाम देने की आवश्यकता नहीं है। उदाहरण के लिए उपयुक्त पहचानकर्ता से पहले पैकेज नाम को उपसर्ग करके अन्य पैकेजों से कोड का उपयोग किया जाता है, उदाहरण के लिए  में   को   (इसे पूरी तरह योग्य नाम के रूप में जाना जाता है) के रूप में संदर्भित किया जा सकता है। सी ++ की तरह, जावा संरचना प्रदान करता है जो पैकेज नाम  टाइप करने के लिए अनावश्यक बनाता है। हालाँकि, कुछ विशेषताओं (जैसे प्रतिबिंब (कंप्यूटर विज्ञान)) के लिए प्रोग्रामर को पूरी तरह से योग्य नाम का उपयोग करने की आवश्यकता होती है।

सी ++ के विपरीत, जावा में नामस्थान श्रेणीबद्ध नहीं हैं जहां तक ​​​​भाषा के वाक्य-विन्यास का संबंध है। हालाँकि, संकुल को पदानुक्रमित तरीके से नामित किया गया है। उदाहरण के लिए, से शुरू होने वाले सभी पैकेज  जावा मंच का हिस्सा हैं—पैकेज  भाषा के लिए कक्षाएं कोर शामिल हैं, और  विशेष रूप से प्रतिबिंब से संबंधित मुख्य वर्ग शामिल हैं।

जावा (और एडा (प्रोग्रामिंग भाषा) में, नामस्थान/पैकेज कोड की सिमेंटिक श्रेणियों को व्यक्त करते हैं। उदाहरण के लिए, सी # में,  सिस्टम (.NET फ्रेमवर्क) द्वारा प्रदान किया गया कोड शामिल है। ये श्रेणियां कितनी विशिष्ट हैं और भाषा से भाषा में पदानुक्रम कितने गहरे हैं।

फ़ंक्शन (प्रोग्रामिंग) और क्लास (कंप्यूटर साइंस) स्कोप्स (प्रोग्रामिंग) को अंतर्निहित नामस्थान के रूप में देखा जा सकता है जो कि दृश्यता, पहुंच और वस्तु जीवनकाल के साथ अटूट रूप से जुड़ा हुआ है।

सी #
C# भाषा में नामस्थान का अत्यधिक उपयोग किया जाता है। अधिक स्पष्ट रूप से उपयोग करने और अव्यवस्था से बचने के लिए सभी .NET फ्रेमवर्क क्लासेस नामस्थान में आयोजित की जाती हैं। इसके अलावा, कस्टम नामस्थान का प्रोग्रामर द्वारा बड़े पैमाने पर उपयोग किया जाता है, दोनों अपने काम को व्यवस्थित करने और नामकरण टकराव से बचने के लिए। किसी वर्ग का संदर्भ देते समय, किसी को या तो उसका पूर्ण रूप से योग्य नाम निर्दिष्ट करना चाहिए, जिसका अर्थ है कि नाम स्थान के बाद वर्ग का नाम, या उपयोग कथन जोड़ें। यह उस नामस्थान में सभी वर्गों के पूर्ण नाम का उल्लेख करने की आवश्यकता को समाप्त करता है। उपरोक्त उदाहरणों में, सिस्टम नामस्थान है, और सांत्वना और परिवर्तन सिस्टम के भीतर परिभाषित वर्ग हैं।

पायथन
पायथन (प्रोग्रामिंग भाषा) में, नामस्थान को अलग-अलग मॉड्यूल द्वारा परिभाषित किया जाता है, और चूंकि मॉड्यूल को पदानुक्रमित पैकेजों में समाहित किया जा सकता है, तो नामस्थान भी पदानुक्रमित होते हैं। सामान्य तौर पर जब मॉड्यूल आयात किया जाता है तो मॉड्यूल में परिभाषित नाम उस मॉड्यूल के नामस्थान के माध्यम से परिभाषित किए जाते हैं, और पूरी तरह से योग्य नाम का उपयोग कर कॉलिंग मॉड्यूल से अभिगम किए जाते हैं।  स्टेटमेंट का उपयोग प्रासंगिक नामों को सीधे कॉलिंग मॉड्यूल के नामस्थान में सम्मिलित करने के लिए किया जा सकता है, और उन नामों को कॉलिंग मॉड्यूल से योग्य नाम के बिना अभिगम किया जा सकता है: चूंकि यह सीधे नामों का आयात करता है (योग्यता के बिना) यह मौजूदा नामों को बिना किसी चेतावनी के अधिलेखित कर सकता है।

कथन का विशेष रूप  है, जो नामित पैकेज में परिभाषित सभी नामों को सीधे कॉलिंग मॉड्यूल के नामस्थान में आयात करता है। आयात के इस रूप का उपयोग, हालांकि भाषा के भीतर समर्थित है, आम तौर पर हतोत्साहित किया जाता है क्योंकि यह कॉलिंग मॉड्यूल के नाम स्थान को प्रदूषित करता है और नाम की अव्यवस्था के मामले में पहले से परिभाषित नामों को अधिलेखित कर देगा।

पायथन भी समर्थन करता है  कॉलिंग मॉड्यूल द्वारा उपयोग के लिए उपनाम या वैकल्पिक नाम प्रदान करने के तरीके के रूप में:

एक्सएमएल नामस्थान
एक्सएमएल में, एक्सएमएल नामस्थान विनिर्देश प्रोग्रामिंग भाषाओं में नामस्थान की भूमिका के समान, एक्सएमएल दस्तावेज़ में तत्वों और विशेषताओं के नामों को अद्वितीय बनाने में सक्षम बनाता है। एक्सएमएल नामस्थान का उपयोग करते हुए, एक्सएमएल दस्तावेज़ों में से अधिक एक्सएमएल शब्दावली से तत्व या विशेषता नाम शामिल हो सकते हैं।

पीएचपी
नामस्थान को संस्करण 5.3 के बाद से पीएचपी में पेश किया गया था। कक्षाओं, कार्यों और चरों के नामकरण टकराव से बचा जा सकता है। पीएचपी में, नामस्थान को नामस्थान खंड के साथ परिभाषित किया गया है। हम निम्नलिखित विभिन्न तरीकों से पीएचपी नामस्थान का संदर्भ दे सकते हैं:

नामस्थानों का अनुकरण asasasa
नामस्थानों के लिए भाषा समर्थन की कमी वाली प्रोग्रामिंग भाषाओं में, पहचानकर्ता नामकरण सम्मेलन का उपयोग करके नामस्थानों को कुछ हद तक अनुकरण किया जा सकता है। उदाहरण के लिए, सी (प्रोग्रामिंग भाषा) पुस्तकालय जैसे कि libpng अक्सर सभी कार्यों और चरों के लिए निश्चित उपसर्ग का उपयोग करते हैं जो उनके खुले इंटरफ़ेस का हिस्सा हैं। Libpng पहचानकर्ताओं को उजागर करता है जैसे: यह नामकरण प्रथा (प्रोग्रामिंग) उचित आश्वासन प्रदान करती है कि पहचानकर्ता अद्वितीय हैं और इसलिए बड़े कार्यक्रमों में टकराव के नामकरण के बिना उपयोग किया जा सकता है। इसी तरह, मूल रूप से फोरट्रान (जैसे, BLAS, LAPACK) में लिखे गए कई पैकेज किसी फ़ंक्शन के नाम के पहले कुछ अक्षरों को यह इंगित करने के लिए आरक्षित करते हैं कि यह किस समूह से संबंधित है।

इस तकनीक में कई कमियां हैं:
 * यह नेस्टेड नामस्थान के लिए अच्छी तरह से स्केल नहीं करता है; पहचानकर्ता अत्यधिक लंबे हो जाते हैं क्योंकि पहचानकर्ताओं के सभी उपयोग पूरी तरह से योग्य नाम | पूरी तरह से नामस्थान-योग्य होने चाहिए।
 * व्यक्ति या संगठन असंगत नामकरण परंपराओं का उपयोग कर सकते हैं, संभावित रूप से अवांछित अस्पष्टता का परिचय दे सकते हैं।
 * पहचानकर्ताओं के समूहों पर कंपाउंड या क्वेरी-आधारित संचालन, नामस्थानों के आधार पर, जिसमें वे घोषित किए गए हैं, बोझिल या अक्षम्य हैं।
 * प्रतिबंधित पहचानकर्ता लंबाई वाली भाषाओं में, उपसर्गों का उपयोग उन वर्णों की संख्या को सीमित करता है जिनका उपयोग यह पहचानने के लिए किया जा सकता है कि फ़ंक्शन क्या करता है। मूल रूप से फोरट्रान में लिखे गए पैकेजों के लिए यह विशेष समस्या है, जो प्रति पहचानकर्ता केवल 6 वर्णों की पेशकश करता है। उदाहरण के लिए, BLAS फ़ंक्शन का नाम  फ़ंक्शन इंगित करता है कि यह डबल-परिशुद्धता संख्या (डी) और सामान्य मैट्रिक्स (जीई) पर संचालित होता है, और केवल अंतिम दो अक्षर दिखाते हैं कि यह वास्तव में क्या करता है: मैट्रिक्स-मैट्रिक्स गुणन (एमएम)।

कई फायदे हैं:
 * स्रोत-कोड फ़ाइलों में नामों का पता लगाने के लिए किसी विशेष सॉफ़्टवेयर टूल की आवश्यकता नहीं होती है। पकड़ की तरह साधारण कार्यक्रम पर्याप्त है।
 * कोई नामस्थान नाम विरोध नहीं है।
 * नाम-परेशान करने की कोई आवश्यकता नहीं है, और इस प्रकार संभावित असंगति की कोई समस्या नहीं है।

यह भी देखें

 * 11 अंकों का वितरण बिंदु ज़िप कोड
 * द्विपद नामकरण (जीव विज्ञान में जीनस-प्रजातियां)
 * रासायनिक नामकरण
 * डेवी दशमलव वर्गीकरण
 * डिजिटल ऑब्जेक्ट पहचानकर्ता
 * डोमेन की नामांकन प्रणाली
 * पहचान (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)
 * लाइब्रेरी ऑफ कांग्रेस क्लासिफिकेशन
 * स्टार कैटलॉग और खगोलीय नामकरण परंपराएं
 * एक्सएमएल नामस्थान
 * तर्क-निर्भर नाम लुकअप