वैश्विक चर: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 7: Line 7:
वैश्विक चर के साथ सहभागिता तंत्र को वैश्विक पर्यावरण (वैश्विक स्थिति भी देखें) तंत्र कहा जाता है। वैश्विक पर्यावरण प्रतिमान [[स्थानीय पर्यावरण]] प्रतिमान के विपरीत है, जहां सभी चर बिना किसी साझा स्मृति तंत्र के स्थानीय हैं (और इसलिए संदेश पास करने के लिए सभी पारस्परिक व्यवहार को फिर से आयोजित किया जा सकता है)।
वैश्विक चर के साथ सहभागिता तंत्र को वैश्विक पर्यावरण (वैश्विक स्थिति भी देखें) तंत्र कहा जाता है। वैश्विक पर्यावरण प्रतिमान [[स्थानीय पर्यावरण]] प्रतिमान के विपरीत है, जहां सभी चर बिना किसी साझा स्मृति तंत्र के स्थानीय हैं (और इसलिए संदेश पास करने के लिए सभी पारस्परिक व्यवहार को फिर से आयोजित किया जा सकता है)।


वैश्विक चर का व्यापक रूप से उपयोग कोड के उन वर्गों के बीच जानकारी देने के लिए किया जाता है जो समवर्ती [[सूत की अलमारी]] और सिग्नल हैंडलर जैसे कॉलर/कैली संबंध साझा नहीं करते हैं। भाषाएं (सी सहित) जहां प्रत्येक फ़ाइल एक अंतर्निहित नामस्थान को परिभाषित करती है, वैश्विक नामस्थान वाली भाषाओं के साथ देखी जाने वाली अधिकांश समस्याओं को समाप्त करती है, यद्यपि कुछ समस्याएं उचित एनकैप्सुलेशन के बिना बनी रह सकती हैं। उचित लॉकिंग के बिना (जैसे [[ म्युटेक्स ]] के साथ), ग्लोबल वेरिएबल्स का उपयोग करने वाला कोड सुरक्षित मेमोरी में केवल पढ़ने के लिए छोड़कर थ्रेड-सुरक्षित नहीं होगा।
वैश्विक चर का व्यापक रूप से उपयोग कोड के उन वर्गों के बीच जानकारी देने के लिए किया जाता है जो [[Index.php?title=समवर्ती धारा|समवर्ती धारा]] और सिग्नल हैंडलर जैसे कॉल करने वाला/कॉल प्राप्त करने वाला संबंध साझा नहीं करते हैं। भाषाएं (सी सहित) जहां प्रत्येक फ़ाइल एक अंतर्निहित नामस्थान को परिभाषित करती है, वैश्विक नामस्थान वाली भाषाओं के साथ देखी जाने वाली अधिकांश समस्याओं को समाप्त करती है, यद्यपि कुछ समस्याएं उचित संपुटीकरण के बिना बनी रह सकती हैं। उचित लॉकिंग के बिना (जैसे [[ म्युटेक्स ]] के साथ), वैश्विक चर का उपयोग करने वाला कोड सुरक्षित मेमोरी में केवल पढ़ने के लिए छोड़कर धारा-सुरक्षित नहीं होगा।
 
Interaction mechanisms with global variables are called '''global environment''' (see also '''global state''') mechanisms. The global environment paradigm is contrasted with the local environment paradigm, where all variables are local with no shared memory (and therefore all interactions can be reconducted to message passing).
 
Global variables are used extensively to pass information between sections of code that do not share a caller/callee relation like concurrent threads and signal handlers. Languages (including C) where each file defines an implicit namespace eliminate most of the problems seen with languages with a global namespace though some problems may persist without proper encapsulation. Without proper locking (such as with a mutex), code using global variables will not be thread-safe except for read only values in protected memory.


