0 से शुरू होने वाली संख्याओं को अष्टक के रूप में क्यों मानते हैं?


22

मैंने पढ़ा है कि ऑक्टल्स कहाँ उपयोगी हैं? और ऐसा लगता है कि ऑक्टल्स कुछ ऐसे हैं जो एक समय उपयोगी थे।

कई भाषाएं 0 से पहले की संख्याओं को अष्टक के रूप में मानती हैं, इसलिए 010वास्तव में शाब्दिक 8 है। इनमें से कुछ जावास्क्रिप्ट, पायथन (2.7) और रूबी हैं।

लेकिन मैं वास्तव में यह नहीं देखता कि इन भाषाओं को ऑक्टल की आवश्यकता क्यों है, खासकर जब नोटेशन की अधिक संभावना का उपयोग एक दशमलव संख्या को एक शानदार 0 के साथ निरूपित करना है।

जावास्क्रिप्ट एक क्लाइंट-साइड भाषा है, ऑक्टल बहुत बेकार लगता है। तीनों अन्य अर्थों में बहुत आधुनिक हैं, और मुझे नहीं लगता कि ऑक्टल नोटेशन का उपयोग करके बहुत अधिक कोड होगा जो इस "सुविधा" को हटाकर टूट जाएगा।

तो, मेरे सवाल हैं:

  • क्या इन भाषाओं का कोई मतलब है जो अष्टक शाब्दिक है?
  • यदि अष्टक शाब्दिक आवश्यक हैं, तो कुछ का उपयोग क्यों न करें 0o10? एक पुरानी संकेतन की प्रतिलिपि क्यों करें जो अधिक उपयोगी उपयोग के मामले को ओवरराइड करता है?

24
क्या आप एक उत्तर के रूप में "साक्षात्कार के दौरान युवाओं को भ्रमित करने के लिए" स्वीकार करेंगे?
यानिस

11
C सिंटैक्स + ब्लाइंड कॉपीिंग के अनुरूप
शाफ़्ट

1
@ मिनेर्थ सी को यह अपने पूर्वजों से विरासत में मिला। जावा के पास है, क्योंकि C के पास है। अधिकांश अन्य के पास है, क्योंकि सी और जावा के पास है।
इंगो

2
एक अभी भी ऑक्टल यूनिक्स फ़ाइल को सही परिवर्तन देखता है: chmodउपयोगकर्ता, समूह और अन्य के लिए 3 बिट्स के समूहों के लिए 0666 या 0777 के साथ: पढ़ना, लिखना, निष्पादन योग्य।
जोप एगेनजेन

3
@Llepwryd पुराने ब्राउज़रों में, parseInt('010')वास्तव में 8 लौटा, इसलिए सभी सलाह हमेशा उपयोग करने के लिए parseInt(foo, 10)(और यह अभी भी मेरे लिए एक आदत है)
इज़काता

जवाबों:


34

C की ब्लाइंड कॉपी, ठीक उसी तरह जैसे कि शाफ़्ट फ्रीक ने अपनी टिप्पणी में कही है

"भाषा डिजाइनरों" के विशाल बहुमत ने इन दिनों कुछ भी नहीं देखा है लेकिन सी और इसकी प्रतियां (सी ++, जावा, जावास्क्रिप्ट, पीएचपी, और शायद कुछ दर्जन अन्य जिन्हें मैंने कभी नहीं सुना)। उन्होंने कुछ नाम रखने के लिए कभी भी फोरट्रान, कोबोल, एलआईएसपी, पास्कल, ओबेरॉन, फोर्थ, एपीएल, BLISS, SNOBOL को नहीं छुआ है।

एक बार, कई प्रोग्रामिंग भाषाओं के संपर्क में कंप्यूटर विज्ञान पाठ्यक्रम में MANDATORY था, और इसमें तीन अलग-अलग भाषाओं के रूप में C, C ++ और Java की गिनती शामिल नहीं थी।

ऑक्टल का उपयोग पहले के दिनों में किया जाता था क्योंकि इससे बाइनरी इंस्ट्रक्शन वैल्यू पढ़ना आसान हो जाता था। उदाहरण के लिए, PDP-11, BASICALLY के पास एक 4-बिट ओपकोड, 2 3-बिट रजिस्टर संख्या और 2 3-बिट एक्सेस तंत्र क्षेत्र थे। अष्टक में शब्द व्यक्त करने से सब कुछ स्पष्ट हो गया।

