वेरिएबल्स (कंप्यूटर विज्ञान)

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

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

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

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

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

वेरिएबल्स मूल्यों को संग्रहित करने के लिए कंटेनर हैं।

चर और दायरा:
 * स्वचालित चर: किसी फ़ंक्शन में प्रत्येक स्थानीय चर तभी अस्तित्व में आता है जब फ़ंक्शन को कॉल किया जाता है, शुद्ध समारोह के बाहर निकलने पर गायब हो जाता है। ऐसे चर को स्वचालित चर के रूप में जाना जाता है।
 * बाहरी चर: ये वे चर हैं जो किसी फ़ंक्शन के बाहरी हैं और किसी भी फ़ंक्शन द्वारा नाम से एक्सेस किए जा सकते हैं। ये चर स्थायी रूप से अस्तित्व में रहते हैं; बल्कि यह कि कार्यों को बुलाए जाने और बाहर निकलने के रूप में प्रकट होने और गायब होने के कारण, वे उन कार्यों के बाद भी अपने मूल्यों को बनाए रखते हैं जो उन्हें सेट करते हैं।

एक चर का संदर्भ देने वाले पहचानकर्ता
एक चर को संदर्भित करने वाले एक पहचानकर्ता का उपयोग मूल्य को पढ़ने, या मूल्य को बदलने, या चर के अन्य गुण (कंप्यूटिंग) को संपादित करने के लिए चर का उपयोग करने के लिए किया जा सकता है, जैसे एक्सेस अनुमति, लॉक (कंप्यूटर विज्ञान), सेमाफोर (प्रोग्रामिंग) ), वगैरह।

उदाहरण के लिए, एक चर को पहचानकर्ता द्वारा संदर्भित किया जा सकता हैtotal_countऔर वेरिएबल में 1956 नंबर हो सकता है। यदि उसी वेरिएबल को पहचानकर्ता द्वारा संदर्भित किया जाता हैrसाथ ही, और यदि इस पहचानकर्ता का उपयोग कर रहे हैंr, चर का मान 2009 में बदल दिया गया है, फिर पहचानकर्ता का उपयोग करके मान पढ़नाtotal_count2009 का परिणाम मिलेगा न कि 1956 का।

यदि किसी चर को केवल एक पहचानकर्ता द्वारा संदर्भित किया जाता है, तो उस पहचानकर्ता को केवल चर का नाम कहा जा सकता है; अन्यथा हम इसे चर के नामों में से एक के रूप में बोल सकते हैं। उदाहरण के लिए, पिछले उदाहरण में पहचानकर्ताtotal_countविचाराधीन चर का एक नाम है, औरrउसी चर का दूसरा नाम है।

दायरा और सीमा
एक चर का स्कोप (कंप्यूटर विज्ञान) वर्णन करता है कि प्रोग्राम के पाठ में चर का उपयोग कहाँ किया जा सकता है, जबकि एक चर की सीमा (जिसे जीवन भर भी कहा जाता है) बताता है कि किसी प्रोग्राम के निष्पादन में चर का (सार्थक) मान कब होता है। एक चर का दायरा इसकी सीमा को प्रभावित करता है। एक चर का दायरा वास्तव में चर के नाम की एक संपत्ति है, और सीमा चर के भंडारण स्थान की एक संपत्ति है। इन्हें संदर्भ (पर्यावरण भी कहा जाता है) के साथ भ्रमित नहीं होना चाहिए, जो कार्यक्रम की एक संपत्ति है, और कार्यक्रम के पाठ या निष्पादन में बिंदु से भिन्न होता है - स्कोप (कंप्यूटर विज्ञान) देखें #अवलोकन|दायरा: एक सिंहावलोकन। इसके अलावा, वस्तु का जीवनकाल चर जीवनकाल के साथ मेल खा सकता है, लेकिन कई मामलों में यह इससे बंधा नहीं है।

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

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

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

अंतरिक्ष दक्षता के लिए, एक चर के लिए आवश्यक स्मृति स्थान केवल तभी आवंटित किया जा सकता है जब चर का पहली बार उपयोग किया जाता है और जब इसकी आवश्यकता नहीं होती है तो इसे मुक्त कर दिया जाता है। एक चर की आवश्यकता तभी होती है जब वह दायरे में हो, इस प्रकार प्रत्येक चर के जीवनकाल की शुरुआत तब होती है जब वह sc में प्रवेश करता हैओप अप्रयुक्त चरों को स्थान दे सकता है। इस तरह के स्थान को बर्बाद करने से बचने के लिए, संकलक अक्सर प्रोग्रामर को चेतावनी देते हैं यदि एक चर घोषित किया जाता है लेकिन उपयोग नहीं किया जाता है।

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

कई प्रोग्रामिंग भाषाएं एक अमान्य या गैर-प्रारंभिक चर को इंगित करने के लिए एक आरक्षित मान (अक्सर शून्य सूचक या शून्य) का उपयोग करती हैं।

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

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

वेरिएबल्स की सबटाइपिंग भी प्रकार के बहुरूपता को संकलन समय पर हल करने की अनुमति देती है। हालाँकि, यह ऑब्जेक्ट-ओरिएंटेड फ़ंक्शन कॉल्स (C++ में आभासी कार्य के रूप में संदर्भित) में उपयोग किए जाने वाले बहुरूपता से अलग है, जो वैरिएबल के सुपरटाइप्स के विपरीत मूल्य प्रकार के आधार पर कॉल को हल करता है।

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

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

<वाक्यविन्यास लैंग = पिकॉन> >>> def addtwo(x): ... रिटर्न एक्स + 2 ... >>> एडटू(5) 7 

