नाममात्र प्रकार प्रणाली: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[कंप्यूटर विज्ञान]] में '''नाममात्र प्रकार प्रणाली''' (या नाम-आधारित प्रकार की प्रणाली) होती है, यदि [[डेटा प्रकार]] की संगतता और समानता स्पष्ट घोषणाओं और/या प्रकारों के नाम से निर्धारित होती है। नाममात्र प्रणालियों का उपयोग यह निर्धारित करने के लिए किया जाता है कि क्या प्रकार समतुल्य हैं, साथ ही साथ यदि प्रकार दूसरे का उपप्रकार है। संरचनात्मक [[प्रकार प्रणाली]] के साथ नाममात्र प्रकार प्रणाली विपरीत रहती हैं, जहां इसकी तुलना प्रश्न में प्रकार की संरचना पर आधारित होती है और स्पष्ट घोषणाओं की आवश्यकता नहीं होती है। | [[कंप्यूटर विज्ञान]] में '''नाममात्र प्रकार प्रणाली''' (या नाम-आधारित प्रकार की प्रणाली) होती है, यदि [[डेटा प्रकार]] की संगतता और समानता स्पष्ट घोषणाओं और/या प्रकारों के नाम से निर्धारित होती है। नाममात्र प्रणालियों का उपयोग यह निर्धारित करने के लिए किया जाता है कि क्या प्रकार समतुल्य हैं, साथ ही साथ यदि प्रकार दूसरे का उपप्रकार है। संरचनात्मक [[प्रकार प्रणाली]] के साथ नाममात्र प्रकार प्रणाली विपरीत रहती हैं, जहां इसकी तुलना प्रश्न में प्रकार की संरचना पर आधारित होती है और स्पष्ट घोषणाओं की आवश्यकता नहीं होती है। | ||
== नाममात्र टाइपिंग == | == नाममात्र टाइपिंग == | ||
'''नाममात्र टाइपिंग''' का अर्थ है कि दो वैरियेबल प्रकार संगत रहते हैं और यह तभी रहते हैं जब यह केवल उनकी घोषणाओं का नाम समान प्रकार से रखते हो। उदाहरण के लिए, [[सी (प्रोग्रामिंग भाषा)]] में, दो <code>struct</code> ही अनुवाद इकाई में विभिन्न नामों वाले प्रकारों को कभी भी संगत नहीं माना जाता है, भले ही उनके पास समान फ़ील्ड घोषणाएँ हों या ना हों। | '''नाममात्र टाइपिंग''' का अर्थ है कि दो वैरियेबल प्रकार संगत रहते हैं और यह तभी रहते हैं जब यह केवल उनकी घोषणाओं का नाम समान प्रकार से रखते हो। उदाहरण के लिए, [[सी (प्रोग्रामिंग भाषा)|C (प्रोग्रामिंग भाषा)]] में, दो <code>struct</code> ही अनुवाद इकाई में विभिन्न नामों वाले प्रकारों को कभी भी संगत नहीं माना जाता है, भले ही उनके पास समान फ़ील्ड घोषणाएँ हों या ना हों। | ||
चूंकि, | चूंकि, C भी <code>[[typedef]]</code> घोषणा की अनुमति देता है, जो वर्तमान समय में प्रयोग किए जाने वाले उपनाम का परिचय देती है। ये केवल [[ वाक्य - विन्यास |वाक्य - विन्यास]] हैं और टाइप चेकिंग के उद्देश्य से इसके उपनाम से टाइप को अलग नहीं करते हैं। यह सुविधा, कई भाषाओं में मौजूद है, जिसके परिणामस्वरूप प्रकार की सुरक्षा का हानि हो सकता है (उदाहरण के लिए) ही उत्तम पूर्णांक का उपयोग दो अलग-अलग विधियों से किया जाता है। इस प्रकार [[ हास्केल (प्रोग्रामिंग भाषा) |हास्केल (प्रोग्रामिंग भाषा)]] के रूप में सी-स्टाइल सिंटैक्टिक उपनाम प्रदान करता है तथा मुख्य रूप से <code>type</code> घोषणा, साथ ही <code>newtype</code> घोषणा जो मौजूदा प्रकार के लिए नया, विशिष्ट प्रकार, समरूपता का परिचय देती है।<ref>{{cite web|url=https://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-680004.2|title=Haskell 2010 Report: Declarations and Bindings: User-Defined Datatypes|access-date=2015-06-02|archive-url=https://web.archive.org/web/20170104234441/https://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-680004.2|archive-date=2017-01-04|url-status=dead}}</ref> | ||
== नाममात्र उपप्रकार == | == नाममात्र उपप्रकार == | ||
इसी तरह से '''नाममात्र उपप्रकार''' का अर्थ है कि किसी प्रकार से यह दूसरे का उपप्रकार को प्रदर्शित करें और यह तभी होता हैं जब यह केवल इसकी परिभाषा में स्पष्ट रूप से घोषित किया गया हो। सामान्य रूप से टाइप की गई भाषाएं सामान्यतः उस आवश्यकता को लागू करती हैं जो घोषित उपप्रकार संरचनात्मक रूप से संगत होती हैं (चूंकि [[एफिल (प्रोग्रामिंग भाषा)]] गैर-संगत उपप्रकारों को घोषित करने की अनुमति देती है)। चूंकि, उपप्रकार जो दुर्घटना से संरचनात्मक रूप से संगत हैं, लेकिन उपप्रकार के रूप में घोषित नहीं किए गए हैं, उन्हें उपप्रकार नहीं माना जाता है। | इसी तरह से '''नाममात्र उपप्रकार''' का अर्थ है कि किसी प्रकार से यह दूसरे का उपप्रकार को प्रदर्शित करें और यह तभी होता हैं जब यह केवल इसकी परिभाषा में स्पष्ट रूप से घोषित किया गया हो। सामान्य रूप से टाइप की गई भाषाएं सामान्यतः उस आवश्यकता को लागू करती हैं जो घोषित उपप्रकार संरचनात्मक रूप से संगत होती हैं (चूंकि [[एफिल (प्रोग्रामिंग भाषा)]] गैर-संगत उपप्रकारों को घोषित करने की अनुमति देती है)। चूंकि, उपप्रकार जो दुर्घटना से संरचनात्मक रूप से संगत हैं, लेकिन उपप्रकार के रूप में घोषित नहीं किए गए हैं, उन्हें उपप्रकार नहीं माना जाता है। | ||
[[C | [[C++]], C # (प्रोग्रामिंग लैंग्वेज)या सी#, जावा (प्रोग्रामिंग भाषा), स्टेटमेंट C, [[ डेल्फी (प्रोग्रामिंग भाषा) |डेल्फी (प्रोग्रामिंग भाषा)]], [[ स्विफ्ट (प्रोग्रामिंग भाषा) |स्विफ्ट (प्रोग्रामिंग भाषा)]], जूलिया (प्रोग्रामिंग लैंग्वेज) और [[ जंग (प्रोग्रामिंग भाषा) |गार्बेज (प्रोग्रामिंग भाषा)]] सभी मुख्य रूप से नाममात्र टाइपिंग और नाममात्र उपप्रकार दोनों का उपयोग करते हैं। | ||
कुछ नामांकित-उप-टाइप की गई भाषाएं, जैसे कि जावा और सी#, क्लासेस को ''अंतिम'' (या सी# शब्दावली में ''सीलबंद'') घोषित करने की अनुमति देती हैं, यह दर्शाता है कि आगे कोई उप-टाइपिंग की अनुमति नहीं है। | कुछ नामांकित-उप-टाइप की गई भाषाएं, जैसे कि जावा और सी#, क्लासेस को ''अंतिम'' (या सी# शब्दावली में ''सीलबंद'') घोषित करने की अनुमति देती हैं, यह दर्शाता है कि आगे कोई उप-टाइपिंग की अनुमति नहीं है। |
Revision as of 15:35, 10 March 2023
कंप्यूटर विज्ञान में नाममात्र प्रकार प्रणाली (या नाम-आधारित प्रकार की प्रणाली) होती है, यदि डेटा प्रकार की संगतता और समानता स्पष्ट घोषणाओं और/या प्रकारों के नाम से निर्धारित होती है। नाममात्र प्रणालियों का उपयोग यह निर्धारित करने के लिए किया जाता है कि क्या प्रकार समतुल्य हैं, साथ ही साथ यदि प्रकार दूसरे का उपप्रकार है। संरचनात्मक प्रकार प्रणाली के साथ नाममात्र प्रकार प्रणाली विपरीत रहती हैं, जहां इसकी तुलना प्रश्न में प्रकार की संरचना पर आधारित होती है और स्पष्ट घोषणाओं की आवश्यकता नहीं होती है।
नाममात्र टाइपिंग
नाममात्र टाइपिंग का अर्थ है कि दो वैरियेबल प्रकार संगत रहते हैं और यह तभी रहते हैं जब यह केवल उनकी घोषणाओं का नाम समान प्रकार से रखते हो। उदाहरण के लिए, C (प्रोग्रामिंग भाषा) में, दो struct
ही अनुवाद इकाई में विभिन्न नामों वाले प्रकारों को कभी भी संगत नहीं माना जाता है, भले ही उनके पास समान फ़ील्ड घोषणाएँ हों या ना हों।
चूंकि, C भी typedef
घोषणा की अनुमति देता है, जो वर्तमान समय में प्रयोग किए जाने वाले उपनाम का परिचय देती है। ये केवल वाक्य - विन्यास हैं और टाइप चेकिंग के उद्देश्य से इसके उपनाम से टाइप को अलग नहीं करते हैं। यह सुविधा, कई भाषाओं में मौजूद है, जिसके परिणामस्वरूप प्रकार की सुरक्षा का हानि हो सकता है (उदाहरण के लिए) ही उत्तम पूर्णांक का उपयोग दो अलग-अलग विधियों से किया जाता है। इस प्रकार हास्केल (प्रोग्रामिंग भाषा) के रूप में सी-स्टाइल सिंटैक्टिक उपनाम प्रदान करता है तथा मुख्य रूप से type
घोषणा, साथ ही newtype
घोषणा जो मौजूदा प्रकार के लिए नया, विशिष्ट प्रकार, समरूपता का परिचय देती है।[1]
नाममात्र उपप्रकार
इसी तरह से नाममात्र उपप्रकार का अर्थ है कि किसी प्रकार से यह दूसरे का उपप्रकार को प्रदर्शित करें और यह तभी होता हैं जब यह केवल इसकी परिभाषा में स्पष्ट रूप से घोषित किया गया हो। सामान्य रूप से टाइप की गई भाषाएं सामान्यतः उस आवश्यकता को लागू करती हैं जो घोषित उपप्रकार संरचनात्मक रूप से संगत होती हैं (चूंकि एफिल (प्रोग्रामिंग भाषा) गैर-संगत उपप्रकारों को घोषित करने की अनुमति देती है)। चूंकि, उपप्रकार जो दुर्घटना से संरचनात्मक रूप से संगत हैं, लेकिन उपप्रकार के रूप में घोषित नहीं किए गए हैं, उन्हें उपप्रकार नहीं माना जाता है।
C++, C # (प्रोग्रामिंग लैंग्वेज)या सी#, जावा (प्रोग्रामिंग भाषा), स्टेटमेंट C, डेल्फी (प्रोग्रामिंग भाषा), स्विफ्ट (प्रोग्रामिंग भाषा), जूलिया (प्रोग्रामिंग लैंग्वेज) और गार्बेज (प्रोग्रामिंग भाषा) सभी मुख्य रूप से नाममात्र टाइपिंग और नाममात्र उपप्रकार दोनों का उपयोग करते हैं।
कुछ नामांकित-उप-टाइप की गई भाषाएं, जैसे कि जावा और सी#, क्लासेस को अंतिम (या सी# शब्दावली में सीलबंद) घोषित करने की अनुमति देती हैं, यह दर्शाता है कि आगे कोई उप-टाइपिंग की अनुमति नहीं है।
तुलना
इस प्रकार आकस्मिक प्रकार की समानता को रोकने के लिए नाममात्र टाइपिंग उपयोगी है, जो संरचनात्मक टाइपिंग की तुलना में उत्तम प्रकार की सुरक्षा की अनुमति देता है। इसकी लागत कम होती है, उदाहरण के लिए नाममात्र टाइपिंग वर्तमान समय में उपप्रकारों के संशोधन के बिना नए सुपर-प्रकारों को बनाने की अनुमति नहीं देती है।
यह भी देखें
- संरचनात्मक प्रकार प्रणाली
- सार प्रकार
- टाइप प्रणाली
संदर्भ
- ↑ "Haskell 2010 Report: Declarations and Bindings: User-Defined Datatypes". Archived from the original on 2017-01-04. Retrieved 2015-06-02.
स्रोत
- Pierce, Benjamin C. (2002). "§19.3 Nominal and Structural Type Systems". प्रकार और प्रोग्रामिंग भाषाएं. MIT Press. pp. 253–. ISBN 0-262-16209-1.