पीडीपी -11 के साथ सी के शुरुआती जुड़ाव के कारण, ऑक्टल संकेतन शामिल किया गया था, क्योंकि यह उस समय पीडीपी -11 पर बहुत आम था।

अन्य मशीनों में निर्देश सेट थे जो हेक्स के लिए अच्छा मैप नहीं करते थे। सीडीसी 6600 में 60-बिट शब्द था, जिसमें प्रत्येक शब्द में आमतौर पर 2 से 4 निर्देश होते थे। प्रत्येक निर्देश 15 या 30 बिट्स का था।

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

यह भी ध्यान दें: यदि आपका I / O सिस्टम 0 अर्थ ऑक्टल को डिफॉल्ट करता है, तो आपको हेक्साडेसिमल मानों को निरूपित करने के लिए अपने आउटपुट पर कुछ अन्य कन्वेंशन का उपयोग करना होगा। जरूरी नहीं कि यह जीत ही हो।

मेरी व्यक्तिगत राय में, Ada ने यह सबसे अच्छा किया: 2 # 10010010 #, 8 # 222 #, 16 # 92 #, और 146 सभी एक ही मूल्य का प्रतिनिधित्व करते हैं। (वह शायद मुझे कम से कम तीन डाउनवोट मिलेगा वहीं, सिर्फ आदा का उल्लेख करने के लिए।)


11
आपको आद्या का उल्लेख करने के लिए उकसाया गया है ... बस मजाक कर रहे हैं
kufi

12
मैं यह जानने के लिए उत्सुक हूं कि आप उस आंकड़े से कैसे आए, जो "भाषा डिजाइनरों" के 50% से अधिक है - क्यों डराता है? - सी वंश के अलावा किसी भी चीज के साथ कोई अनुभव नहीं है। मैंने अपने जीवन के अच्छे सोलह वर्ष हर दिन पेशेवर भाषा डिजाइनरों के साथ बात करते हुए बिताए और उनमें से एक भी आपके विवरण से मेल नहीं खाता।
एरिक लिपर्ट

जावास्क्रिप्ट को "हम ब्राउज़र में लिस्प करना चाहते हैं" के रूप में वर्णित किया गया था, इसके डिजाइनर को दिलचस्पी लेने के लिए, अगर मुझे वह साक्षात्कार सही ढंग से याद है ...
इज़काता

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

0 का उपयोग क्यों किया गया था? क्या यह एक गैर-संख्यात्मक चरित्र का उपयोग करने के लिए समझ में नहीं आएगा? क्या एएनएसआई मानक में केवल आधार दस होने की संख्या के कारण होने वाले कीड़ों की दूरदर्शिता नहीं थी?
ओल्ड बैडमैन ग्रे

6

वे इसे सी से प्राप्त करते हैं। प्रतिलिपि क्यों? क्योंकि सभी 3 का आधार कार्यान्वयन सी में है। पायथन का डिफ़ॉल्ट कार्यान्वयन सीपीथॉन है । रूबी मूल रूप से सी में भी बनाया गया था । जावास्क्रिप्ट यहां सबसे दिलचस्प मामला है। यह ब्राउज़र में चलाया जाता है। पहले वेब ब्राउजर में क्या लिखा गया था , इसका अंदाजा लगाने में सावधानी रखें ?

तो इन तीनों भाषाओं को C में क्यों लागू किया जाएगा? क्योंकि वे सभी UNIX सिस्टम पर उत्पन्न होते हैं। तो यह एक पारिस्थितिकी तंत्र द्वारा संचालित सम्मेलन का मामला है। पर्ल भी ऐसा करता है। यदि Lua युगल के बजाय पूर्णांक का उपयोग करता है तो Lua की संभावना है ।

इसलिए यह सी में लिखी जा रही इन भाषाओं के पर्यावरण का सवाल है, इसलिए वे सी से अपना कन्वेंशन लेते हैं। एक अच्छा सपोर्टिंग कोरोलरी विजुअल बेसिक है जो इसके बजाय O & O का उपयोग करता है । जहाँ तक इसकी आवश्यकता है, यह कुछ भी नहीं की तुलना में एक टपका हुआ अमूर्त सम्मेलन से अधिक होने लगता है।