नामित चर x एक पैरामीटर (कंप्यूटर प्रोग्रामिंग) है क्योंकि फ़ंक्शन को कॉल करने पर इसे एक मान दिया जाता है। पूर्णांक 5 वह तर्क है जो देता है x इसका मूल्य। अधिकांश भाषाओं में, फ़ंक्शन पैरामीटर का स्थानीय दायरा होता है। इस विशिष्ट चर का नाम x के भीतर ही संदर्भित किया जा सकता है addtwo फ़ंक्शन (हालांकि निश्चित रूप से अन्य फ़ंक्शंस में वेरिएबल्स भी हो सकते हैं x).

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

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

ढेर से आवंटित वस्तुओं को पुनः प्राप्त किया जाना चाहिए-खासकर जब वस्तुओं की आवश्यकता नहीं रह जाती है। एक कचरा संग्रह (कंप्यूटर विज्ञान) में | कचरा-संग्रहित भाषा (जैसे सी शार्प (प्रोग्रामिंग भाषा) | सी #, जावा (प्रोग्रामिंग भाषा), पायथन, गोलंग और लिस्प (प्रोग्रामिंग भाषा)), रनटाइम पर्यावरण स्वचालित रूप से वस्तुओं को पुनः प्राप्त करता है जब मौजूदा चर अब उन्हें संदर्भित नहीं कर सकते। गैर-कचरा-एकत्रित भाषाओं में, जैसे सी (प्रोग्रामिंग भाषा), प्रोग्राम (और प्रोग्रामर) को स्पष्ट रूप से मेमोरी को malloc करना चाहिए, और फिर बाद में इसे अपनी मेमोरी को पुनः प्राप्त करने के लिए मुक्त करना चाहिए। ऐसा करने में विफलता मेमोरी लीक की ओर ले जाती है, जिसमें प्रोग्राम के चलते हीप समाप्त हो जाता है, उपलब्ध मेमोरी समाप्त होने से अंततः विफलता का जोखिम होता है।

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

नामकरण परंपराएं
उनके गणितीय समकक्षों के विपरीत, प्रोग्रामिंग चर और स्थिरांक आमतौर पर बहु-वर्ण नाम लेते हैं, उदा। COST या total. एकल-वर्ण नाम आमतौर पर केवल सहायक चर के लिए उपयोग किए जाते हैं; उदाहरण के लिए, i, j, k सरणी अनुक्रमणिका चर के लिए।

भाषा सिंटैक्स के हिस्से के रूप में कुछ नामकरण परंपराओं को भाषा स्तर पर लागू किया जाता है जिसमें मान्य पहचानकर्ताओं का प्रारूप शामिल होता है। लगभग सभी भाषाओं में, वेरिएबल नाम अंक (0–9) से शुरू नहीं हो सकते हैं और इसमें व्हाइटस्पेस वर्ण नहीं हो सकते हैं। चर नामों में विराम चिह्नों की अनुमति है या नहीं, भाषा से भाषा में भिन्न होता है; कई भाषाएँ चर नामों में केवल बल देना (_) की अनुमति देती हैं और अन्य सभी विराम चिह्नों को प्रतिबंधित करती हैं। कुछ प्रोग्रामिंग भाषाओं में, वेरिएबल के डेटाटाइप या स्कोप को इंगित करने के लिए वेरिएबल पहचानकर्ताओं के लिए सिगिल (कंप्यूटर प्रोग्रामिंग) एस (प्रतीक या विराम चिह्न) चिपकाए जाते हैं।

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

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

चर प्रकार (जीवनकाल पर आधारित)
हम चरों को उनके जीवनकाल के आधार पर वर्गीकृत कर सकते हैं। विभिन्न प्रकार के चर स्थिर, स्टैक-डायनेमिक, स्पष्ट हीप-डायनामिक और निहित हीप-डायनामिक हैं। एक स्थिर चर को वैश्विक चर के रूप में भी जाना जाता है, यह निष्पादन शुरू होने से पहले एक मेमोरी सेल से जुड़ा होता है और समाप्ति तक उसी मेमोरी सेल में रहता है। एक विशिष्ट उदाहरण C और C++ में स्थिर चर हैं। एक स्टैक-डायनेमिक वैरिएबल को लोकल वैरिएबल के रूप में जाना जाता है, जो डिक्लेरेशन स्टेटमेंट के निष्पादित होने पर बाध्य होता है, और जब प्रक्रिया वापस आती है तो इसे हटा दिया जाता है। मुख्य उदाहरण सी सबप्रोग्राम और जावा विधियों में स्थानीय चर हैं। स्पष्ट ढेर-गतिशील चर अज्ञात (अमूर्त) मेमोरी सेल हैं जो प्रोग्रामर द्वारा निर्दिष्ट स्पष्ट रन-टाइम निर्देशों द्वारा आवंटित और हटा दिए जाते हैं। मुख्य उदाहरण सी ++ (नए और डिलीट के माध्यम से) और जावा में सभी ऑब्जेक्ट्स में गतिशील वस्तुएं हैं। निहित हीप-डायनेमिक चर केवल तभी भंडारण के लिए बाध्य होते हैं जब उन्हें मान निर्दिष्ट किया जाता है। आवंटन और रिलीज तब होता है जब मूल्यों को चर के लिए पुन: असाइन किया जाता है। नतीजतन, निहित ढेर-गतिशील चर में लचीलेपन की उच्चतम डिग्री होती है। मुख्य उदाहरण जावास्क्रिप्ट, PHP और एपीएल में सभी चर में कुछ चर हैं।

यह भी देखें

 * नियंत्रण चर (प्रोग्रामिंग)
 * गैर-स्थानीय चर
 * अस्थायी चर
 * चर प्रक्षेप
 * अदिश (गणित)