बत्तख टाइपिंग

From alpha
Jump to navigation Jump to search

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

उदाहरण

पायथन (प्रोग्रामिंग भाषा) 3 में यह सरल उदाहरण दर्शाता है कि किसी भी ऑब्जेक्ट का उपयोग किसी भी संदर्भ में तब तक किया जा सकता है जब तक कि इसका उपयोग इस तरह से नहीं किया जाता है कि यह समर्थन नहीं करता है।

<सिंटैक्सहाइलाइट लैंग=पायथन लाइन=1 > कक्षा बतख:

   डीईएफ़ तैरना(स्वयं):
       प्रिंट (बतख तैराकी)
   डीईएफ़ फ्लाई(स्वयं):
       प्रिंट (बतख उड़ान)

क्लास व्हेल:

   डीईएफ़ तैरना(स्वयं):
       प्रिंट(व्हेल तैराकी)

[बतख(), व्हेल()] में जानवर के लिए:

   पशु.तैरना()
   पशु.मक्खी()

</सिंटैक्सहाइलाइट>

आउटपुट:

सिंटैक्सहाइलाइट लैंग = आउटपुट > बत्तख तैरना बत्तख उड़ रही है व्हेल तैराकी विशेषता त्रुटि: 'व्हेल' ऑब्जेक्ट में कोई विशेषता 'फ्लाई' नहीं है </सिंटैक्सहाइलाइट> यदि यह माना जा सकता है कि जो कुछ भी तैर सकता है वह बत्तख है क्योंकि बत्तखें तैर सकती हैं, तो व्हेल को बत्तख माना जा सकता है; हालाँकि, यदि यह भी मान लिया जाए कि बत्तख को उड़ने में सक्षम होना चाहिए, तो व्हेल को बत्तख नहीं माना जाएगा।

सांख्यिकीय रूप से टाइप की गई भाषाओं में

कुछ प्रकार की प्रणाली में#स्थैतिक टाइपिंग|स्थैतिक रूप से टाइप की जाने वाली भाषाएँ जैसे बू (प्रोग्रामिंग भाषा)[3] और D_(प्रोग्रामिंग_भाषा),[4][5] क्लास प्रकार की जाँच को संकलन समय के बजाय रनटाइम पर होने के लिए निर्दिष्ट किया जा सकता है।

अन्य प्रकार की प्रणालियों के साथ तुलना

संरचनात्मक प्रकार की प्रणालियाँ

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

टाइपप्रति ,[6] एल्म (प्रोग्रामिंग भाषा)[7] और पायथन (प्रोग्रामिंग भाषा)[8] भाषाएँ अलग-अलग स्तर पर संरचनात्मक टाइपिंग का समर्थन करती हैं।

प्रोटोकॉल और इंटरफ़ेस

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

टेम्प्लेट या सामान्य प्रकार

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

जावा, स्काला और ऑब्जेक्टिव-सी जैसी भाषाओं में, प्रतिबिंब (कंप्यूटर प्रोग्रामिंग) को यह निरीक्षण करने के लिए नियोजित किया जा सकता है कि ऑब्जेक्ट तरीकों को लागू करते हैं या रनटाइम पर आवश्यक तरीकों को जोड़ते हैं। उदाहरण के लिए, जावा (प्रोग्रामिंग भाषा) के मेथडहैंडल एपीआई का उपयोग इस तरीके से किया जा सकता है।[9]


यह भी देखें

संदर्भ

  1. "Glossary — Python 3.7.1 documentation". docs.python.org. Retrieved 2018-11-08.
  2. "पायथन डक टाइपिंग - उदाहरण". Techie Hours. 2020-06-28. Retrieved 2020-07-26.
  3. Boo: Duck TypingArchived October 6, 2008, at the Wayback Machine
  4. "Dynamic classes and duck typing".
  5. "Metaprogramming - duck typing in D".
  6. "SE Radio Episode 384: Boris Cherny on TypeScript". se-radio.net. Retrieved 2019-10-25.
  7. Czaplicki, Evan. "Core Language · An Introduction to Elm". Retrieved 30 January 2017.
  8. "PEP 544 – Protocols: Structural subtyping (static duck typing)".
  9. "StackOverflow: Implement duck typing using java MethodHandles". Retrieved 13 June 2020.