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

From Vigyanwiki
Line 57: Line 57:
[[Category: Machine Translated Page]]
[[Category: Machine Translated Page]]
[[Category:Created On 25/07/2023]]
[[Category:Created On 25/07/2023]]
[[Category:Vigyan Ready]]

Revision as of 17:43, 9 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.


बाहरी संबंध