एक्सप्रेशन के बजाय XOR के लिए कैरेट का इस्तेमाल क्यों किया गया?


32

ऐसा नहीं है कि यह वास्तव में किसी के लिए एक समस्या है, जो पहले इस वाक्यविन्यास मुद्दे का सामना कर चुका है, लेकिन मैं ^व्यापक रूप से स्वीकार किए गए गणितीय घातांक ऑपरेशन के एवज में XOR ऑपरेशन के रूप में कार्यवाहक ( ) के उपयोग से उपजी भ्रम की एक बड़ी मात्रा को देखता हूं ।

बेशक, बहुत सारी जगहें हैं जहां कैरेट के (गलत) उपयोग को समझाया और ठीक किया गया है, लेकिन मैं किसी भी निश्चित स्रोतों में नहीं आया हूं कि कैरट को एक अलग अर्थ क्यों दिया गया था।

क्या यह सुविधा की बात थी? एक दुर्घटना? जाहिर है कि तर्क विभिन्न भाषाओं के लिए भिन्न हो सकते हैं, इसलिए किसी भी संबंध में जानकारी व्यावहारिक होगी।


जवाबों:


58

हालांकि पुराने पूर्ववर्ती, प्रभावशाली फ्रांसीसी गणितज्ञ रेने डेसकार्टेस आमतौर पर है श्रेय superscripted घातांक (एक शुरू करने के लिए गणितीय लेखन में), अपने काम में Geometrie जो 1637 में प्रकाशित हुआ था इस टिप्पणी अभी भी सार्वभौमिक आज गणित में प्रयोग किया जाता है।

फोरट्रान सबसे पुरानी प्रोग्रामिंग भाषा है जिसका उपयोग संख्यात्मक अभिकलन के लिए व्यापक रूप से किया जाता है जो एक घातांक ऑपरेटर प्रदान करता है, यह 1954 तक है। घातांक संचालन को एक डबल तारांकन द्वारा निरूपित किया जाता है **। यह ध्यान दिया जाना चाहिए कि उस समय कई कंप्यूटरों ने 6-बिट चरित्र एन्कोडिंग का उपयोग किया था जो कि एक कैरेट चरित्र प्रदान नहीं करता था ^**बाद में इसका उपयोग विभिन्न और हालिया प्रोग्रामिंग भाषाओं के रचनाकारों द्वारा अपनाया गया, जो कि पायथन के रूप में एक एक्सप्रेशन के संचालन की पेशकश करते हैं।

पहला व्यापक रूप से अपनाया गया चरित्र सेट जिसमें कैरेट ^7-बिट ASCII एन्कोडिंग था, जिसे पहली बार 1963 में मानकीकृत किया गया था। मुझे सबसे पुरानी प्रोग्रामिंग भाषा से अवगत है कि घातांक को दर्शाने के लिए कैरट का उपयोग किया जाता है। समय आईबीएम ने EBCDIC वर्ण एन्कोडिंग को अपनाया , जिसमें कैरेट भी शामिल है ^

सी भाषा 1972 में अस्तित्व में आई। यह एक प्रतिपादक ऑपरेटर प्रदान नहीं करती है, बल्कि यह पुस्तकालय कार्यों जैसे कि प्रतिरूपण का समर्थन करती है pow()। इसलिए सी में घातांक के लिए किसी भी प्रतीक को अलग करने की आवश्यकता नहीं है, और अन्य, बाद में, सी-परिवार में भाषाएं, जैसे सी ++ और सीयूडीए।

दूसरी ओर, और उस समय तक प्रोग्रामिंग भाषाओं के लिए असामान्य, सी बिटवाइज़ ऑपरेशन के लिए प्रतीक प्रदान करता है। 7-बिट ASCII में उपलब्ध विशेष वर्णों की संख्या सीमित थी, और चूंकि कुछ विशेष वर्णों के लिए अन्य कार्यों का "प्राकृतिक आत्मीयता" था, उदाहरण के &लिए AND और ~NOT के लिए, XOR के लिए प्रतीक के लिए बहुत सारे विकल्प नहीं थे। ।

मुझे रिची या कर्निघन द्वारा प्रकाशित एक प्रकाशित तर्क के बारे में पता नहीं है कि उन्होंने ^एक्सओआर को विशेष रूप से निरूपित करने के लिए क्यों चुना ; इस मुद्दे पर रिची का C का संक्षिप्त इतिहास मौन है। सी, के अग्रदूत के लिए विनिर्देश पर एक नजर भाषा बी , पता चलता है कि यह एक XOR ऑपरेटर नहीं था, लेकिन पहले से ही सभी विशेष वर्ण के अलावा अन्य के लिए इस्तेमाल किया ^, $, @, #

