वैश्विक चर

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

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

प्रयोग करें
वैश्विक चर के साथ सहभागिता तंत्र को वैश्विक पर्यावरण (वैश्विक स्थिति भी देखें) तंत्र कहा जाता है। वैश्विक पर्यावरण प्रतिमान स्थानीय पर्यावरण प्रतिमान के विपरीत है, जहां सभी चर उपप्रोग्राम # स्थानीय चर, पुनरावर्तन और पुन: प्रवेश के साथ कोई साझा स्मृति (इंटरप्रोसेस संचार) नहीं है (और इसलिए सभी इंटरैक्शन को संदेश पास करने के लिए पुन: आयोजित किया जा सकता है)।

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

पर्यावरण चर
पर्यावरण चर कुछ ऑपरेटिंग सिस्टम द्वारा प्रदान की जाने वाली सुविधा है। ओएस के खोल (कंप्यूटिंग) के भीतर (यूनिक्स में के शेल, लिनक्स में बैश (यूनिक्स खोल), डॉस में कमांड.कॉम ​​और खिड़कियाँ ़ में सीएमडी.ईएक्सई) वे एक प्रकार के चर हैं: उदाहरण के लिए, यूनिक्स और संबंधित प्रणालियों में एक साधारण चर पर्यावरण चर बन जाता है जब   कीवर्ड का प्रयोग किया जाता है। शेल के अलावा अन्य प्रोग्राम कोड को उन्हें एपीआई कॉल द्वारा एक्सेस करना होता है, जैसे कि और.

वे उस प्रक्रिया के लिए स्थानीय हैं जिसमें उन्हें सेट किया गया था। इसका मतलब है कि अगर हम दो टर्मिनल विंडो खोलते हैं (दो अलग-अलग प्रक्रियाएं शेल चल रही हैं) और एक विंडो में पर्यावरण चर का मान बदलते हैं, तो वह परिवर्तन दूसरी विंडो द्वारा नहीं देखा जाएगा।

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

ग्लोबल-ओनली और ग्लोबल-बाय-डिफॉल्ट
कई गैर-संरचित प्रोग्रामिंग भाषाएं, जैसे (के प्रारंभिक संस्करण) बुनियादी, कोबोल और फोरट्रान I (1956) केवल वैश्विक चर प्रदान करते हैं। फोरट्रान II (1958) ने स्थानीय चरों के साथ सबरूटीन्स और वैश्विक चरों तक पहुँचने के लिए COMMON कीवर्ड की शुरुआत की। फोरट्रान में कॉमन का उपयोग फोरट्रान 77 में जारी रहा, और बाद की भाषाओं जैसे PL/SQL को प्रभावित किया। ग्लोबल्स के लिए नामित सामान्य समूह कुछ हद तक संरचित नामस्थानों की तरह व्यवहार करते हैं। फोर्थ (प्रोग्रामिंग भाषा), लुआ (प्रोग्रामिंग भाषा), पर्ल और अधिकांश शेल में डिफ़ॉल्ट रूप से चर भी वैश्विक होते हैं।

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

आउटपुट होगा: 3 5 5 5

जावा
जावा जैसी कुछ भाषाओं में वैश्विक चर नहीं होते हैं। जावा में, वे सभी चर जो स्थानीय चर नहीं हैं, एक वर्ग के क्षेत्र हैं। इसलिए सभी चर या तो एक वर्ग या एक विधि के दायरे में हैं। जावा में, स्थिर क्षेत्र (वर्ग चर के रूप में भी जाना जाता है) वर्ग के किसी भी उदाहरण से स्वतंत्र रूप से मौजूद हैं और एक प्रति सभी उदाहरणों के बीच साझा की जाती है; इसलिए सार्वजनिक स्थैतिक क्षेत्रों का उपयोग उनके समान साझाकरण व्यवहार के कारण अन्य भाषाओं में वैश्विक चर के समान उद्देश्यों के लिए किया जाता है:

पीएचपी
PHP में एक है  कीवर्ड और वैश्विक चर का उपयोग करने के कई असामान्य तरीके। वेरिएबल्स घोषित बाहरी कार्यों में फ़ाइल स्कोप होता है (जो कि अधिकांश उद्देश्यों के लिए व्यापक दायरा है)। हालांकि, जब तक के साथ आयात नहीं किया जाता है, तब तक वे कार्यों के अंदर पहुंच योग्य नहीं होते हैं  कीवर्ड (यानी, कीवर्ड वैश्विक चरों तक पहुंचता है, यह उन्हें घोषित नहीं करता है)।

हालाँकि, कुछ पूर्वनिर्धारित चर, जिन्हें सुपरग्लोबल्स के रूप में जाना जाता है, हमेशा सुलभ होते हैं। वे सभी सरणियाँ हैं। एक सामान्य प्रयोजन है  सुपरग्लोबल, जिसमें सभी चर शामिल हैं कार्यक्षेत्र से बाहर परिभाषित। इसके तत्वों में परिवर्तन मूल चर को बदलते हैं, और अतिरिक्त नए चर बनाते हैं। सुपरग्लोबल्स  और   वेब प्रोग्रामिंग में व्यापक रूप से उपयोग किया जाता है।

अन्य भाषाएँ

 * पायथन (प्रोग्रामिंग लैंग्वेज) और MATLAB में एक वैश्विक चर को कहीं भी घोषित किया जा सकता है  कीवर्ड।
 * रूबी (प्रोग्रामिंग भाषा) के ग्लोबल वेरिएबल्स को एक ' द्वारा अलग किया जाता है ' सिगिल (कंप्यूटर प्रोग्रामिंग)। उदाहरण के लिए, कई पूर्वनिर्धारित वैश्विक मौजूद हैं   वर्तमान प्रक्रिया आईडी है।

यह भी देखें

 * स्थानीय चर
 * गैर-स्थानीय चर
 * सिंगलटन पैटर्न
 * चर (कंप्यूटर विज्ञान)
 * स्थिर चर
 * बाहरी चर

संदर्भ
Variable (Programmierung)