== [[पर्यावरण चर]] ==
== [[पर्यावरण चर]] ==
पर्यावरण चर कुछ [[ऑपरेटिंग सिस्टम]] द्वारा प्रदान [[की]] जाने वाली सुविधा है। ओएस के [[खोल (कंप्यूटिंग)]] के भीतर ([[यूनिक्स]] में [[Index.php?title=ksh|ksh]], [[लिनक्स]] में bash, डॉस में COMMAND.COM ​​और [[Index.php?title=विंडोज़|विंडोज़]] में  CMD.EXE) वे एक प्रकार के चर हैं: उदाहरण के लिए, यूनिक्स और संबंधित प्रणालियों में एक साधारण चर पर्यावरण चर बन जाता है जब <code>export</code> संकेतशब्द का प्रयोग किया जाता है। शेल के अतिरिक्त अन्य प्रोग्राम कोड को उन्हें [[एपीआई]] कॉल द्वारा अभिगमन करना होता है, जैसे कि<code>getenv()</code> और <code>setenv()</code>.
पर्यावरण चर कुछ [[Index.php?title=प्रचालन तंत्र|प्रचालन तंत्र]] द्वारा प्रदान [[की]] जाने वाली सुविधा है। ओएस के [[खोल (कंप्यूटिंग)]] के भीतर ([[यूनिक्स]] में [[Index.php?title=ksh|ksh]], [[लिनक्स]] में bash, डॉस में COMMAND.COM ​​और [[Index.php?title=विंडोज़|विंडोज़]] में  CMD.EXE) वे एक प्रकार के चर हैं: उदाहरण के लिए, यूनिक्स और संबंधित प्रणालियों में एक साधारण चर पर्यावरण चर बन जाता है जब <code>export</code> संकेतशब्द का प्रयोग किया जाता है। शेल के अतिरिक्त अन्य प्रोग्राम कोड को उन्हें [[एपीआई]] कॉल द्वारा अभिगमन करना होता है, जैसे कि<code>getenv()</code> और <code>setenv()</code>.


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


