सिंबल (प्रोग्रामिंग): Difference between revisions

From Vigyanwiki
(No difference)

Revision as of 09:20, 15 July 2023

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

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

समर्थन

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

भाषा नाम प्रकार उदाहरण शाब्दिक
एएनएसआई सामान्य लिस्प सिंबल, कीवर्ड symbol, :KEYWORD
क्लोजर सिंबल,[2] कीवर्ड[3] 'symbol, :KEYWORD
डार्ट सिंबल[4] #sym
एलिक्सिर एटम, सिंबल :sym
एरलंग एटम sym or 'sym'
जावास्क्रिप्ट (ES6 और बाद में) सिंबल symbol("sym");
जूलिया सिंबल :sym
के (प्रोग्रामिंग लैंग्वेज) सिंबल `sym
उद्देश्य-सी एसईएल @selector(sym)
पिकैक्स बेसिक सिंबल symbol let name = variable
पश्चलेख नाम /sym or sym
प्रोलोग एटम, सिंबल sym or 'sym'
रूबी सिंबल :sym or :'sym'
स्काला निःश्रेणी.प्रतीक 'symbol
स्कीम सिंबल sym
स्मालटॉक सिंबल #sym or #'sym'
एसएमएल/एनजे एटम.एटम
वोल्फ्राम लैंग्वेज सिंबल symbol["sym"] or sym


जूलिया

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


लिस्प

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

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

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

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

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

उदाहरण

निम्नलिखित सामान्य लिस्प सिंबल का एक सरल बाहरी प्रतिनिधित्व है:

this-is-a-symbol

प्रतीकों में रिक्त स्थान (और अन्य सभी वर्ण) हो सकते हैं:

|This is a symbol with whitespace|

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

:keyword-symbol

किसी सिंबल के मुद्रित प्रतिनिधित्व में पैकेज का नाम सम्मिलित हो सकता है। पैकेज के नाम और सिंबल के नाम के बीच दो कोलन लिखे होते हैं।

package-name::symbol-name

पैकेज प्रतीकों को निर्यात कर सकते हैं। फिर पैकेज के नाम और सिंबल के नाम के बीच केवल एक कोलन लिखा जाता है।

package:exported-symbol

सिंबल, जो किसी पैकेज में सम्मिलित नहीं हैं, उन्हें भी बनाया जा सकता है और उनका एक अंकन हो सकता है:

#:uninterned-symbol


परिशिष्ट भाग

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

प्रस्तावना

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

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

उदाहरण

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

father(zeus, hermes).
father(zeus, perseus).

sibling(X, Y) :- father(Z, X), father(Z, Y).


रूबी

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

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


उदाहरण

रूबी में शाब्दिक सिंबल का एक सरल उदाहरण निम्नलिखित है: [1]

my_symbol = :a
my_symbol = :"an identifier"

स्ट्रिंग्स को प्रतीकों में बलात् बनाया जा सकता है, इसके विपरीत:

irb(main):001:0> my_symbol = "Hello, world!".intern 
=> :"Hello, world!"
irb(main):002:0> my_symbol = "Hello, world!".to_sym 
=> :"Hello, world!"
irb(main):003:0> my_string = :hello.to_s
=> "hello"

सिंबल रूबी में प्रतीकवर्ग की वस्तुएं हैं: [13]

irb(main):004:0> my_symbol = :hello_world
=> :hello_world
irb(main):005:0> my_symbol.length 
=> 11
irb(main):006:0> my_symbol.class 
=> Symbol

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

irb(main):007:0> "aoboc".split("o")
=> ["a", "b", "c"]
irb(main):008:0> "aoboc".send(:split, "o") # same result
=> ["a", "b", "c"]

सहयोगी सरणी की कुंजी के रूप में सिंबल:

irb(main):009:0> my_hash = { a: "apple", b: "banana" }
=> {:a=>"apple", :b=>"banana"}
irb(main):010:0> my_hash[:a] 
=> "apple"
irb(main):011:0> my_hash[:b] 
=> "banana"


स्मालटॉक

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

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

उदाहरण

स्मॉलटॉक में शाब्दिक सिंबल का एक सरल उदाहरण निम्नलिखित है:

my_symbol := #'an identifier' " Symbol literal "
my_symbol := #a               " Technically, this is a selector literal. In most implementations, "
                              " selectors are symbols, so this is also a symbol literal "

स्ट्रिंग्स को प्रतीकों में ज़बरदस्ती बनाया जा सकता है, इसके विपरीत:

my_symbol := 'Hello, world!' asSymbol " => #'Hello, world!' "
my_string := #hello: asString         " => 'hello:' "

प्रतीकप्रतीक विज्ञप्ति के अनुरूप होते हैं, और उनके वर्ग को अधिकांश कार्यान्वयन में प्रतीककहा जाता है:

my_symbol := #hello_world
my_symbol class            " => Symbol "

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

" same as 'foo' at: 2 "
'foo' perform: #at: with: 2 " => $o "


संदर्भ

  1. 1.0 1.1 1.2 Hunt, Dave Thomas ; Chad Fowler ; Andy (2001). Programming Ruby the pragmatic programmers' guide ; [includes Ruby 1.8] (2. ed., 10. print. ed.). Raleigh, NC: The Pragmatic Bookshelf. ISBN 978-0-9745140-5-5.{{cite book}}: CS1 maint: multiple names: authors list (link)
  2. Symbols on the page on Data Structures
  3. Keywords on the page on Data Structures
  4. "A tour of the Dart language | Symbols". Dart programming language. Retrieved 17 January 2021.
  5. "जूलिया कोर.प्रतीक". Julia Documentation. Retrieved 31 May 2022.
  6. Common Lisp HyperSpec, system class Symbol
  7. Common Lisp HyperSpec, system class Package
  8. Peter Norvig: Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp, Morgan Kaufmann, 1991, ISBN 1-55860-191-0, Web
  9. Bratko, Ivan (2001). कृत्रिम बुद्धिमत्ता के लिए प्रोलॉग प्रोग्रामिंग. Harlow, England ; New York: Addison Wesley. ISBN 978-0-201-40375-6.
  10. 10.0 10.1 Kidd, Eric. "13 Ways of Looking at a Ruby Symbol". Random Hacks. Retrieved 10 July 2011.
  11. "Programming Ruby: The Pragmatic Programmer's Guide".
  12. "गलत कारण के लिए प्रतीकों का उपयोग करना". Gnomic Notes.
  13. "प्रतीक". Ruby Documentation. Retrieved 10 July 2011.
  14. http://wiki.squeak.org/squeak/uploads/172/standard_v1_9-indexed.pdf ANSI Smalltalk standard.