सिंबल (प्रोग्रामिंग)

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

सबसे तुच्छ कार्यान्वयन में, उन्हें अनिवार्य रूप से पूर्णांक नाम दिया गया है (उदाहरण के लिए सी में प्रगणित प्रकार)।

समर्थन
निम्नलिखित प्रोग्रामिंग भाषाएँ प्रतीकों के लिए रनटाइम सिस्टम समर्थन प्रदान करती हैं:

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

लिस्प
लिस्प (प्रोग्रामिंग भाषा) में एक सिंबल नाम स्थान (या कॉमन लिस्प में पैकेज) में अद्वितीय है। फलन EQ के साथ समानता के लिए प्रतीकों का परीक्षण किया जा सकता है। लिस्प प्रोग्राम रनटाइम पर नए सिंबल उत्पन्न कर सकते हैं। जब लिस्प उस डेटा को पढ़ता है जिसमें पाठ्य प्रतिनिधित्व वाले सिंबल सम्मिलित होते हैं, तो उपस्थित प्रतीकों को संदर्भित किया जाता है। यदि कोई सिंबल अज्ञात है, तो लिस्प रीडर एक नया सिंबल बनाता है।

सामान्य लिस्प प्रतीकों में निम्नलिखित विशेषताएँ होती हैं: एक नाम, एक मान, एक फलन, गुणों की एक सूची और एक संकुल है।

कॉमन लिस्प में यह भी संभव है कि किसी पैकेज में कोई सिंबल अंकित न हो। ऐसे प्रतीकों को मुद्रित किया जा सकता है, लेकिन जब वापस पढ़ा जाता है, तो एक नया सिंबल बनाना पड़ता है। चूंकि इसे प्रशिक्षु नहीं किया गया है, इसलिए मूल सिंबल को किसी पैकेज से पुनर्प्राप्त नहीं किया जा सकता है।

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

प्रतीकों को एक संकुल में रखा जा सकता है। कीवर्ड सिंबल स्व-मूल्यांकन कर रहे हैं और कीवर्ड नाम के संकुल में इंटर्न किया गया।

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

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

प्रस्तावना
प्रोलॉग (प्रोग्रामिंग भाषा) में, सिंबल (या परमाणु) संख्याओं के समान प्राथमिक आदिम डेटा प्रकार होते हैं। विभिन्न प्रोलॉग की बोलियों में सटीक संकेतन भिन्न हो सकते हैं। हालाँकि, यह हमेशा काफी सरल होता है (कोई उद्धरण या विशेष आरंभिक वर्ण आवश्यक नहीं हैं)।

अन्य भाषाओं के विपरीत, कुछ प्रोलॉग के तथ्य और/या नियम बनाकर प्रतीकों को कुछ अर्थ देना संभव है।

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

रूबी
रूबी (प्रोग्रामिंग भाषा) में, प्रतीकों को शाब्दिक रूप से या एक श्रृंखला को परिवर्तित करके बनाया जा सकता है। उनका उपयोग एक पहचानकर्ता या एक आंतरिक श्रृंखला के रूप में किया जा सकता है। समान सामग्री वाले दो सिंबल हमेशा एक ही वस्तु को संदर्भित करेंगे।

रूबी में साहचर्य सरणी की कुंजी के रूप में प्रतीकों का उपयोग करना सबसे अच्छा अभ्यास माना जाता है।

उदाहरण
रूबी में शाब्दिक सिंबल का एक सरल उदाहरण निम्नलिखित है: स्ट्रिंग्स को प्रतीकों में बलात् बनाया जा सकता है, इसके विपरीत: सिंबल रूबी में वर्ग की वस्तुएं हैं: प्रतीकों का उपयोग सामान्यतः वस्तुओं को गतिशील रूप से संदेश भेजने (कॉल विधियों पर) के लिए किया जाता है: सहयोगी सरणी की कुंजी के रूप में सिंबल:

स्मालटॉक
स्मॉलटॉक में, प्रतीकों को शाब्दिक रूप से या एक श्रृंखला को परिवर्तित करके बनाया जा सकता है।

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

उदाहरण
स्मॉलटॉक में शाब्दिक सिंबल का एक सरल उदाहरण निम्नलिखित है: स्ट्रिंग्स को प्रतीकों में ज़बरदस्ती बनाया जा सकता है, इसके विपरीत: प्रतीक विज्ञप्ति के अनुरूप होते हैं, और उनके वर्ग को अधिकांश कार्यान्वयन में  कहा जाता है: प्रतीकों का उपयोग सामान्यतः वस्तुओं को गतिशील रूप से संदेश भेजने (कॉल विधियों पर) के लिए किया जाता है: