डेक्लेरेशन (कंप्यूटर प्रोग्रामिंग)

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

अल्गोल ट्रैडिशनल लैंग्वेज में डेक्लेरेशन विशेष रूप से प्रमुख रूप में होती है, जिनमें बीसीपीएल फॅमिली सबसे प्रमुख रूप से सी प्रोग्रामिंग लैंग्वेज और सी ++, और पास्कल प्रोग्रामिंग लैंग्वेज के रूप में सम्मलित होती है। जावा (प्रोग्रामिंग लैंग्वेज) शब्द डेक्लेरेशन का उपयोग करता है, चूंकि जावा को भिन्न -भिन्न डेक्लेरेशन और परिभाषाओं की आवश्यकता नहीं होती है।

डेक्लेरेशन बनाम परिभाषा
एक मौलिक डिचोटोमी यह है कि डेक्लेरेशन में एक परिभाषा निहित होती है या नहीं उदाहरण के लिए, एक चर या निरंतर डेक्लेरेशन अपने मूल्य को निर्दिष्ट करती है या केवल इसके प्रकार को निर्दिष्ट करती है और इसी तरह फलन की डेक्लेरेशन फलन के बॉडी कार्यान्वयन या सिर्फ इसके प्रकार के हस्ताक्षर को निर्दिष्ट करती है। सभी लैंग्वेज में यह फर्क नहीं पड़ता है कि कई लैंग्वेज में, डेक्लेरेशन में निरंतर एक परिलैंग्वेज सम्मलित होती है और इसे लैंग्वेज के आधार पर या तो डेक्लेरेशन या परिभाषाओं के रूप में संदर्भित किया जाता है। चूंकि, इन अवधारणाओं को उन लैंग्वेज में भिन्न किया जाता है जिनके लिए उपयोग से पहले डेक्लेरेशन की आवश्यकता होती है जिसके लिए आगे की डेक्लेरेशन का उपयोग किया जाता है और उन लैंग्वेज में जहां इंटरफ़ेस और कार्यान्वयन भिन्न -भिन्न होते हैं तथा इंटरफ़ेस में डेक्लेरेशन सम्मलित होती हैं और कार्यान्वयन में परिभाषाएँ होती हैं।

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

डेक्लेरेशन और परिभाषाएं
प्रोग्रामिंग लैंग्वेज के सी-फॅमिली में, डेक्लेरेशन अधिकांशतः हेडर फाइलो में एकत्र की जाती हैं, जो अन्य स्रोत फाइलों में सम्मलित होती हैं जो इन डेक्लेरेशन का संदर्भ देती हैं और उनका उपयोग करती हैं, लेकिन परिलैंग्वेज तक पहुंच नहीं होती है। शीर्षलेख फ़ाइल में जानकारी कोड के बीच इंटरफ़ेस प्रदान करती है जो डेक्लेरेशन का उपयोग करती है और जो इसे परिभाषित करती है, सूचना छिपाने का एक रूप है। एक डेक्लेरेशन का उपयोग अधिकांशतः विभिन्न स्रोत फ़ाइलों में परिभाषित फलन या वेरिएबल्स या पुस्तकालय (कम्प्यूटिंग) में परिभाषित करने के लिए किया जाता है। परिलैंग्वेज प्रकार और डेक्लेरेशन प्रकार के बीच एक बेमेल एक कम्पाइलर त्रुटि उत्पन्न करता है।

चर के लिए, परिभाषाएँ स्मृति के एक क्षेत्र के लिए मान निर्दिष्ट करती हैं जो डेक्लेरेशन चरण के समय आरक्षित होता है। फलन के लिए, परिभाषाएँ फलन बॉडी की आपूर्ति करती हैं। जबकि एक चर या फलन को कई बार घोषित किया जा सकता है, इसे सामान्यतः एक बार परिभाषित किया जाता है सी ++ में, इसे एक परिलैंग्वेज नियम या ओडीआर के रूप में जाना जाता है।

जावास्क्रिप्ट या पायथन (प्रोग्रामिंग लैंग्वेज) जैसी गतिशील लैंग्वेज सामान्यतः कार्यों को फिर से परिभाषित करने की अनुमति देती हैं, अर्थात, नाम बाध्यकारी पुनः बाध्य; एक फलन एक नाम और एक मान परिभाषा के साथ किसी अन्य की प्रकार एक चर के रूप में होती है।

यहाँ डेक्लेरेशन के कुछ उदाहरण दिए गए हैं जो C में परिभाषाएँ नहीं हैं,

extern char example1;

extern int example2;

void example3(void);

यहाँ डेक्लेरेशन के कुछ उदाहरण हैं जो परिभाषाएँ हैं, फिर से C में

char example1; /* Outside of a function definition it will be initialized to zero. */

int example2 = 5;

void example3(void) { /* definition between braces */ }

अपरिभाषित चर
कुछ प्रोग्रामिंग लैंग्वेज में, एक अंतर्निहित डेक्लेरेशन पहली बार प्रदान की जाती है जब संकलन समय पर इस प्रकार के एक चर का सामना करना पड़ता है। अन्य लैंग्वेजो में, ऐसे उपयोग को एक त्रुटि माना जाता है, जिसके परिणामस्वरूप निदान संदेश के रूप में हो सकते है। कुछ लैंग्वेज निहित डेक्लेरेशन व्यवहार के साथ प्रारंभ हुई हैं, लेकिन जैसे-जैसे वे परिपक्व हुईं, उन्होंने इसे निष्क्रिय करने का एक विकल्प प्रदान किया जैसे पर्ल का सख्त उपयोग या विज़ुअल बेसिक का विकल्प स्पष्ट रूप में उपयोग करते है।

यह भी देखें

 * फलन प्रोटोटाइप
 * स्कोप (प्रोग्रामिंग)

बाहरी संबंध

 * 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."