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

From Vigyanwiki
Revision as of 11:56, 23 June 2023 by alpha>Indicwiki (Created page with "{{Short description|Datatype in programming}} कंप्यूटर प्रोग्रामिंग में एक प्रतीक एक आदिम ड...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

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

समर्थन

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

language type name(s) example literal(s)
ANSI Common Lisp symbol, keyword symbol, :keyword
Clojure symbol,[2] keyword[3] 'symbol, :keyword
Dart Symbol[4] #sym
Elixir atom, symbol :sym
Erlang atom sym or 'sym'
JavaScript (ES6 and later) Symbol Symbol("sym");
Julia Symbol :sym
K (programming language) symbol `sym
Objective-C SEL @selector(sym)
PICAXE BASIC symbol symbol let name = variable
PostScript name /sym or sym
Prolog atom, symbol sym or 'sym'
Ruby Symbol :sym or :'sym'
Scala scala.Symbol 'symbol
Scheme symbol sym
Smalltalk Symbol #sym or #'sym'
SML/NJ Atom.atom
Wolfram Language Symbol Symbol["sym"] or sym


जूलिया

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


लिस्प

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

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

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

उदाहरण

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

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"

प्रतीक वस्तुएँ हैं Symbol रूबी में कक्षा:[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:' "

प्रतीक इसके अनुरूप हैं symbol प्रोटोकॉल, और उनके वर्ग को कहा जाता है Symbol अधिकांश कार्यान्वयन में:

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.