C भाषा में a नहीं है <code>global</code> [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)|संकेतशब्द (कंप्यूटर प्रोग्रामिंग)]]यद्यपि, किसी फ़ंक्शन के बाहर घोषित किए गए चर में फ़ाइल काक्षेत्र होता है, जिसका अर्थ है कि वे फ़ाइल के भीतर दिखाई दे रहे हैं। फ़ाइल स्कोप के साथ घोषित वेरिएबल्स उनकी घोषणा और संकलन इकाई के अंत के बीच दिखाई दे रहे हैं (<code>.c</code> फ़ाइल) (जब तक कि एक समान-नामित वस्तु द्वारा एक नजदीकी विस्तार में छायांकित न हो, जैसे कि स्थानीय चर); और वे स्पष्ट रूप से बाहरी संबंध रखते हैं और इस प्रकार न केवल उन्हें दिखाई देते हैं <code>.c</code> फ़ाइल या [[संकलन इकाई]] जिसमें उनकी घोषणाएँ होती हैं, लेकिन हर दूसरी संकलन इकाई जो पूर्ण कार्यक्रम बनाने के लिए जुड़ी होती है। बाहरी लिंकेज, हालांकि, अन्य फ़ाइलों में इस तरह के एक चर के उपयोग के लिए पर्याप्त नहीं है: एक संकलन इकाई के लिए इस तरह के वैश्विक चर को सही ढंग से एक्सेस करने के लिए, इसके प्रकार को जानने की आवश्यकता होगी। यह उपयोग करके प्रत्येक फ़ाइल में चर घोषित करके पूरा किया जाता है <code>extern</code> संकेतशब्द। (यह प्रत्येक फ़ाइल में घोषित किया जाएगा लेकिन केवल एक में परिभाषित किया जा सकता है।) ऐसे <code>extern</code> घोषणाएं प्राय: साझा शीर्षलेख फ़ाइल में रखी जाती हैं, क्योंकि यह सभी के लिए सामान्य अभ्यास है <code>.c</code> कम से कम एक को शामिल करने के लिए एक परियोजना में फाइलें <code>.h</code> फ़ाइल: मानक हेडर फ़ाइल <code>errno.h</code> बनाना एक उदाहरण है <code>errno</code> एक परियोजना में सभी मॉड्यूल के लिए चर सुलभ। जहां इस वैश्विक पहुंच तंत्र को समस्याग्रस्त माना जाता है, इसे स्टेटिक (संकेतशब्द) | का उपयोग करके अक्षम किया जा सकता है<code>static</code> संकेतशब्द जो एक वैरिएबल को फाइल स्कोप तक सीमित करता है, और इसके साथ आयात करने का प्रयास करेगा <code>extern</code> संकलन (या लिंकिंग) त्रुटि बढ़ाने के लिए।<ref>C in a Nutshell, P.Prinz & T Crawford, 2006, O'Reilly, Ch 11</ref>
C भाषा में एक <code>global</code>[[कीवर्ड (कंप्यूटर प्रोग्रामिंग)|संकेतशब्द (कंप्यूटर प्रोग्रामिंग)]]नहीं है। यद्यपि, किसी कार्य के बाहर घोषित किए गए चर में फ़ाइल का क्षेत्र होता है, जिसका अर्थ है कि वे फ़ाइल के भीतर दिखाई दे रहे हैं। फ़ाइल क्षेत्र के साथ घोषित चर उनकी घोषणा और संकलन इकाई के अंत के बीच दिखाई दे रहे हैं (<code>.c</code> फ़ाइल) (जब तक कि एक समान-नामित वस्तु द्वारा एक नजदीकी विस्तार में छायांकित न हो, जैसे कि स्थानीय चर); और वे स्पष्ट रूप से बाहरी संबंध रखते हैं और इस प्रकार न केवल उन्हें दिखाई देते हैं <code>.c</code> फ़ाइल या [[संकलन इकाई]] जिसमें उनकी घोषणाएँ होती हैं, लेकिन हर दूसरी संकलन इकाई जो पूर्ण कार्यक्रम बनाने के लिए जुड़ी होती है। बाहरी शृंखलन, यद्यपि,अन्य फ़ाइलों में इस तरह के एक चर के उपयोग के लिए पर्याप्त नहीं है: एक संकलन इकाई के लिए इस तरह के वैश्विक चर को सही ढंग से अभिगम करने के लिए, इसके प्रकार को जानने की आवश्यकता होगी। यह <code>extern</code> संकेतशब्द का उपयोग करके प्रत्येक फ़ाइल में चर घोषित करके पूरा किया जाता है (यह प्रत्येक फ़ाइल में घोषित किया जाएगा लेकिन केवल एक में परिभाषित किया जा सकता है।) ऐसे <code>extern</code> घोषणाएं प्राय: साझा शीर्षलेख फ़ाइल में रखी जाती हैं, क्योंकि यह सभी के लिए सामान्य अभ्यास है <code>.c</code> कम से कम एक को सम्मिलित करने के लिए एक परियोजना में फाइलें <code>.h</code> फ़ाइल: मानक हेडर फ़ाइल <code>errno.h</code> बनाना एक उदाहरण है <code>errno</code> एक परियोजना में सभी मॉड्यूल के लिए चर सुलभ है। जहां इस वैश्विक पहुंच तंत्र को समस्याग्रस्त माना जाता है, इसे<code>static</code>संकेतशब्द का उपयोग करके अक्षम किया जा सकता है<code>static</code> संकेतशब्द जो एक चर को फाइल क्षेत्र तक सीमित करता है, और इसके साथ <code>extern</code> संकलन (या को जोड़ने) त्रुटि बढ़ाने के लिए आयात करने का प्रयास करेगा ।<ref>C in a Nutshell, P.Prinz & T Crawford, 2006, O'Reilly, Ch 11</ref>
 
[[सी (प्रोग्रामिंग भाषा)]] में वैश्विक चर का एक उदाहरण:
[[सी (प्रोग्रामिंग भाषा)]] में वैश्विक चर का एक उदाहरण:
<syntaxhighlight lang="C">
<syntaxhighlight lang="C">
Line 83: Line 80:
}
}
</syntaxhighlight>
</syntaxhighlight>
चूंकि चर एक बाहरी है, इसे मुख्य के अलावा किसी फ़ंक्शन में उपयोग करने के लिए पैरामीटर के रूप में पास करने की कोई आवश्यकता नहीं है। यह मॉड्यूल में हर समारोह से संबंधित है।
चूंकि चर एक बाहरी है, इसे मुख्य के अतिरिक्त किसी कार्य में उपयोग करने के लिए प्राचल के रूप में पास करने की कोई आवश्यकता नहीं है। यह मॉड्यूल में हर कार्य से संबंधित है।