[अपडेट] मैंने केन थॉम्पसन, बी के निर्माता और सी के सह-रचनाकारों में से एक को ईमेल भेजा, ^सी के एक्सओआर ऑपरेटर के रूप में चुनने के औचित्य के बारे में पूछताछ की और यहां जवाब साझा करने की अनुमति मांगी। उनका जवाब (पठनीयता के लिए थोड़ा सुधारित):

से: केन थॉम्पसन
भेजा गया: गुरुवार, 29 सितंबर, 2016 4:50 पूर्वाह्न
से: नॉर्बर्ट जाफा
विषय: रे: सी में XOR ऑपरेटर के रूप में कार्यवाहक की पसंद के पीछे तर्क?

यह पात्रों का एक यादृच्छिक विकल्प था।

अगर मैं इसे फिर से करने के लिए था (जो मैंने किया था) मैं xor (^) और बिट पूरक (~) के लिए एक ही ऑपरेटर का उपयोग करूंगा।

चूंकि ^ अब जाना जाता है, इसलिए बेहतर ऑपरेटर है, ^ xor है और पूरक भी है।

^"गणित" में घातांक के उपयोग के लिए जिसे आप संदर्भित करते हैं, वह वास्तव में उपयोग की जाने वाली टाइपिंग सिस्टम के लिए बाद की तारीख में स्थापित किया गया है जैसे कि नूथ की टीएक्स जो 1978 तक चली जाती है, बीजगणित प्रणालियों जैसे मैथमेटिका के लिए कमांड लाइन इंटरफेस 1988 तक, और ग्राफिंग 1990 के दशक की शुरुआत में कैलकुलेटर।

इन उत्पादों ने ^घातांक का उपयोग क्यों अपनाया ? परिकलकों के मामले में मुझे BASIC के प्रभाव पर संदेह है। 1980 के दशक में यह एक बहुत ही लोकप्रिय पहली प्रोग्रामिंग भाषा थी और इसे अन्य सॉफ्टवेयर उत्पादों में भी एम्बेड किया गया था। इसलिए नोटेशन गणनाकर्ताओं के कई खरीदारों से परिचित होता। मेरी स्मृति अस्पष्ट है, लेकिन मेरा मानना ​​है कि गणना करने वाले भी थे जो वास्तव में सरल बुनियादी व्याख्याकार थे।


4
यह कुछ अच्छा इतिहास सबक है। तो असली सवाल यह होगा कि "टेक्स का सॉफ्टवेयर (और उस अवधि से अन्य) ने XOR प्रतीक का उपयोग करने का फैसला क्यों किया है?" ;)
एक्सलएच

5
@ AxelH वास्तव में, ऐसा नहीं है। TeX सुपरस्क्रिप्ट के^ लिए उपयोग करता है । और यह मेरे लिए सुपरस्क्रिप्ट के लिए "अप" वर्ण और सबस्क्रिप्ट के लिए "डाउन" चरित्र ( ) का उपयोग करने के लिए समझ में आता है । _
13

2
@AxelH मैं svick से सहमत हूं कि ^एक ऊपर तीर का सुझाव है, जो बदले में एक सुपरस्क्रिप्टेड घातांक की पारंपरिक स्थिति पर संकेत देता है, इसलिए यह एक प्राकृतिक फिट का एक सा है। मुझे यकीन है कि डोनाल्ड नुथ ^TeX में घातांकता के लिए उपयोग करने के अपने फैसले के बारे में पूछताछ करने वाले एक ईमेल का जवाब देंगे , लेकिन यह देखते हुए कि वह अधिक महत्वपूर्ण चीजों पर काम करने में व्यस्त है, जैसे कि TAOCP को पूरा करना, मैं उस कदम को नहीं उठाना चाहता था (मैं समझता हूं कि यह)।
njuffa

7
En.wikipedia.org/wiki/Caret के अनुसार , Algol 60 ने घातांक के लिए एक ऊपर की ओर इंगित करने वाले तीर का उपयोग किया, और नोट किया कि मूल रूप से ASCII में समान कोड बिंदु पर एक अप तीर था जहां वर्तमान में यह कैरेट प्रतीक है, इसलिए दोनों स्पष्ट रूप से थे एक ही समय के आसपास एक दूसरे के बराबर।
पेरियाटा ब्रीटा

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