स्थिरांक (कंप्यूटर प्रोग्रामिंग)

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

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

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

संकलन-समय स्थिरांक के विशिष्ट उदाहरणों में गणितीय स्थिरांक, मानकों से मान (यहां अधिकतम संचरण इकाई), या आंतरिक कॉन्फ़िगरेशन मान (यहां प्रति पंक्ति वर्ण) शामिल हैं, जैसे कि ये सी (प्रोग्रामिंग भाषा) उदाहरण:

रन-टाइम स्थिरांक के विशिष्ट उदाहरण किसी फ़ंक्शन के इनपुट के आधार पर गणना किए गए मान हैं, जैसे कि यह C++ उदाहरण:

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

एक स्थिर मूल्य एक बार परिभाषित किया गया है और पूरे कार्यक्रम में कई बार संदर्भित किया जा सकता है। एक ही मूल्य को कई बार निर्दिष्ट करने के बजाय एक स्थिरांक का उपयोग करना कोड रखरखाव को आसान बना सकता है (जैसा कि स्वयं को दोहराना नहीं है) और एक मूल्य के लिए एक सार्थक नाम की आपूर्ति करके स्व-दस्तावेज़ीकरण हो सकता है, उदाहरण के लिए, PI 3.1415926 के बजाय।

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

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

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

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

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

भाषा के आधार पर, स्थिरांक अनटाइप्ड या टाइप किए जा सकते हैं। सी और सी ++ में, मैक्रोज़ पूर्व प्रदान करते हैं, जबकि उत्तरार्द्ध प्रदान करता है:

एडा में, सार्वभौमिक संख्यात्मक प्रकार हैं जिनका उपयोग वांछित होने पर किया जा सकता है:

अनटाइप्ड वेरिएंट को प्रत्येक उपयोग पर उपयुक्त प्रकार में परिवर्तित किया जा रहा है।

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

गतिशील रूप से मूल्यवान स्थिरांक एक चर को स्मृति के एक विशिष्ट क्षेत्र में रहने के रूप में निर्दिष्ट नहीं करते हैं, न ही संकलन समय पर मान निर्धारित किए जाते हैं। सी ++ कोड में जैसे

अभिव्यक्ति है कि स्थिरांक को आरंभीकृत किया जाता है, वे स्वयं स्थिर नहीं होते हैं। कार्यक्रम की वैधता या शब्दार्थ शुद्धता के लिए यहाँ निरंतरता का उपयोग आवश्यक नहीं है, लेकिन इसके तीन फायदे हैं: गतिशील रूप से मूल्यवान स्थिरांक ALGOL 68 के साथ एक भाषा सुविधा के रूप में उत्पन्न हुए। एडीए और सी ++ कोड के अध्ययन से पता चला है कि गतिशील रूप से मूल्यवान स्थिरांक आमतौर पर 1% या उससे कम वस्तुओं के लिए उपयोग किए जाते हैं, जब उनका अधिक उपयोग किया जा सकता है, क्योंकि कुछ 40-50% स्थानीय, गैर-वर्ग वस्तुएं वास्तव में एक बार अपरिवर्तनीय होती हैं। बनाया था। दूसरी ओर, इस तरह के अपरिवर्तनीय चर कार्यात्मक प्रोग्रामिंग में डिफ़ॉल्ट होते हैं क्योंकि वे बिना किसी दुष्प्रभाव (जैसे, पुनरावर्तन) के साथ प्रोग्रामिंग शैलियों का पक्ष लेते हैं या अधिकांश घोषणाओं को डिफ़ॉल्ट रूप से अपरिवर्तनीय बनाते हैं, जैसे एमएल (प्रोग्रामिंग भाषा)। विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग भाषाएं साइड-इफेक्ट्स को पूरी तरह से मना करती हैं।
 * 1) पाठक को यह स्पष्ट है कि एक बार सेट हो जाने के बाद वस्तु को और संशोधित नहीं किया जाएगा
 * 2) ऑब्जेक्ट के मूल्य को बदलने का प्रयास (बाद के प्रोग्रामर जो प्रोग्राम लॉजिक को पूरी तरह से नहीं समझते हैं) को कंपाइलर द्वारा अस्वीकार कर दिया जाएगा
 * 3) कंपाइलर यह जानकर कोड ऑप्टिमाइज़ेशन करने में सक्षम हो सकता है कि एक बार बनने के बाद ऑब्जेक्ट का मान नहीं बदलेगा।

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

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

इस विशेषता के अलावा, C++ में किसी कार्य या विधि को इस रूप में घोषित करना भी संभव है. यह ऐसे कार्यों या विधियों को स्थानीय चर के अलावा कुछ भी संशोधित करने से रोकता है।

सी # में, कीवर्ड मौजूद है, लेकिन फ़ंक्शन पैरामीटर के लिए समान प्रभाव नहीं है, जैसा कि C/C++ में होता है। हालाँकि, जाँच करने के लिए कंपाइलर को हिलाने का एक तरीका है, हालाँकि यह थोड़ा मुश्किल है। समान प्रभाव प्राप्त करने के लिए, पहले दो इंटरफ़ेस (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) परिभाषित किए गए हैं

फिर, परिभाषित विधियाँ केवल-पढ़ने या पढ़ने/लिखने की क्षमताओं के साथ सही इंटरफ़ेस का चयन करती हैं:

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

