नाममात्र प्रकार प्रणाली: Difference between revisions

From Vigyanwiki
(Created page with "{{Type systems}} कंप्यूटर विज्ञान में, एक प्रकार की प्रणाली एक नाममात्र या...")
 
No edit summary
Line 1: Line 1:
{{Type systems}}
{{Type systems}}
[[कंप्यूटर विज्ञान]] में, एक प्रकार की प्रणाली एक नाममात्र या नाममात्र प्रकार की प्रणाली (या नाम-आधारित प्रकार की प्रणाली) होती है, यदि [[डेटा प्रकार]]ों की संगतता और समानता स्पष्ट घोषणाओं और/या प्रकारों के नाम से निर्धारित होती है। नाममात्र प्रणालियों का उपयोग यह निर्धारित करने के लिए किया जाता है कि क्या प्रकार समतुल्य हैं, साथ ही साथ यदि एक प्रकार दूसरे का उपप्रकार है। [[ संरचनात्मक [[प्रकार प्रणाली]] ]] के साथ नाममात्र प्रकार के सिस्टम विपरीत हैं, जहां तुलना प्रश्न में प्रकार की संरचना पर आधारित होती है और स्पष्ट घोषणाओं की आवश्यकता नहीं होती है।
[[कंप्यूटर विज्ञान]] में, प्रकार की प्रणाली नाममात्र या नाममात्र प्रकार की प्रणाली (या नाम-आधारित प्रकार की प्रणाली) होती है, यदि [[डेटा प्रकार]] की संगतता और समानता स्पष्ट घोषणाओं और/या प्रकारों के नाम से निर्धारित होती है। नाममात्र प्रणालियों का उपयोग यह निर्धारित करने के लिए किया जाता है कि क्या प्रकार समतुल्य हैं, साथ ही साथ यदि प्रकार दूसरे का उपप्रकार है। [[ संरचनात्मक [[प्रकार प्रणाली]] ]] के साथ नाममात्र प्रकार के सिस्टम विपरीत हैं, जहां तुलना प्रश्न में प्रकार की संरचना पर आधारित होती है और स्पष्ट घोषणाओं की आवश्यकता नहीं होती है।


== नाममात्र टाइपिंग ==
== नाममात्र टाइपिंग ==


नाममात्र टाइपिंग का अर्थ है कि दो चर प्रकार-संगत हैं यदि और केवल तभी जब उनकी घोषणाओं का नाम समान प्रकार हो। उदाहरण के लिए, [[सी (प्रोग्रामिंग भाषा)]] में, दो <code>struct</code> एक ही अनुवाद इकाई में विभिन्न नामों वाले प्रकारों को कभी भी संगत नहीं माना जाता है, भले ही उनके पास समान फ़ील्ड घोषणाएँ हों।
नाममात्र टाइपिंग का अर्थ है कि दो चर प्रकार-संगत हैं यदि और केवल तभी जब उनकी घोषणाओं का नाम समान प्रकार हो। उदाहरण के लिए, [[सी (प्रोग्रामिंग भाषा)]] में, दो <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 भी अनुमति देता है <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 Sharp (प्रोग्रामिंग लैंग्वेज)|C#, Java (प्रोग्रामिंग लैंग्वेज), [[ उद्देश्य सी ]], [[ डेल्फी (प्रोग्रामिंग भाषा) ]], [[ स्विफ्ट (प्रोग्रामिंग भाषा) ]], जूलिया (प्रोग्रामिंग लैंग्वेज) और [[ जंग (प्रोग्रामिंग भाषा) ]] सभी मुख्य रूप से नाममात्र टाइपिंग दोनों का उपयोग करते हैं और नाममात्र उपप्रकार।
[[C++]], C Sharp (प्रोग्रामिंग लैंग्वेज)|C#, Java (प्रोग्रामिंग लैंग्वेज), [[ उद्देश्य सी |उद्देश्य सी]] , [[ डेल्फी (प्रोग्रामिंग भाषा) |डेल्फी (प्रोग्रामिंग भाषा)]] , [[ स्विफ्ट (प्रोग्रामिंग भाषा) |स्विफ्ट (प्रोग्रामिंग भाषा)]] , जूलिया (प्रोग्रामिंग लैंग्वेज) और [[ जंग (प्रोग्रामिंग भाषा) |जंग (प्रोग्रामिंग भाषा)]] सभी मुख्य रूप से नाममात्र टाइपिंग दोनों का उपयोग करते हैं और नाममात्र उपप्रकार।


कुछ नामांकित-उप-टाइप की गई भाषाएं, जैसे कि जावा और सी#, कक्षाओं को ''अंतिम'' (या सी# शब्दावली में ''सीलबंद'') घोषित करने की अनुमति देती हैं, यह दर्शाता है कि आगे कोई उप-टाइपिंग की अनुमति नहीं है।
कुछ नामांकित-उप-टाइप की गई भाषाएं, जैसे कि जावा और सी#, कक्षाओं को ''अंतिम'' (या सी# शब्दावली में ''सीलबंद'') घोषित करने की अनुमति देती हैं, यह दर्शाता है कि आगे कोई उप-टाइपिंग की अनुमति नहीं है।
Line 19: Line 17:
== तुलना ==
== तुलना ==