आउटपुट होगा:
आउटपुट होगा:
Line 102: Line 99:


=== [[पीएचपी]] ===
=== [[पीएचपी]] ===
PHP में एक है <code>global</code> संकेतशब्द और वैश्विक चर का उपयोग करने के कई असामान्य तरीके है। बाहरी कार्यों के लिए घोषित चर में फ़ाइल विस्तार होता है (जो कि अधिकांश उद्देश्यों के लिए व्यापक क्षेत्र है)। हालांकि, जब तक के साथ आयात नहीं किया जाता है, तब तक वे कार्यों के अंदर पहुंच योग्य नहीं होते हैं <code>global</code> संकेतशब्द (यानी, संकेतशब्द वैश्विक चरों तक पहुंचता है, यह उन्हें घोषित नहीं करता है)
PHP में एक है <code>global</code> संकेतशब्द और वैश्विक चर का उपयोग करने के कई असामान्य तरीके है। बाहरी कार्यों के लिए घोषित चर में फ़ाइल विस्तार होता है (जो कि अधिकांश उद्देश्यों के लिए व्यापक क्षेत्र है)। यद्यपि, जब तक<code>global</code> संकेतशब्द (अर्थात्, संकेतशब्द वैश्विक चरों तक पहुंचता है, यह उन्हें घोषित नहीं करता है) के साथ आयात नहीं किया जाता है, तब तक वे कार्यों के अंदर पहुंचने योग्य नहीं होते हैं
 
यद्यपि, कुछ पूर्वनिर्धारित चर, जिन्हें सुपरग्लोबल्स के रूप में जाना जाता है, हमेशा सुलभ होते हैं।
वे सभी सरणियाँ हैं। एक सामान्य प्रयोजन है <code>$GLOBALS</code> सुपरग्लोबल, जिसमें सभी चर शामिल हैं
कार्यक्षेत्र से बाहर परिभाषित। इसके तत्वों में परिवर्तन मूल चर को बदलते हैं, और अतिरिक्त नए चर बनाते हैं। सुपरग्लोबल्स <code>$_POST</code> और <code>$_GET</code> वेब प्रोग्रामिंग में व्यापक रूप से उपयोग किया जाता है।
 
PHP has a <code>global</code> keyword and a number of unusual ways of using global variables. Variables declared outside functions have file scope (which is for most purposes the widest scope). However, they are not accessible inside functions unless imported with the <code>global</code> keyword (i.e., the keyword ''accesses'' global variables, it does not ''declare'' them).


However, some predefined variables, known as ''superglobals'' are always accessible. They are all arrays. A general purpose one is the <code>$GLOBALS</code> superglobal, which contains all the variables defined out of function scope. Changes to its elements change the original variables, and additions create new variables. The superglobals <code>$_POST</code> and <code>$_GET</code> are widely used in web programming.
यद्यपि, कुछ पूर्वनिर्धारित चर, जिन्हें सुपरग्लोबल्स के रूप में जाना जाता है, हमेशा सुलभ होते हैं।वे सभी सरणियाँ हैं। एक सामान्य प्रयोजन है <code>$GLOBALS</code> सुपरग्लोबल, जिसमें कार्यक्षेत्र से बाहर परिभाषित सभी चर सम्मिलित हैं। इसके तत्वों में परिवर्तन मूल चर को बदलते हैं, और अतिरिक्त नए चर बनाते हैं। सुपरग्लोबल्स <code>$_POST</code> और <code>$_GET</code> वेब प्रोग्रामिंग में व्यापक रूप से उपयोग किया जाता है।


=== अन्य भाषाएँ ===
=== अन्य भाषाएँ ===


