मैनिफ़ेस्ट टाइपिंग: Difference between revisions

From Vigyanwiki
(Created page with "{{Type systems}} कंप्यूटर विज्ञान में, मेनिफेस्ट टाइपिंग सॉफ़्टवेयर प्रोग...")
 
No edit summary
Line 1: Line 1:
{{Type systems}}
{{Type systems}}
कंप्यूटर विज्ञान में, मेनिफेस्ट टाइपिंग [[सॉफ़्टवेयर प्रोग्राम]]द्वारा घोषित किए जा रहे प्रत्येक चर के ''प्रकार'' की स्पष्ट पहचान है। उदाहरण के लिए: यदि वेरिएबल ''X'' पूर्णांकों को संग्रहीत करने जा रहा है तो उसके ''प्रकार'' को पूर्णांक के रूप में घोषित किया जाना चाहिए। मेनिफेस्ट टाइपिंग शब्द का उपयोग अक्सर [[ स्थैतिक चर ]], [[ संकलन का समय ]]|ऑब्जेक्ट की कंपाइल-टाइम प्रकार की सदस्यता और उसके रन टाइम (प्रोग्राम जीवनचक्र चरण)|रन-टाइम प्रकार की पहचान के बीच अंतर का वर्णन करने के लिए [[अव्यक्त टाइपिंग]] शब्द के साथ किया जाता है।
कंप्यूटर विज्ञान में '''मैनिफ़ेस्ट टाइपिंग''' [[सॉफ़्टवेयर प्रोग्राम|सॉफ़्टवेयर प्रोग्रामर]] द्वारा डिक्लेयर किए जा रहे प्रत्येक वैरिएबल के टाइप का स्पष्ट अभिनिर्धारण है। उदाहरण के लिए: यदि वेरिएबल X पूर्णांको (इंटीजर्स) को संग्रहीत करने जा रहा है तो उसके टाइप को पूर्णांक के रूप में डिक्लेयर किया जाना चाहिए। ऑब्जेक्ट की स्टेटिक कंपाइल टाइम टाइप की सदस्यता तथा उसके रन-टाइम टाइप की पहचान के मध्य अंतर का वर्णन करने के लिए शब्द "मैनिफेस्ट टाइपिंग" का उपयोग प्रायः लैटेंट टाइपिंग शब्द के साथ किया जाता है।


इसके विपरीत, कुछ प्रोग्रामिंग भाषाएं ''अंतर्निहित टाइपिंग'' (उर्फ प्रकार का अनुमान) का उपयोग करती हैं, जहां संकलन-समय पर संदर्भ से प्रकार का अनुमान लगाया जाता है या टाइप_सिस्टम # डायनामिक_टाइपिंग के लिए अनुमति दी जाती है, जिसमें चर को अभी घोषित किया जाता है और रनटाइम पर किसी भी प्रकार का मान निर्दिष्ट किया जा सकता है।
इसके विपरीत, कुछ प्रोग्रामिंग लैंग्वेज अंतर्निहित टाइपिंग (उर्फ प्रकार अनुमान) का उपयोग करती हैं, जहां कंपाइल टाइम पर कॉन्टेक्स्ट से टाइप का अनुमान लगाया जाता है या डायनेमिक टाइपिंग की अनुमति दी जाती है जिसमें वैरिएबल को डिक्लेयर किया जाता है तथा रनटाइम पर किसी भी टाइप का मान निर्दिष्ट किया जा सकता है।