आकस्मिक प्रकार की समानता को रोकने के लिए नाममात्र टाइपिंग उपयोगी है, जो संरचनात्मक टाइपिंग की तुलना में बेहतर प्रकार-सुरक्षा की अनुमति देता है। लागत एक कम लचीलापन है, उदाहरण के लिए, नाममात्र टाइपिंग मौजूदा उपप्रकारों के संशोधन के बिना नए सुपर-प्रकारों को बनाने की अनुमति नहीं देती है।
आकस्मिक प्रकार की समानता को रोकने के लिए नाममात्र टाइपिंग उपयोगी है, जो संरचनात्मक टाइपिंग की तुलना में बेहतर प्रकार-सुरक्षा की अनुमति देता है। लागत कम लचीलापन है, उदाहरण के लिए, नाममात्र टाइपिंग मौजूदा उपप्रकारों के संशोधन के बिना नए सुपर-प्रकारों को बनाने की अनुमति नहीं देती है।


== यह भी देखें ==
== यह भी देखें ==
Line 28: Line 26:
==संदर्भ==
==संदर्भ==
{{Reflist}}
{{Reflist}}
== स्रोत ==
== स्रोत ==
* {{cite book |last=Pierce |first=Benjamin C. |authorlink=Benjamin C. Pierce |title=[[प्रकार और प्रोग्रामिंग भाषाएं]]|year=2002 |publisher=[[MIT Press]] |isbn=0-262-16209-1 |chapter=§19.3 Nominal and Structural Type Systems |pages=253–}}
* {{cite book |last=Pierce |first=Benjamin C. |authorlink=Benjamin C. Pierce |title=[[प्रकार और प्रोग्रामिंग भाषाएं]]|year=2002 |publisher=[[MIT Press]] |isbn=0-262-16209-1 |chapter=§19.3 Nominal and Structural Type Systems |pages=253–}}

Revision as of 23:08, 7 March 2023

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

नाममात्र टाइपिंग

नाममात्र टाइपिंग का अर्थ है कि दो चर प्रकार-संगत हैं यदि और केवल तभी जब उनकी घोषणाओं का नाम समान प्रकार हो। उदाहरण के लिए, सी (प्रोग्रामिंग भाषा) में, दो struct ही अनुवाद इकाई में विभिन्न नामों वाले प्रकारों को कभी भी संगत नहीं माना जाता है, भले ही उनके पास समान फ़ील्ड घोषणाएँ हों।

हालाँकि, C भी अनुमति देता है typedef घोषणा, जो मौजूदा प्रकार के लिए उपनाम का परिचय देती है। ये केवल वाक्य - विन्यास हैं और टाइप चेकिंग के उद्देश्य से इसके उपनाम से टाइप को अलग नहीं करते हैं। यह सुविधा, कई भाषाओं में मौजूद है, जिसके परिणामस्वरूप प्रकार की सुरक्षा का नुकसान हो सकता है (उदाहरण के लिए) ही आदिम पूर्णांक प्रकार का उपयोग दो अलग-अलग तरीकों से किया जाता है। हास्केल (प्रोग्रामिंग भाषा) के रूप में सी-स्टाइल सिंटैक्टिक उपनाम प्रदान करता है type घोषणा, साथ ही newtype घोषणा जो मौजूदा प्रकार के लिए नया, विशिष्ट प्रकार, समरूपता का परिचय देती है।[1]

नाममात्र उपप्रकार

इसी तरह से, नाममात्र उपप्रकार का अर्थ है कि प्रकार दूसरे का उप प्रकार है अगर और केवल तभी इसकी परिभाषा में स्पष्ट रूप से घोषित किया गया हो। सामान्य रूप से टाइप की गई भाषाएं आमतौर पर उस आवश्यकता को लागू करती हैं जो घोषित उपप्रकार संरचनात्मक रूप से संगत होती हैं (हालांकि एफिल (प्रोग्रामिंग भाषा) गैर-संगत उपप्रकारों को घोषित करने की अनुमति देती है)। हालांकि, उपप्रकार जो दुर्घटना से संरचनात्मक रूप से संगत हैं, लेकिन उपप्रकार के रूप में घोषित नहीं किए गए हैं, उन्हें उपप्रकार नहीं माना जाता है।

C++, C Sharp (प्रोग्रामिंग लैंग्वेज)|C#, Java (प्रोग्रामिंग लैंग्वेज), उद्देश्य सी , डेल्फी (प्रोग्रामिंग भाषा) , स्विफ्ट (प्रोग्रामिंग भाषा) , जूलिया (प्रोग्रामिंग लैंग्वेज) और जंग (प्रोग्रामिंग भाषा) सभी मुख्य रूप से नाममात्र टाइपिंग दोनों का उपयोग करते हैं और नाममात्र उपप्रकार।

कुछ नामांकित-उप-टाइप की गई भाषाएं, जैसे कि जावा और सी#, कक्षाओं को अंतिम (या सी# शब्दावली में सीलबंद) घोषित करने की अनुमति देती हैं, यह दर्शाता है कि आगे कोई उप-टाइपिंग की अनुमति नहीं है।

तुलना

आकस्मिक प्रकार की समानता को रोकने के लिए नाममात्र टाइपिंग उपयोगी है, जो संरचनात्मक टाइपिंग की तुलना में बेहतर प्रकार-सुरक्षा की अनुमति देता है। लागत कम लचीलापन है, उदाहरण के लिए, नाममात्र टाइपिंग मौजूदा उपप्रकारों के संशोधन के बिना नए सुपर-प्रकारों को बनाने की अनुमति नहीं देती है।

यह भी देखें

संदर्भ

  1. "Haskell 2010 Report: Declarations and Bindings: User-Defined Datatypes". Archived from the original on 2017-01-04. Retrieved 2015-06-02.

स्रोत

बाहरी संबंध