क्या मोज़ेक ने जावास्क्रिप्ट का समर्थन किया? यदि नहीं, तो इसका उल्लेख कैसे प्रासंगिक है?
svick

2
@svick यह नेटस्केप नेविगेटर के लिए आधार रेखा है जिसने किया।
वर्ल्ड इंजीनियर

2

स्थिरता के लिए एक मूल्य है। यदि आप मज़बूती से यह निर्धारित नहीं कर सकते हैं कि किसी संख्या का अनुवाद कैसे किया जा रहा है तो आपको विभिन्न संदर्भों में एक मूल्य का उपयोग करके वास्तविक समस्याएं होंगी।

इसका मतलब यह भी है कि आपको अपना खुद का पार्सर नहीं लिखना है। अच्छी तरह से परीक्षण किए गए पुस्तकालय दिनचर्या का उपयोग करने में बहुत महत्व है।

इसके अलावा, यदि आप अग्रणी 0 सिंटैक्स का समर्थन नहीं करते हैं तो आपके पास ऑक्टल मान लिखने का सरल तरीका नहीं है।

जब तक हम एक बार ऑक्टल संख्याओं पर निर्भर नहीं करते हैं जैसा कि हमने एक बार किया था, वे अभी भी मूल्य के हैं। जबकि एक ही परिणाम हेक्साडेसिमल संख्याओं के साथ प्राप्त किया जा सकता है, कुछ संदर्भों में अष्टक को समझना आसान है।

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


3
अग्रणी शून्य वाले क्षेत्र तार हैं, दृश्य प्रतिनिधित्व अपने स्वयं के अर्थ के साथ, संख्या नहीं।
पीटर बी

1
+1 chmod 438 ./myfileभयानक मानते हैं !
इंगो

2
0o10वाक्यविन्यास की अनुमति क्यों नहीं ? मेरा मानना ​​है कि पायथन इसका समर्थन करता है। आप हमेशा अष्ट मान लिखने के लिए एक सरल तरीका बना सकते हैं जो संख्या को सामान्य संख्या नहीं बनाता है। मैंने देखा है कि लोग संरेखण और आसान हेरफेर के लिए
कोडिंग

मैं बाइनरी और हेक्स के अलावा, ऑक्टल मूल्यों को लिखने का एक साधन होने की इच्छा को समझ सकता हूं। मैं यह भी समझ सकता हूं कि 031क्रिसमस (25 दिसंबर) के बजाय हैलोवीन (31 अक्टूबर) के रूप में एक संकलक की व्याख्या होने पर कुछ जोखिम हो सकते हैं यदि प्रोग्रामर एक भाषा में लिखे गए कोड को कॉपी करते हैं जो बाद के कार्यान्वयन का उपयोग करता है। मुझे कोई कारण नहीं दिखता है, हालाँकि, क्यों एक भाषा दोनों दुनिया के सर्वश्रेष्ठ को प्राप्त करने का समर्थन नहीं कर सकती 0q31है, जब ऑक्टल वांछित है, या 0t025बेस-दस के लिए अग्रणी ज़ीरो के साथ मैक्रो-चिपकाने वाले मूल्यों की अनुमति देने के लिए, और बस आधार विनिर्देश के बिना अग्रणी ज़ीरो को मना करने के लिए। ।
सुपरकैट

@supercat ऑक्टल डेट बैक का प्रतिनिधित्व करने के लिए अग्रणी 0 का उपयोग कम से कम अपने युवाओं के लिए करें। जिन मामलों में इसका अक्सर उपयोग किया जाता है वे ऐसे मामले हैं जहां बिट्स का महत्व है, और दशमलव संख्या के रूप में संख्या की व्याख्या केवल 10 से कम मानों के लिए सही है। अतिरिक्त वर्ण जोड़ना (दशमलव संख्याओं पर अग्रणी शून्य सहित) सहायक से अधिक भ्रामक हो सकते हैं । मैं निश्चित रूप से
पूछूंगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.