मैनिफ़ेस्ट टाइपिंग: Difference between revisions
(Created page with "{{Type systems}} कंप्यूटर विज्ञान में, मेनिफेस्ट टाइपिंग सॉफ़्टवेयर प्रोग...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{Type systems}} | {{Type systems}} | ||
कंप्यूटर विज्ञान में | कंप्यूटर विज्ञान में '''मैनिफ़ेस्ट टाइपिंग''' [[सॉफ़्टवेयर प्रोग्राम|सॉफ़्टवेयर प्रोग्रामर]] द्वारा डिक्लेयर किए जा रहे प्रत्येक वैरिएबल के टाइप का स्पष्ट अभिनिर्धारण है। उदाहरण के लिए: यदि वेरिएबल X पूर्णांको (इंटीजर्स) को संग्रहीत करने जा रहा है तो उसके टाइप को पूर्णांक के रूप में डिक्लेयर किया जाना चाहिए। ऑब्जेक्ट की स्टेटिक कंपाइल टाइम टाइप की सदस्यता तथा उसके रन-टाइम टाइप की पहचान के मध्य अंतर का वर्णन करने के लिए शब्द "मैनिफेस्ट टाइपिंग" का उपयोग प्रायः लैटेंट टाइपिंग शब्द के साथ किया जाता है। | ||
इसके विपरीत, कुछ प्रोग्रामिंग | इसके विपरीत, कुछ प्रोग्रामिंग लैंग्वेज अंतर्निहित टाइपिंग (उर्फ प्रकार अनुमान) का उपयोग करती हैं, जहां कंपाइल टाइम पर कॉन्टेक्स्ट से टाइप का अनुमान लगाया जाता है या डायनेमिक टाइपिंग की अनुमति दी जाती है जिसमें वैरिएबल को डिक्लेयर किया जाता है तथा रनटाइम पर किसी भी टाइप का मान निर्दिष्ट किया जा सकता है। | ||
==उदाहरण== | ==उदाहरण== | ||
C | C प्रोग्रामिंग लैंग्वेज में लिखे गए निम्नलिखित उदाहरण पर विचार करें: | ||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
#include <stdio.h> | #include <stdio.h> | ||
Line 18: | Line 18: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
वेरिएबल्स s, x, और y को क्रमशः एक कैरेक्टर ऐरे, फ़्लोटिंग पॉइंट नंबर और एक | वेरिएबल्स 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> को अस्वीकार कर देगा। | ||
==संदर्भ== | ==संदर्भ== |
Revision as of 19:56, 2 August 2023
Type systems |
---|
General concepts |
Major categories |
|
Minor categories |
कंप्यूटर विज्ञान में मैनिफ़ेस्ट टाइपिंग सॉफ़्टवेयर प्रोग्रामर द्वारा डिक्लेयर किए जा रहे प्रत्येक वैरिएबल के टाइप का स्पष्ट अभिनिर्धारण है। उदाहरण के लिए: यदि वेरिएबल 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
को अस्वीकार कर देगा।
संदर्भ
- ↑ "WG14-N3007 : Type inference for object definitions". open-std.org. 2022-06-10. Archived from the original on December 24, 2022.