प्राधिकरण का तर्क
खैर ... जाहिर है, अधिकांश भाषाएं, जिनमें बहुत हालिया हैं, वे शून्य-आधारित हैं। जैसा कि उन भाषाओं को काफी कुशल लोगों द्वारा लिखा गया था, आपके दोस्त को गलत होना चाहिए ...
क्यों एक?
क्यों 1 शून्य से बेहतर प्रारंभिक सूचकांक होगा? 2, या 10 क्यों नहीं? इसका उत्तर स्वयं दिलचस्प है क्योंकि यह विचार का बचाव करने वाले लोगों की प्रक्रिया के बारे में बहुत कुछ दिखाता है।
पहले तर्क है कि यह, और अधिक प्राकृतिक है, क्योंकि है 1 आम तौर पर है एक , अन्य सभी से पहले कम से कम लोगों के बहुमत के लिए ...
संख्या- एक तर्क यह है कि अंतिम सूचकांक भी सरणी का आकार है ...
मैं अभी भी उन कारणों की "गुणवत्ता" से प्रभावित हूं जो मैं आमतौर पर इस तरह के तर्कों के लिए सुनता हूं ... और इससे भी अधिक जब मुझे याद दिलाया जाता है कि ...
शून्य क्यों नहीं?
... "एक-आधारित" नोटेशन पश्चिमी संस्कृति से बचे हुए ओवर हैं जो सदियों से शून्य के अस्तित्व को अनदेखा करते हैं, यदि अधिक नहीं।
मानो या न मानो, मूल ग्रेगोरियन कैलेंडर -3, -2, -1, 1, 2, 3 से जाता है ... समस्या की कल्पना करने की कोशिश करें कि यह पश्चिमी विज्ञान में योगदान देता है (उदाहरण के लिए, 1 जनवरी -2 से कितने साल 1 जनवरी से 2 जनवरी तक मूल ग्रेगोरियन कैलेंडर की तुलना में देखने के लिए विकल्प के रूप में कुछ के साथ संघर्ष ...)।
एक-आधारित सरणियों की तरह रखना (ठीक है, मैं उस के लिए नीच हो जाऊंगा ... ^ _ ^ ...), 21 वीं शताब्दी में मील और गज की दूरी पर रखते हुए ...
शून्य क्यों? क्योंकि यह गणित है!
पहले (ओह ... क्षमा करें ... मैं फिर से कोशिश करूँगा)
शून्य , शून्य कुछ भी नहीं है, एक कुछ है। और कुछ धार्मिक ग्रंथ मानते हैं कि "शुरुआत में, कुछ भी नहीं था"। कुछ कंप्यूटर से संबंधित चर्चा धार्मिक बहस के रूप में जल सकती है, इसलिए यह बिंदु विषयों से बाहर नहीं है क्योंकि ऐसा लगता है ... ^ _ ^
सबसे पहले , शून्य-आधारित सरणी के साथ काम करना आसान है और एक-आधारित सरणी के साथ काम करने के बजाय इसके शून्य-वें मान को अनदेखा करना और इसके शून्य-वें मान को खोजने के लिए चारों ओर हैक करना। यह कारण पहले की तरह लगभग मूर्खतापूर्ण था, लेकिन फिर, एक-आधारित सरणियों के पक्ष में मूल तर्क काफी गिरावट था, भी।
दूसरा , आइए याद रखें कि संख्याओं के साथ काम करते समय, संभावनाएं अधिक होती हैं कि आप एक पल या किसी अन्य समय में गणित से निपटेंगे, और जब आप गणित से निपटेंगे, तो संभावना अच्छी है कि आप बेवकूफ हैक के लिए अप्रचलित सम्मेलनों के आसपास होने के मूड में नहीं हैं। एक-आधारित अंकन ने सदियों से गणित और तिथियों को भी त्रस्त कर दिया, और हमारी गलतियों से सीखते हुए, हमें भविष्य के उन्मुख विज्ञान (कंप्यूटर भाषाओं सहित) में इससे बचने का प्रयास करना चाहिए।
तीसरा , जैसा कि कंप्यूटर की भाषा सरणियों को हार्डवेयर से बांधा जा रहा है, 21 पूर्णांकों की C सरणी आवंटित करें, और सूचक 10 सूचक को दाईं ओर ले जाएं, और आपके पास एक प्राकृतिक [-10 से 10] सरणी होगी। यह हार्डवेयर के लिए स्वाभाविक नहीं है। लेकिन यह गणित के लिए है। बेशक, गणित अप्रचलित हो सकता है, लेकिन पिछली बार जब मैंने जाँच की, तो दुनिया के अधिकांश लोगों का मानना था कि यह नहीं था।
चार , जैसा कि पहले से ही कहीं और बताया गया है, यहां तक कि असतत स्थिति के लिए (या मूल्यों को कम करने के लिए), पहला सूचकांक शून्य होगा, जैसे किसी भवन में फर्श (शून्य पर शुरू), घटती उलटी गिनती (3, 2, 1, शून्य) !), जमीन की ऊँचाई, एक छवि का पहला पिक्सेल, तापमान (शून्य केल्विन, पूर्ण शून्य के लिए, या शून्य सेंटीग्रेड डिग्री, 273 K के पानी के ठंड तापमान के रूप में)। वास्तव में, केवल एक चीज जो वास्तव में किसी एक के साथ शुरू होती है, वह " पहले , दूसरे , तीसरे , आदि" का पारंपरिक तरीका है । पुनरावृत्ति संकेतन, जो मुझे स्वाभाविक रूप से अगले बिंदु तक ले जाता है ...
पांच अगले बिंदु (जो स्वाभाविक रूप से इस प्रकार पिछले ) है कि उच्च स्तर के कंटेनर, एक्सेस किया जाना चाहिए सूचकांक द्वारा नहीं है, लेकिन द्वारा iterators , जब तक कि सूचकांक के लिए खुद को एक आंतरिक मूल्य है। मुझे आश्चर्य है कि आपके "उच्च-स्तरीय भाषा" के वकील ने इसका उल्लेख नहीं किया। मामले में सूचकांक ही महत्वपूर्ण है, आप गणित से संबंधित प्रश्न को ध्यान में रखते हुए आधे समय का दांव लगा सकते हैं। और इस तरह, आप अपने कंटेनर को गणित के अनुकूल होना पसंद करेंगे, और 1 पर शुरू होने वाले "आपके पुराने ग्रेगोरियन कैलेंडर" जैसे गणित-अक्षम नहीं होंगे, और इसे काम करने के लिए regurgitated hacks की आवश्यकता होगी।
निष्कर्ष
आपके साथी प्रोग्रामर द्वारा दिया गया तर्क एक गिरावट है, क्योंकि यह अनावश्यक रूप से बोली जाने वाली / लिखित भाषा की आदतों को जोड़ता है, जो कि, स्वभाव से, कंप्यूटर की भाषाओं में धुंधली होती हैं (जहाँ आप अपने निर्देश को धुंधला नहीं करना चाहते हैं), और क्योंकि गलत तरीके से हार्डवेयर को जिम्मेदार ठहराते हैं इस समस्या का कारण, वह आपको समझाने की उम्मीद करता है, क्योंकि भाषा उच्च स्तर पर और उच्चतर होती है, कि शून्य-आधारित सरणी अतीत की बात है।
गणित से संबंधित कारणों के कारण शून्य-आधारित सरणियाँ शून्य-आधारित हैं। हार्डवेयर से संबंधित कारणों के लिए नहीं।
अब, अगर यह आपके साथी प्रोग्रामर के लिए एक समस्या है, तो क्या उसे पुनरावृत्तियों और फ़ॉरचिंग लूप जैसे वास्तविक उच्च स्तरीय निर्माणों के साथ प्रोग्राम करना शुरू कर दें।