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

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

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

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

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

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

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

यहाँ घोषणाओं के कुछ उदाहरण दिए गए हैं जो C में परिभाषाएँ नहीं हैं: <वाक्यविन्यास लैंग = सी> बाहरी चार उदाहरण 1; बाहरी int example2; शून्य उदाहरण 3 (शून्य); 

यहाँ घोषणाओं के कुछ उदाहरण हैं जो परिभाषाएँ हैं, फिर से C में: <वाक्यविन्यास लैंग = सी> चार उदाहरण 1; /* फ़ंक्शन परिभाषा के बाहर इसे शून्य से प्रारंभ किया जाएगा। */ int example2 = 5; शून्य उदाहरण 3 (शून्य) {/* ब्रेसिज़ के बीच परिभाषा */ } 

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

यह भी देखें

 * फ़ंक्शन प्रोटोटाइप
 * कार्यक्षेत्र (प्रोग्रामिंग)

बाहरी संबंध

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