* पायथन (प्रोग्रामिंग भाषा) और [[MATLAB]] में एक वैश्विक चर को कहीं भी घोषित किया जा सकता है <code>global</code> संकेतशब्द।<ref>{{cite web|title=What are the rules for local and global variables in Python?|url=https://docs.python.org/3/faq/programming.html#what-are-the-rules-for-local-and-global-variables-in-python|website=docs.python.org|publisher=Python Software Foundation|access-date=4 June 2020}}</ref><ref>{{cite web|title=चर को वैश्विक घोषित करें|url=http://in.mathworks.com/help/matlab/ref/global.html|website=in.mathworks.com|publisher=The MathWorks, Inc.|access-date=7 February 2015}}</ref>
* पायथन (प्रोग्रामिंग भाषा) और [[MATLAB]] में एक वैश्विक चर को<code>global</code> संकेतशब्द के साथ कहीं भी घोषित किया जा सकता है ।<ref>{{cite web|title=What are the rules for local and global variables in Python?|url=https://docs.python.org/3/faq/programming.html#what-are-the-rules-for-local-and-global-variables-in-python|website=docs.python.org|publisher=Python Software Foundation|access-date=4 June 2020}}</ref><ref>{{cite web|title=चर को वैश्विक घोषित करें|url=http://in.mathworks.com/help/matlab/ref/global.html|website=in.mathworks.com|publisher=The MathWorks, Inc.|access-date=7 February 2015}}</ref>
* [[ रूबी (प्रोग्रामिंग भाषा) ]]के ग्लोबल वेरिएबल्स को एक ' द्वारा अलग किया जाता है<code>$</code>' [[सिगिल (कंप्यूटर प्रोग्रामिंग)]]। उदाहरण के लिए, कई पूर्वनिर्धारित वैश्विक उपस्थित हैं <code>$$</code> वर्तमान [[प्रक्रिया आईडी]] है।
* [[ रूबी (प्रोग्रामिंग भाषा) ]]के वैश्विक चर को एक ' <code>$</code>' [[सिगिल (कंप्यूटर प्रोग्रामिंग)]]द्वारा अलग किया जाता है। कई पूर्वनिर्धारित वैश्विक उपस्थित हैं उदाहरण के लिए, <code>$$</code> वर्तमान [[प्रक्रिया आईडी]] है।


== यह भी देखें ==
== यह भी देखें ==

Revision as of 20:46, 8 June 2023

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

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

प्रयोग करें

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

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

पर्यावरण चर

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

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

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

केवल-वैश्विक और स्वतः निर्धारित रूप से वैश्विक

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

भाषा द्वारा

सी और सी ++

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

सी (प्रोग्रामिंग भाषा) में वैश्विक चर का एक उदाहरण:

#include <stdio.h>

// This is the file-scope variable (with internal linkage), visible only in
// this compilation unit.
static int shared = 3;

// This one has external linkage (not limited to this compilation unit).
extern int over_shared;

// Also internal linkage.
int over_shared_too = 2;

static void ChangeShared() {
  // Reference to the file-scope variable in a function.
  shared = 5;
}

static void LocalShadow() {
  // Local variable that will hide the global of the same name.
  int shared;

  // This will affect only the local variable and will have no effect on the
  // file-scope variable of the same name.
  shared = 1000;
}

static void ParamShadow(int shared) {
  // This will affect only the parameter and will have no effect on the file-
  // scope variable of the same name.
  shared = -shared;
}

int main() {
  // Reference to the file-scope variable.

  printf("%d\n", shared);

  ChangeShared();

  printf("%d\n", shared);

  LocalShadow();

  printf("%d\n", shared);

  ParamShadow(1);

  printf("%d\n", shared);

  return 0;
}

चूंकि चर एक बाहरी है, इसे मुख्य के अतिरिक्त किसी कार्य में उपयोग करने के लिए प्राचल के रूप में पास करने की कोई आवश्यकता नहीं है। यह मॉड्यूल में हर कार्य से संबंधित है।

आउटपुट होगा:

3
5
5
5

जावा

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

public class Global {
    public static int a;
}


पीएचपी

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

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

अन्य भाषाएँ

यह भी देखें

संदर्भ

  1. "Fortran 77 Tutorial".
  2. "First Steps: Stack & Heap Objects".
  3. C in a Nutshell, P.Prinz & T Crawford, 2006, O'Reilly, Ch 11
  4. "What are the rules for local and global variables in Python?". docs.python.org. Python Software Foundation. Retrieved 4 June 2020.
  5. "चर को वैश्विक घोषित करें". in.mathworks.com. The MathWorks, Inc. Retrieved 7 February 2015.