डेक्लेरेशन (कंप्यूटर प्रोग्रामिंग)
This article may require cleanup to meet Wikipedia's quality standards. The specific problem is: Too many examples of unclear relevancy; not enough references; problematic mentions of header files and multiple declarations. (December 2013) (Learn how and when to remove this template message) |
कंप्यूटर प्रोग्रामिंग में, डेक्लेरेशन एक लैंग्वेज निर्माण के रूप में होती है, जो आइडेंटिफायर (कंप्यूटर प्रोग्रामिंग) गुणों को निर्दिष्ट करती है यह एक शब्द आइडेंटिफायर का अर्थ घोषित करता है।[1] डिक्लेरेशन का सबसे अधिक उपयोग सबरूटीन, चर (कंप्यूटर विज्ञान), कॉन्सटेंट कंप्यूटर प्रोग्रामिंग और क्लासेस (कंप्यूटर प्रोग्रामिंग) के लिए किया जाता है, लेकिन अन्य संस्थाओं जैसे एन्यूमरेटर कंप्यूटर साइंस और टाइप डेफिनिशन के लिए भी उपयोग किया जा सकता है।[1] नाम से परे आइडेंटिफायर स्वयं आइडेंटिफायर रूप में होते है और इकाई प्रकार्य, चर, आदि का डेक्लेरेशन सामान्यतया डेटा प्रकार चर और स्थिरांक के लिए या डेटा प्रकार के हस्ताक्षर फलन के लिए निर्दिष्ट करती हैं, डेटा प्रकारों में आयाम भी सम्मलित होते हैं, जैसे कि डेटा संरचनाओं को व्यवस्थित रूप में करना होता है। कम्पाइलर को इकाई के अस्तित्व की डेक्लेरेशन करने के लिए एक डेक्लेरेशन का उपयोग किया जाता है; यह उन दृढ़ता से टाइप की गई लैंग्वेज में महत्वपूर्ण रूप में होती है, जिनके लिए फ़ंक्शन, चर और स्थिरांक की आवश्यकता होती है और उनके डेटा प्रकार उपयोग से पहले एक डेक्लेरेशन के साथ निर्दिष्ट किए जाते हैं और आगे की डेक्लेरेशन में उपयोग किया जाता है।[2] शब्द डेक्लेरेशन शब्द की परिलैंग्वेज के साथ अधिकांशतः विपरीत रूप में होता है,[1] लेकिन अर्थ और उपयोग लैंग्वेज के बीच महत्वपूर्ण रूप से भिन्न होते हैं, जो हम नीचे देख सकते है।
अल्गोल ट्रैडिशनल लैंग्वेज में डेक्लेरेशन विशेष रूप से प्रमुख रूप में होती है, जिनमें बीसीपीएल फॅमिली सबसे प्रमुख रूप से सी प्रोग्रामिंग लैंग्वेज और सी ++, और पास्कल प्रोग्रामिंग लैंग्वेज के रूप में सम्मलित होती है। जावा (प्रोग्रामिंग लैंग्वेज) शब्द डेक्लेरेशन का उपयोग करता है, चूंकि जावा को भिन्न -भिन्न डेक्लेरेशन और परिभाषाओं की आवश्यकता नहीं होती है।
डेक्लेरेशन बनाम परिभाषा
एक मौलिक विरोधाभास यह है कि डेक्लेरेशन में परिलैंग्वेज सम्मलित है या नहीं: उदाहरण के लिए, चाहे एक चर या निरंतर डेक्लेरेशन आरंभीकरण (प्रोग्रामिंग), या सिर्फ इसका प्रकार; और इसी प्रकार एक फ़ंक्शन की डेक्लेरेशन फ़ंक्शन के शरीर (कार्यान्वयन) को निर्दिष्ट करती है, या सिर्फ इसके प्रकार के हस्ताक्षर।[1]सभी लैंग्वेज में यह भेद नहीं होता है: कई लैंग्वेजमें, घोषणाओं में निरंतर एक परिलैंग्वेज सम्मलित होती है, और इसे लैंग्वेज के आधार पर या तो घोषणाओं या परिभाषाओं के रूप में संदर्भित किया जा सकता है।[lower-alpha 1] चूंकि , इन अवधारणाओं को उन लैंग्वेज में भिन्न किया जाता है जिनके लिए उपयोग से पहले डेक्लेरेशन की आवश्यकता होती है (जिसके लिए आगे की घोषणाओं का उपयोग किया जाता है), और उन लैंग्वेजमें जहां इंटरफ़ेस और कार्यान्वयन भिन्न -भिन्न होते हैं: इंटरफ़ेस में घोषणाएँ होती हैं, कार्यान्वयन में परिभाषाएँ होती हैं।[lower-alpha 2] अनौपचारिक उपयोग में, एक डेक्लेरेशन सिर्फ एक शुद्ध डेक्लेरेशन (सिर्फ प्रकार, कोई मूल्य या निकाय) को संदर्भित नहीं करती है, जबकि एक परिलैंग्वेज एक डेक्लेरेशन को संदर्भित करती है जिसमें मूल्य या शरीर सम्मलित होता है। चूंकि , औपचारिक उपयोग में (लैंग्वेज विनिर्देशों में), डेक्लेरेशन में इन दोनों इंद्रियों को सम्मलित किया गया है, लैंग्वेज द्वारा बहुत अच्छा भेद के साथ: सी और सी ++ में, एक फ़ंक्शन की डेक्लेरेशन जिसमें शरीर सम्मलित नहीं है, एक फ़ंक्शन प्रोटोटाइप कहा जाता है, जबकि की डेक्लेरेशन एक फ़ंक्शन जिसमें शरीर सम्मलित होता है उसे फ़ंक्शन परिलैंग्वेज कहा जाता है। जावा में घोषणाएँ दो रूपों में होती हैं। सार्वजनिक विधियों के लिए उन्हें इंटरफेस में विधि हस्ताक्षर के रूप में प्रस्तुत किया जा सकता है, जिसमें विधि के नाम, इनपुट प्रकार और आउटपुट प्रकार सम्मलित हैं। अमूर्त विधियों की परिलैंग्वेज में एक समान संकेतन का उपयोग किया जा सकता है, जिसमें कोई परिलैंग्वेज नहीं है। संलग्न क्लासेस को त्वरित किया जा सकता है, अपितु एक नवीनतम व्युत्पन्न क्लासेस , जो विधि की परिलैंग्वेज प्रदान करता है, को कक्षा का एक उदाहरण (कंप्यूटर विज्ञान) बनाने के लिए बनाने की आवश्यकता होगी। जावा 8 से प्रारंभ होकर, लैम्ब्डा एक्सप्रेशन को लैंग्वेज में सम्मलित किया गया था, जिसे फंक्शन डिक्लेरेशन के रूप में देखा जा सकता है।
डेक्लेरेशन और परिभाषाएं
प्रोग्रामिंग लैंग्वेज के सी-फॅमिली में, डेक्लेरेशन अधिकांशतः हेडर फाइलों में एकत्र की जाती हैं, जो अन्य स्रोत फाइलों में सम्मलित होती हैं जो इन घोषणाओं का संदर्भ देती हैं और उनका उपयोग करती हैं, लेकिन परिलैंग्वेज तक पहुंच नहीं है। शीर्षलेख फ़ाइल में जानकारी कोड के बीच इंटरफ़ेस प्रदान करती है जो डेक्लेरेशन का उपयोग करती है और जो इसे परिभाषित करती है, सूचना छिपाने का एक रूप। एक डेक्लेरेशन का उपयोग अधिकांशतः विभिन्न स्रोत फ़ाइलों में परिभाषित फ़ंक्शंस या वेरिएबल्स या पुस्तकालय (कम्प्यूटिंग) में परिभाषित करने के लिए किया जाता है। परिलैंग्वेज प्रकार और डेक्लेरेशन प्रकार के बीच एक बेमेल एक कम्पाइलर त्रुटि उत्पन्न करता है।
चर के लिए, परिभाषाएँ स्मृति के एक क्षेत्र के लिए मान निर्दिष्ट करती हैं जो डेक्लेरेशन चरण के समय आरक्षित था। फ़ंक्शंस के लिए, परिभाषाएँ फ़ंक्शन बॉडी की आपूर्ति करती हैं। जबकि एक चर या फ़ंक्शन को कई बार घोषित किया जा सकता है, इसे सामान्यतः एक बार परिभाषित किया जाता है (सी ++ में, इसे एक परिलैंग्वेज नियम या ओडीआर के रूप में जाना जाता है)।
जावास्क्रिप्ट या पायथन (प्रोग्रामिंग भाषा) जैसी गतिशील भाषाएं सामान्यतः कार्यों को फिर से परिभाषित करने की अनुमति देती हैं, अर्थात, नाम बाध्यकारी | पुनः बाध्य; एक फ़ंक्शन एक नाम और एक मान (परिभाषा) के साथ किसी अन्य की प्रकार एक चर है।
यहाँ घोषणाओं के कुछ उदाहरण दिए गए हैं जो C में परिभाषाएँ नहीं हैं: <वाक्यविन्यास लैंग = सी> बाहरी चार उदाहरण 1; बाहरी int example2; शून्य उदाहरण 3 (शून्य); </वाक्यविन्यास हाइलाइट>
यहाँ घोषणाओं के कुछ उदाहरण हैं जो परिभाषाएँ हैं, फिर से C में: <वाक्यविन्यास लैंग = सी> चार उदाहरण 1; /* फ़ंक्शन परिलैंग्वेज के बाहर इसे शून्य से प्रारंभ किया जाएगा। */ int example2 = 5; शून्य उदाहरण 3 (शून्य) {/* ब्रेसिज़ के बीच परिलैंग्वेज */ } </वाक्यविन्यास हाइलाइट>
अपरिभाषित चर
कुछ प्रोग्रामिंग लैंग्वेज में, एक अंतर्निहित डेक्लेरेशन पहली बार प्रदान की जाती है जब संकलन समय पर इस प्रकार के एक चर का सामना करना पड़ता है। अन्य भाषाओं में, ऐसे उपयोग को एक त्रुटि माना जाता है, जिसके परिणामस्वरूप निदान संदेश हो सकता है। कुछ भाषाएं निहित डेक्लेरेशन व्यवहार के साथ प्रारंभ हुई हैं, लेकिन जैसे-जैसे वे परिपक्व हुईं, उन्होंने इसे निष्क्रिय करने का एक विकल्प प्रदान किया (जैसे पर्ल काuse strict
या मूल दृश्यOption Explicit
).
यह भी देखें
- फ़ंक्शन प्रोटोटाइप
- कार्यक्षेत्र (प्रोग्रामिंग)
टिप्पणियाँ
- ↑ For example, Java uses "declaration" (class declaration, method declaration), while Python uses "definition" (class definition, function definition).[3]
- ↑ This distinction is observed in Pascal "units" (modules), and in conventional C and C++ code organization, which has header files consisting largely of pure declarations, and source files consisting of definitions, though this is not always strictly observed, nor enforced by the language.
संदर्भ
- ↑ 1.0 1.1 1.2 1.3 "A declaration specifies the interpretation and attributes of a set of identifiers. A definition of an identifier is a declaration for that identifier that:
- for an object [variable or constant], causes storage to be reserved for that object;
- for a function, includes the function body;
- for an enumeration constant, is the (only) declaration of the identifier;
- for a typedef name, is the first (or only) declaration of the identifier."
- ↑ Mike Banahan. "2.5. Declaration of variables". GBdirect. Retrieved 2011-06-08.
[A] declaration [...] introduces just the name and type of something but allocates no storage[...].
- ↑ 7. Compound statements, The Python Language Reference
बाहरी संबंध
- Declare vs Define in C and C++, Alex Allain
- 8.2. Declarations, Definitions and Accessibility, The C Book, GBdirect
- Declarations and Definitions (C++), MSDN
- "Declarations tell the compiler that a program element or name exists. Definitions specify what code or data the name describes."