XPath में अनुक्रमित क्यों 1 से शुरू होता है और 0 से नहीं?


117

कुछ सहयोगियों और मैं पिछले भाषाओं हम में प्रोग्राम था की तुलना कर रहे थे और साथ हमारे अनुभव के बारे में बात कर रहे थे VBScript इसके साथ अजीब तरह के रूप में सुविधाओं 1 आधारित सूचकांक के बजाय 0-आधारित अनुक्रमित लगभग प्रत्येक भाषा, तर्क किया जा रहा है कि यह एक था है की तरह डेवलपर्स के लिए भाषा के बजाय उपयोगकर्ताओं के लिए भाषा (जैसे एक्सेल VBA)।

फिर किसी ने कहा, " XPath में भी 1-आधारित इंडेक्स है " जो कि मुझे विश्वास नहीं हो रहा था जब तक कि मुझे यह लेख नहीं मिला जिसमें 0-आधारित दृष्टिकोण के पक्ष में कई कारण दिए गए हैं , जिनमें से कुछ स्वयं माइकल के से हैं:

  • "... शून्य-आधारित अनुक्रमणिका एक-आयामी सरणी पहुंच अभिव्यक्ति के साथ बहुआयामी सरणी तक पहुँचने पर सूचकांक फ़ार्मुलों को सरल बनाने का प्रयास करती है"
  • "जब तालिकाओं को संभालना, या तार में सब्स्क्राइब करना, शून्य-आधारित संबोधन अक्सर बहुत अधिक सुविधाजनक होगा"
  • "... हार्डवेयर एड्रेसिंग 0-आधारित एड्रेसिंग का एकमात्र लाभ नहीं है ... यह कम्प्यूटेशन को आसान बनाता है ..."

लेकिन तब माइकल Kay निष्कर्ष के रूप में उद्धृत किया गया है:

... 1-आधारित तर्क XPath और XSLT के लिए सही विकल्प था ... क्योंकि भाषा उपयोगकर्ताओं के लिए डिज़ाइन की गई थी, प्रोग्रामर के लिए नहीं, और उपयोगकर्ताओं के पास अभी भी एक अध्याय के रूप में एक पुस्तक में पहले अध्याय का जिक्र करने की यह पुराने जमाने की आदत है। एक...

क्या कोई मुझे समझा सकता है? (1) XPath उपयोगकर्ताओं के लिए कैसे बनाया गया है? मैं ऐसे किसी व्यक्ति की कल्पना नहीं कर सकता, जो XPath की क्रमिक कठोरता या XSLT की घोषणात्मक / कार्यात्मक-प्रोग्रामिंग-पहलुओं से जूझने वाला कोई डेवलपर नहीं है। और (2) वास्तव में XPath के रचनाकारों ने 1-आधारित सूचकांक का चयन करके आधुनिक प्रोग्रामिंग भाषाओं के आदर्श के खिलाफ क्यों चले गए?


7
इसी लेख में माइकल को निम्नलिखित शब्दों के साथ भी उद्धृत किया गया है: "मैं आपको यह नहीं बता सकता कि निर्णय का वास्तविक इतिहास क्या था? मैं केवल इसे तर्कसंगत बना सकता हूं"। यहां तक ​​कि अगर वह नहीं जानता है तो शायद कोई संतोषजनक जवाब नहीं है।
डर्क वोल्मार

5
मैंने इस प्रश्न को व्यक्तिपरक और तर्क के रूप में बंद करने के लिए मतदान किया है। 0-आधारित इंडेक्सिंग किसी भी तरह से 1-आधारित इंडेक्सिंग से बेहतर नहीं है और रिवर्स भी सही है: 1-आधारित इंडेक्सिंग किसी भी तरह से 0-आधारित इंडेक्सिंग से बेहतर नहीं है। दोनों के पास प्लेसेस और मिनस हैं। गैर-प्रोग्रामर के लिए 1-आधारित अनुक्रमण अधिक स्वाभाविक है। यह एक सीमा की ऊपरी सीमा को भी निर्दिष्ट करने की अनुमति देता है n, न कि बहुत अप्राकृतिक और अक्सर त्रुटियों के लिए अग्रणी n - 1। "आधुनिक प्रोग्रामिंग" तर्क के कारण विकृत लोगों के लिए, 1-आधारित अनुक्रमण का उपयोग करना शुरू करना एक सुखद और ताज़ा अनुभव होगा :)
Dimitre Novatchev

