मेरा मानना है कि शून्य और अशक्त दोनों के उपयोग का कारण यह है कि पूर्व मुख्य रूप से एक संज्ञा है, और उत्तरार्द्ध मुख्य रूप से एक विशेषण है (मैंने वेब पर और मेरे पेपर डिक्शनरी: अमेरिकन हेरिटेज 1992 में जाँच की)।
अर्थ और इतिहास के बारे में, NIL लैटिन "निहिल" से एक संकुचन है जिसका अर्थ है "कुछ भी नहीं"।
मेरी जानकारी के लिए, nil
एक शून्य सूचक को निरूपित करने के लिए नाम का उपयोग प्रोग्रामिंग भाषा लिस्प (1958) के साथ पेश किया गया था ।
एक नल पॉइंटर एक सूचक मूल्य कि कुछ भी नहीं करने के लिए बात करने के लिए माना जाता है है, और इस तरह dereferenced नहीं किया जाना चाहिए। ज्यादातर मामलों में, पॉइंटर्स केवल मेमोरी एड्रेस होते हैं। किसी भी चर (यानी, किसी भी स्थान) को ऐसे पॉइंटर को शामिल करने का इरादा होता है जिसमें हमेशा बिट्स के कुछ कॉन्फ़िगरेशन होते हैं, और ऐसे किसी भी कॉन्फ़िगरेशन को मेमोरी एड्रेस के रूप में पढ़ा जा सकता है। इसलिए यह अक्सर ऐसा होता है कि मान nil
एक मेमोरी क्षेत्र का पता होगा जो प्रोग्राम के लिए मना किया जाता है, इस प्रकार विफलता के कुछ रूप का कारण बनता है (संभवतः व्यवधान) यदि प्रोग्राम डीरेफेरेंस का प्रयास करता है nil
, जो केवल एक त्रुटि हो सकती है।
इस भूमिका को निभाने के लिए एक अद्वितीय पूर्वनिर्धारित मानक मान होना स्पष्ट रूप से पॉइंटर्स का उपयोग करने वाली भाषाओं में आवश्यक है, क्योंकि यह परीक्षण करने में सक्षम होना महत्वपूर्ण है कि क्या कोई सूचक कुछ स्मृति स्थान पर इंगित कर रहा है या नहीं। आमतौर पर, लिस्प में, एक सूची को "कंस" जोड़े के उत्तराधिकार के रूप में बनाया गया था, जिसमें एक सूची तत्व के लिए "कार" सूचक और अगली जोड़ी के लिए एक "सीडीआर" सूचक था। सूची की अंतिम जोड़ी में, दूसरा सूचक था nil
।
यह किसी सूची की पुनरावर्ती परिभाषा से मेल खाता है या तो एक खाली सूची, या सूची तत्व जो किसी सूची में सम्मिलित है। इसलिए बिना किसी तत्व के एक सूची का प्रतिनिधित्व किया गया था nil
। यह खाली सूची, सूची की पहचान के लिए होती है।
चूंकि सूचियों का उपयोग सेटों का प्रतिनिधित्व करने के लिए किया जा सकता है, इसलिए उस स्थिति में खाली सेट का भी प्रतिनिधित्व किया जा सकता है nil
।
इस प्रकार nil
ऐतिहासिक रूप से एक विशेष सूचक मूल्य था, लेकिन अन्य अधिक अमूर्त डोमेन के लिए एक विशेष पहचान मूल्य के रूप में समझा गया, जैसे कि सूची या सेट।
एक संकेतक के बराबर nil
एक शून्य सूचक था, एक मूल (यानी एक संज्ञा) के बजाय एक विशेषण होने के कारण अशक्त था।
विशेषण और संज्ञा के रूप में दोनों शब्द का समन्वित उपयोग अन्य अभ्यास के साथ काफी सुसंगत है। क्वालीफायर नल का उपयोग अक्सर बीजगणितीय संरचना के शून्य के लिए किया जाता है, जैसे कि एक मोनोइड की पहचान: शून्य तत्व । सूचियाँ एक मोनॉइड बनाती हैं , जहाँ मान शून्य पहचान है। वही सेट का सच है (हालांकि वे कई और गुणों के साथ एक बीजगणित बनाते हैं)। एक जैसा कहता है कि एक पूर्णांक शून्य है जब यह शून्य है।
इन शब्दों के उपयोग पर बहुत सारी विविधताएं हैं, जैसे कि प्रोग्रामिंग भाषाओं के लेखकों और अज्ञात लोगों के आधार पर कोई भी नहीं।
जैसा कि ऊपर बताया गया है, दो प्रमुख अर्थ हैं
एक मानक "अपरिभाषित मूल्य" के रूप में, वास्तव में किसी भी प्रयोग करने योग्य मूल्य की अनुपस्थिति का प्रतिनिधित्व करता है।
कुछ डोमेन के पहचान मूल्य के रूप में
इससे पता चलता है कि यह दावा करना बिल्कुल सही नहीं है कि NIL " एक मूल्य है जो " एक मूल्य की अनुपस्थिति का प्रतिनिधित्व करता है ", जैसा कि गिले द्वारा स्वीकार किए गए उत्तर में किया गया है । यह भाषा और उसके उपयोग पर निर्भर करता है। प्रोग्रामिंग भाषा लिस्प शायद 55 साल पहले प्रोग्रामिंग शब्दावली में शून्य की शुरुआत की। एलआईएसपी में, NIL
खाली सूची है, और समकक्ष रूप से नोट किया जा सकता है ()
जो खाली सूची का प्राकृतिक प्रतिनिधित्व है।यह एक मूल्य की अनुपस्थिति का प्रतिनिधित्व नहीं करता है। इसे कभी-कभी लापता मानों के लिए स्थान-धारक के रूप में उपयोग किया जाता है, हालांकि इसे अक्सर सटीक रूप से टाला जाना चाहिए क्योंकि खाली सूची एक मूल्य है। प्रोग्रामर द्वारा चुनी गई किसी भी मनमानी वस्तु में एक संरचना में एक लापता मूल्य के लिए क्या खड़ा है, स्वीकार्य मूल्यों के साथ भ्रमित नहीं किया जा सकता है।
दोनों अवधारणाएं अलग-अलग हैं, भले ही हमने ऊपर दिखाया है कि वे संबंधित हो सकते हैं। यह देखने के लिए दिलचस्प हो सकता है कि गाइल्स'आर्क द्वारा उल्लिखित शब्दावली के उपयोग की एक विस्तृत विस्तृत वर्गीकरण है, यह देखने के लिए कि इनमें से प्रत्येक शब्द का उपयोग एक अर्थ या दूसरे की ओर अधिक उन्मुख है या नहीं।
नाम दिए गए संदर्भ को परिभाषित करने के लिए किसी भी अधिक से अधिक नहीं हैं जो उन्हें दिए गए संदर्भ में अर्थ के लिए सौंपा गया है। कुछ उपयोग अधिक सामान्य, अधिक प्राकृतिक, या अधिक सुसंगत हैं, लेकिन किसी को हमेशा परिभाषाओं की जांच करनी चाहिए और यह सुनिश्चित करना चाहिए कि प्रत्येक संदर्भ में क्या अर्थ था। और किसी को हमेशा स्वाद या स्थिरता के साथ शब्दावली का चयन करने की उम्मीद नहीं करनी चाहिए।
NULL
(सी संगतता के लिए) और हैंnil
; कॉलिंग मेथड्सnil
नो-ऑप है। जावास्क्रिप्ट में दोनोंnull
(कुछ भी नहीं का प्रतिनिधित्व करने वाला एक मूल्य) औरundefined
(मान भी सेट नहीं है)।