वस्तु-उन्मुख भाषाएँ जैसे C++ निरंतरता को और भी आगे बढ़ाती हैं। किसी संरचना या वर्ग के अलग-अलग सदस्यों को वर्ग नहीं होने पर भी स्थिर बनाया जा सकता है। इसके विपरीत, कीवर्ड एक वर्ग के सदस्य को बदलने की अनुमति देता है, भले ही किसी वस्तु को तत्काल किया गया हो.

सी ++ में भी कार्य स्थिर हो सकते हैं। यहाँ अर्थ यह है कि कॉन्स्ट के रूप में तात्कालिक वस्तु के लिए केवल एक कॉन्स्ट फ़ंक्शन को कॉल किया जा सकता है; एक कॉन्स्ट फ़ंक्शन किसी गैर-परिवर्तनीय डेटा को नहीं बदलता है।

सी # में दोनों हैं और ए  क्वालीफायर; इसका कॉन्स केवल संकलन-समय स्थिरांक के लिए है, जबकि कंस्ट्रक्टर और अन्य रनटाइम अनुप्रयोगों में केवल पढ़ने के लिए उपयोग किया जा सकता है।

जावा
जावा में क्वालीफायर कहा जाता है जो एक संदर्भ को बदलने से रोकता है और यह सुनिश्चित करता है कि यह कभी भी किसी भिन्न वस्तु की ओर इशारा नहीं करेगा। यह संदर्भित वस्तु में परिवर्तन को ही नहीं रोकता है। जावा का  मूल रूप से एक के बराबर है  सी ++ में सूचक। यह की अन्य सुविधाएँ प्रदान नहीं करता है.

जावा (प्रोग्रामिंग भाषा) में, क्वालीफायर बताता है कि प्रभावित डेटा सदस्य या चर असाइन करने योग्य नहीं है, जैसा कि नीचे दिया गया है:

यह संकलक द्वारा निर्णायक होना चाहिए जहां चर के साथ मार्कर प्रारंभ किया गया है, और इसे केवल एक बार किया जाना चाहिए, या कक्षा संकलित नहीं होगी। जावा का  और सी++  आदिम चर के साथ लागू होने पर कीवर्ड का एक ही अर्थ होता है।

संकेतकों को ध्यान में रखते हुए, ए {{Java|final}जावा में } संदर्भ का अर्थ कुछ समान है सी ++ में सूचक। सी ++ में, कोई निरंतर सूचक प्रकार घोषित कर सकता है।

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

नोट: जावा पॉइंटर्स का समर्थन नहीं करता है। ऐसा इसलिए है क्योंकि पॉइंटर (कंप्यूटर प्रोग्रामिंग) # जावा (प्रतिबंधों के साथ) जावा में ऑब्जेक्ट तक पहुंचने का डिफ़ॉल्ट तरीका है, और जावा उन्हें इंगित करने के लिए सितारों का उपयोग नहीं करता है। उदाहरण के लिए, i पिछले उदाहरण में एक सूचक है और उदाहरण का उपयोग करने के लिए इस्तेमाल किया जा सकता है।

C++ में केवल-पढ़ने के लिए डेटा के लिए पॉइंटर भी घोषित किया जा सकता है।

यहाँ bar कभी भी, कुछ भी इंगित करने के लिए संशोधित किया जा सकता है; बस उस नुकीले मूल्य को संशोधित नहीं किया जा सकता है bar सूचक।

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

जावा संग्रह ढांचा एक अपरिवर्तनीय रैपर बनाने का एक तरीका प्रदान करता है  के जरिए  और इसी तरह के तरीके।

जावा में एक विधि को अंतिम घोषित किया जा सकता है, जिसका अर्थ है कि इसे उपवर्गों में ओवरराइड नहीं किया जा सकता है।

सी#
सी शार्प (प्रोग्रामिंग लैंग्वेज) में | सी #, क्वालीफायर का डेटा सदस्यों पर समान प्रभाव पड़ता है  जावा में करता है और  C++ में करता है; संशोधक  के समान प्रभाव (अभी तक टाइप किया गया और वर्ग-दायरा) है  सी ++ में। जावा का अन्य, वंशानुक्रम-अवरोधक प्रभाव  जब विधियों और कक्षाओं पर लागू किया जाता है तो कीवर्ड की सहायता से सी # में प्रेरित होता है.

सी ++ के विपरीत, सी # विधियों और पैरामीटर को चिह्नित करने की अनुमति नहीं देता है. हालाँकि, कोई भी रीड-ओनली उप-वर्गों को पार कर सकता है, और .NET फ्रेमवर्क अपरिवर्तनीय संग्रहों को अपरिवर्तनीय संग्रहों में परिवर्तित करने के लिए कुछ सहायता प्रदान करता है, जिन्हें केवल-पढ़ने के लिए रैपर के रूप में पारित किया जा सकता है।

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

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

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

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

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

एक लागू परिपाटी यह है कि रूबी (प्रोग्रामिंग भाषा) में, कोई भी वेरिएबल जो एक बड़े अक्षर से शुरू होता है, एक स्थिरांक माना जाता है, जिसमें वर्ग के नाम भी शामिल हैं।

यह भी देखें

 * IBM/360 और Z/आर्किटेक्चर प्लेटफॉर्म के लिए पता स्थिरांक