3
इस स्टैकओवरफ़्लो प्रश्न के उत्तर बताते हैं कि 0-आधारित इंडेक्स कई कारणों से पसंद किए जाते हैं: stackoverflow.com/questions/393462/defend-zero-based-arrays
एडवर्ड टंगुए

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

64
मुझे लगता है कि यह एक कानूनी सवाल है और इसे बंद नहीं किया जाना चाहिए था। यह एक ऐतिहासिक तथ्य के बारे में पूछता है जो कि राय का विषय नहीं है और इसका उत्तर ज्ञानवर्धक होगा।
बेन फ्लिन

जवाबों:


30

सरणी और अन्य संग्रह अनुक्रमणिका मेमोरी ऑफ़सेट का प्रतिनिधित्व करते हैं, इसलिए तार्किक रूप से पर्याप्त वे शून्य से शुरू होते हैं। XML और XPATH अनुक्रमित स्थिति और गणना का प्रतिनिधित्व करते हैं, इसलिए तार्किक रूप से वे एक पर शुरू होते हैं (और शून्य इसलिए "रिक्त" का प्रतिनिधि है)


8

इस प्रश्न का उत्तर देने के लिए, हमें कुछ तकनीकों के इतिहास की जांच करनी चाहिए।

RSS XML XSLT और XPath इतिहास

आरएसएस का संस्करण 0.9 मूल रूप से Netscape के my.netscape.com पोर्टल के लिए नेटस्केप के कुछ लोगों द्वारा 1999 में RDF साइट सारांश के रूप में जारी किया गया था। उस वर्ष बाद में, इसे v0.91 अद्यतन के साथ RSS (रिच साइट सारांश) का नाम दिया गया। परियोजना के विकास ने कई बार हाथ बदले, लेकिन आरएसएस संस्करण 1.0 को 2000 के दिसंबर तक जारी किया गया। v1.0 अपडेट के साथ, आरएसएस ने एक्सएमएल के लिए समर्थन शामिल किया।

2002 के दौरान v2.0 को RSS (वास्तव में सरल सिंडिकेशन) के रूप में सितंबर में जारी किया गया था और एक प्रमुख इंटरनेट प्रौद्योगिकी के रूप में विकसित होना शुरू हुआ। यह प्रारंभिक इतिहास में, आरएसएस फ़ीड (और XML डेटा वे निहित) कच्चे प्रारूप में मनुष्यों द्वारा पढ़ा जाता था। लगातार अद्यतन जानकारी को आउटपुट करने के लिए ब्लॉग और अन्य समाचार स्रोतों ने आरएसएस फ़ीड और एक्सएमएल का उपयोग किया। चूंकि XML को केवल नश्वर (गैर-प्रोग्रामर) द्वारा पढ़ा जा रहा था, XPath और XSLT को भी आसानी से समझने योग्य होने की आवश्यकता थी, ताकि इन मात्र नश्वर लोगों के साथ बातचीत करते समय जटिलता से अभिभूत न हों। यही कारण है कि XPath यूआरआई की शैली की नकल करता है, जो कुछ ऐसा है जो अंत-उपयोगकर्ता पहले से ही परिचित थे। उपयोगकर्ताओं द्वारा पठनीयता के उद्देश्य के लिए बनाई गई रियायतों में से एक, 0-आधारित अनुक्रमित के बजाय पुराने-आधारित नंबरिंग तकनीकों अर्थात 1-आधारित इंडेक्स का उपयोग करना था।

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

* शब्द, " मात्र नश्वर ," उन मनुष्यों को संदर्भित करता है जो प्रोग्रामर नहीं हैं


5
मुझे यकीन नहीं हो रहा है कि आरएसएस के साथ ऐसा करने के लिए बहुत कुछ है। उदाहरण के लिए, इस XSL विनिर्देश में (जो बाद में XPath और अन्य में अलग हो गया ) अप्रैल 1999 से, "स्थिति () फ़ंक्शन संदर्भ नोड सूची में संदर्भ नोड की स्थिति देता है। पहली स्थिति 1 है, और इसलिए अंतिम है। स्थिति अंतिम () के बराबर होगी। अप्रैल 1999 तक आरडीएफ का उपयोग करते हुए कोई "मात्र नश्वर" थे, जब इसका मसौदा तैयार किया गया था?
मैट गिब्सन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.