==उदाहरण==
==उदाहरण==
C (प्रोग्रामिंग भाषा) में लिखे गए निम्नलिखित उदाहरण पर विचार करें:
C प्रोग्रामिंग लैंग्वेज में लिखे गए निम्नलिखित उदाहरण पर विचार करें:
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
#include <stdio.h>
#include <stdio.h>
Line 18: Line 18:
}
}
</syntaxhighlight>
</syntaxhighlight>
वेरिएबल्स s, x, और y को क्रमशः एक कैरेक्टर ऐरे, फ़्लोटिंग पॉइंट नंबर और एक पूर्णांक के रूप में घोषित किया गया था। टाइप सिस्टम, संकलन-समय पर, एस और एक्स को जोड़ने की कोशिश जैसी भ्रांतियों को खारिज कर देता है। [[C23 (C मानक संशोधन)]] के बाद से, टाइप अनुमान का उपयोग C में कीवर्ड के साथ किया जा सकता है <code>auto</code>.<ref name="N3007">{{cite web |title=WG14-N3007 : Type inference for object definitions |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3007.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221224105654/https://open-std.org/JTC1/SC22/WG14/www/docs/n3007.htm |archive-date=December 24, 2022 |date=2022-06-10 |url-status=live}}</ref> उस सुविधा का उपयोग करते हुए, पिछला उदाहरण बन सकता है:
वेरिएबल्स s,x, और y को क्रमशः एक कैरेक्टर ऐरे, फ़्लोटिंग पॉइंट नंबर और एक इंटीजर के रूप में डिक्लेयर किया गया था। टाइप सिस्टम कपिल-टाइम पर एस और एक्स जोड़ने की कोशिश जैसी भ्रांतियों को अस्वीकृत कर देता है। चूँकि [[C23 (C मानक संशोधन)]] टाइप इन्फेरेंस का उपयोग C में कीवर्ड <code>auto</code>के साथ किया जा सकता है।<ref name="N3007">{{cite web |title=WG14-N3007 : Type inference for object definitions |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3007.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221224105654/https://open-std.org/JTC1/SC22/WG14/www/docs/n3007.htm |archive-date=December 24, 2022 |date=2022-06-10 |url-status=live}}</ref> उस सुविधा का उपयोग करते हुए, पूर्ववर्ती उदाहरण बन सकता है:
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
#include <stdio.h>
#include <stdio.h>
Line 32: Line 32:
}
}
</syntaxhighlight>
</syntaxhighlight>
दूसरे उदाहरण के समान, [[मानक एमएल]] में, प्रकारों को स्पष्ट रूप से घोषित करने की आवश्यकता नहीं है। इसके बजाय, प्रकार निर्दिष्ट अभिव्यक्ति के प्रकार से निर्धारित होता है।
इसी प्रकार [[मानक एमएल|स्टैंडर्ड एमएल]] में दूसरे उदाहरण के टाइप को स्पष्ट रूप से डिक्लेयर करने की आवश्यकता नहीं है। इसके स्थान पर टाइप के टाइप से निर्धारित होता है।
<syntaxhighlight lang="sml">
<syntaxhighlight lang="sml">
let val s = "Test String"
let val s = "Test String"
Line 40: Line 40:
end
end
</syntaxhighlight>
</syntaxhighlight>
इस प्रोग्राम में कोई प्रकट प्रकार नहीं हैं, लेकिन कंपाइलर अभी भी प्रकारों का अनुमान लगाता है <code>string</code>, <code>real</code> और <code>int</code> उनके लिए, और अभिव्यक्ति को अस्वीकार कर देंगे <code>s+x</code> संकलन-समय त्रुटि के रूप में।
इस प्रोग्राम में कोई मैनिफ़ेस्ट टाइप नहीं हैं, किन्तु कंपाइलर अभी भी उनके लिए <code>string</code>, <code>real</code> और <code>int</code> टाइप का अनुमान लगाता है तथा कंपाइल-टाइम एरर के रूप में एक्सप्रेशन <code>s+x</code> को अस्वीकार कर देगा।


==संदर्भ==
==संदर्भ==

Revision as of 19:56, 2 August 2023

कंप्यूटर विज्ञान में मैनिफ़ेस्ट टाइपिंग सॉफ़्टवेयर प्रोग्रामर द्वारा डिक्लेयर किए जा रहे प्रत्येक वैरिएबल के टाइप का स्पष्ट अभिनिर्धारण है। उदाहरण के लिए: यदि वेरिएबल X पूर्णांको (इंटीजर्स) को संग्रहीत करने जा रहा है तो उसके टाइप को पूर्णांक के रूप में डिक्लेयर किया जाना चाहिए। ऑब्जेक्ट की स्टेटिक कंपाइल टाइम टाइप की सदस्यता तथा उसके रन-टाइम टाइप की पहचान के मध्य अंतर का वर्णन करने के लिए शब्द "मैनिफेस्ट टाइपिंग" का उपयोग प्रायः लैटेंट टाइपिंग शब्द के साथ किया जाता है।

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

उदाहरण

C प्रोग्रामिंग लैंग्वेज में लिखे गए निम्नलिखित उदाहरण पर विचार करें:

#include <stdio.h>

int main(void) {
    char s[] = "Test String";
    float x = 0.0f;
    int y = 0;

    printf("Hello, World!\n");
    return 0;
}

वेरिएबल्स s,x, और y को क्रमशः एक कैरेक्टर ऐरे, फ़्लोटिंग पॉइंट नंबर और एक इंटीजर के रूप में डिक्लेयर किया गया था। टाइप सिस्टम कपिल-टाइम पर एस और एक्स जोड़ने की कोशिश जैसी भ्रांतियों को अस्वीकृत कर देता है। चूँकि C23 (C मानक संशोधन) टाइप इन्फेरेंस का उपयोग C में कीवर्ड autoके साथ किया जा सकता है।[1] उस सुविधा का उपयोग करते हुए, पूर्ववर्ती उदाहरण बन सकता है:

#include <stdio.h>

int main(void) {
    char s[] = "Test String"; 
    // auto s = "Test String"; is instead equivalent to char* s = "Test String";
    auto x = 0.0f;
    auto y = 0;

    printf("Hello, World!\n");
    return 0;
}

इसी प्रकार स्टैंडर्ड एमएल में दूसरे उदाहरण के टाइप को स्पष्ट रूप से डिक्लेयर करने की आवश्यकता नहीं है। इसके स्थान पर टाइप के टाइप से निर्धारित होता है।

let val s = "Test String"
    val x = 0.0
    val y = 0
in print "Hello, World!\n"
end

इस प्रोग्राम में कोई मैनिफ़ेस्ट टाइप नहीं हैं, किन्तु कंपाइलर अभी भी उनके लिए string, real और int टाइप का अनुमान लगाता है तथा कंपाइल-टाइम एरर के रूप में एक्सप्रेशन s+x को अस्वीकार कर देगा।

संदर्भ

  1. "WG14-N3007 : Type inference for object definitions". open-std.org. 2022-06-10. Archived from the original on December 24, 2022.


बाहरी संबंध