शून्य प्रकार

From alpha
Jump to navigation Jump to search

कार्यात्मक प्रोग्रामिंग भाषाएं और Algol68 से प्राप्त घुंघराले ब्रैकेट प्रोग्रामिंग भाषा में शून्य प्रकार, एक फ़ंक्शन (कंप्यूटर साइंस) का रिटर्न प्रकार है, जो सामान्य रूप से रिटर्न स्टेटमेंट देता है, लेकिन इसके कॉलर को परिणाम मूल्य प्रदान नहीं करता है। आमतौर पर ऐसे कार्यों को उनके साइड इफेक्ट (कंप्यूटर विज्ञान) के लिए कहा जाता है, जैसे कि कुछ कार्य करना या उनके आउटपुट मापदंडों को लिखना। इस तरह के संदर्भ में शून्य प्रकार का उपयोग पास्कल प्रोग्रामिंग भाषा में प्रक्रिया (कंप्यूटर विज्ञान) और सिंटैक्टिक निर्माणों से तुलनीय है जो मूल दृश्य में सबरूटीन्स को परिभाषित करता है। यह कार्यात्मक प्रोग्रामिंग भाषाओं और प्रकार सिद्धांत में प्रयुक्त इकाई प्रकार के समान भी है। तुलना के लिए यूनिट प्रकार सी प्रोग्रामिंग भाषा में देखें।

सी और सी ++ भी सूचक को शून्य प्रकार का समर्थन करते हैं (जैसा निर्दिष्ट किया गया है void *), लेकिन यह एक असंबंधित धारणा है। इस प्रकार के चर एक अनिर्दिष्ट प्रकार के डेटा के सूचक (कंप्यूटर प्रोग्रामिंग) हैं, इसलिए इस संदर्भ में (लेकिन अन्य नहीं) void * लगभग एक सार्वभौमिक या शीर्ष प्रकार की तरह कार्य करता है। एक प्रोग्राम एक पॉइंटर को किसी भी प्रकार के डेटा (समारोह सूचक को छोड़कर) को एक पॉइंटर में परिवर्तित कर सकता है और बिना जानकारी खोए मूल प्रकार में वापस आ सकता है, जो इन पॉइंटर्स को बहुरूपता (कंप्यूटर विज्ञान) कार्यों के लिए उपयोगी बनाता है। C भाषा मानक इस बात की गारंटी नहीं देता है कि विभिन्न पॉइंटर प्रकारों का आकार या संरेखण समान है।

== सी और सी ++ == में शून्य परिणाम प्रकार वाला एक फ़ंक्शन या तो फ़ंक्शन के अंत तक पहुंचकर समाप्त होता है या रिटर्न स्टेटमेंट को बिना रिटर्न वैल्यू के निष्पादित करता है। फ़ंक्शन प्रोटोटाइप के पैरामीटर (कंप्यूटर प्रोग्रामिंग) को यह इंगित करने के लिए शून्य प्रकार भी बदल सकता है कि फ़ंक्शन कोई तर्क नहीं लेता है। ध्यान दें कि इन सभी स्थितियों में, शून्य किसी भी मूल्य पर टाइप क्वालीफायर नहीं है। नाम के बावजूद, यह सिमेंटिक रूप से एक निहित इकाई प्रकार के समान है, न कि शून्य या निचला प्रकार (जिसे कभी-कभी भ्रमित रूप से शून्य प्रकार कहा जाता है)। एक वास्तविक इकाई प्रकार के विपरीत जो एक सिंगलटन है, शून्य प्रकार में इसके मूल्य का प्रतिनिधित्व करने का कोई तरीका नहीं है और भाषा किसी वस्तु को घोषित करने या प्रकार के साथ मूल्य का प्रतिनिधित्व करने का कोई तरीका प्रदान नहीं करती है void.

सी के शुरुआती संस्करणों में, बिना किसी विशिष्ट परिणाम वाले फ़ंक्शन रिटर्न प्रकार के लिए डिफ़ॉल्ट होते हैं int और बिना तर्क वाले कार्यों में केवल खाली तर्क सूचियाँ थीं। अनटाइप्ड डेटा के पॉइंटर्स को पूर्णांक या पॉइंटर्स के रूप में घोषित किया गया था char. कुछ शुरुआती सी संकलक ्स में सुविधा थी, जिसे अब किसी फ़ंक्शन कॉल पर चेतावनी उत्पन्न करने के लिए परेशानी के रूप में देखा जाता है, जो फ़ंक्शन के लौटाए गए मान का उपयोग नहीं करता था। पुराना कोड कभी-कभी इस चेतावनी को दबाने के लिए रूपांतरण टाइप करता है जैसे फ़ंक्शन शून्य को कॉल करता है। 1979-1980 में जब बज़्ने स्ट्रॉस्ट्रुप ने C++ पर अपना काम शुरू किया,[citation needed] शून्य और शून्य संकेत एटी एंड टी-व्युत्पन्न संकलक द्वारा समर्थित सी भाषा बोली का हिस्सा थे।[1] किसी फ़ंक्शन प्रोटोटाइप में बिना किसी तर्क के शून्य बनाम का स्पष्ट उपयोग सी और सी ++ में अलग-अलग शब्दार्थ है, जैसा कि निम्न तालिका में विस्तृत है:[2]

C C++ equivalent
void f(void); void f(); (preferred)
void f(void);
void f(); (accepts a constant but unknown number of arguments) template <typename... Ts> void f(Ts... ts) {}

(not strictly equivalent)

एसी प्रोटोटाइप कोई तर्क नहीं ले रहा है, उदा। void f() ऊपर, C99 में बहिष्कृत कर दिया गया है,[3] हालाँकि।

हास्केल में

सी ++ के विपरीत, कार्यात्मक प्रोग्रामिंग भाषा हास्केल (प्रोग्रामिंग भाषा) में शून्य प्रकार खाली प्रकार को दर्शाता है, जिसमें कोई निवासी नहीं है [1]। शून्य प्रकार में एक फ़ंक्शन परिणाम नहीं लौटाता है, और टाइप सिग्नेचर वाला एक साइड-इफेक्टफुल प्रोग्राम है IO Void समाप्त नहीं होता, या दुर्घटनाग्रस्त हो जाता है। विशेष रूप से, शून्य प्रकार में कुल कार्य नहीं होते हैं।

संदर्भ

  1. Ritchie, Dennis M. (1993). "सी लैंग्वेज का विकास". Association for Computing Machinery, Inc. via the author and Lucent Technologies Inc. 1996. Archived from the original on 1998-02-20.
  2. Stroustrup, Bjarne (2009). Programming: Principles and Practice Using C++. Boston: Addison-Wesley. p. 996. ISBN 978-0-321-54372-1.
  3. Bjarne Stroustrup, C and C++: Case Studies in Compatibility. Reconcilable differences? You decide, Dr. Dobb's, September 01, 2002; print version