प्रोग्रामिंग भाषाओं ने असाइनमेंट के लिए = का उपयोग क्यों शुरू किया?


13

अधिकांश शुरुआती एल्गोरिदम पुस्तकों में, <-असाइनमेंट के =लिए संदर्भित किया जाता है और तुलना करने के लिए संदर्भित किया जाता है। लेकिन आजकल एकमात्र ऐसी भाषाएं जो =असाइनमेंट के लिए उपयोग नहीं होती हैं, पास्कल ( :=) और COOL जैसी खिलौना भाषाएँ हैं । आधुनिक प्रोग्रामिंग भाषाओं =ने समानता के गणितीय अर्थ के बजाय अर्थ असाइनमेंट में बदल दिया?


8
मुझ पर शुरू मत करो ===...
हिरण हंटर

1
एल्गोरिदम के काम में आम रहता है; एल्गोरिथम लिखते समय असाइनमेंट के लिए यह तीन सामान्य सूचनाओं में से एक है (अन्य जा रहा है :=और =)। सिर्फ इसलिए कि प्रोग्रामर सभी उपयोग =करते हैं, इसका मतलब यह नहीं है कि गणितज्ञ सभी गिरा देते हैं
cpast

@DeerHunter ===ठीक है।
डार्थ एलीजियस

1
मेरे पास एक मिडिल स्कूल की लड़की हॉवेल थी: "एक्स एक्स एक्स प्लस वन कैसे हो सकता है?" एक इंट्रो में मैंने पढ़ाया था। कंप्यूटर की मौलिक विचित्रता है: चर प्रकृति में मौजूद नहीं हैं, वे ब्रह्मांड में किसी भी अन्य चीज के विपरीत हैं।

1
User251748: मेरा बटुआ एक वास्तविक विश्व चर है, जिसमें सिक्कों, बैंक नोटों, और कभी-कभी कागज के बिट्स का एक बहु सेट होता है।
gnasher729

जवाबों:


14

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

एक बुरे विचार के लिए एक कुख्यात उदाहरण असाइनमेंट को निरूपित करने के लिए समान संकेत का विकल्प था। यह 1957 में फोरट्रान में वापस चला जाता है, और भाषा डिजाइनरों की सेनाओं द्वारा नेत्रहीन रूप से कॉपी किया गया है। यह एक बुरा विचार क्यों है? क्योंकि यह "=" "समानता के लिए तुलना को निरूपित करने के लिए एक सदी पुरानी परंपरा को उखाड़ फेंकता है, एक विधेय जो सच है या गलत है। लेकिन फोरट्रान ने इसका मतलब असाइनमेंट, समानता का प्रवर्तन किया। इस मामले में, ऑपरेंड असमान पायदान पर हैं: बाएं ऑपरेंड (एक चर) को सही ऑपरेंड (एक अभिव्यक्ति) के बराबर बनाया जाना है। x = y का मतलब वही नहीं है जो y = x का है।

-निक्लॉस विर्थ, गुड आइडियाज़, थ्रू द लुकिंग ग्लास

कोनराड ज़ूस ने प्लांकालकुल के लिए समान चिह्न का भी उपयोग किया , जो रतिसहॉउस के सुपरप्लान के लिए प्रेरित था, हालांकि इसके लिए एक संकलक कभी तैयार नहीं हुआ था। उसने बराबरी का चिन्ह क्यों चुना? मुझे लगता है कि आपको उससे पूछना होगा।


4
खैर, निश्चित रूप से बदतर विचार थे। आखिरकार, गणित ग्रंथ =एक विधेय के रूप में और चर को परिभाषित करने के लिए दोनों का उपयोग करते हैं, उदाहरण के लिए "Let x = 4. फिर √ (x - y) शून्य है यदि y = 4"। यह काम करता है क्योंकि गणित संकेतन को अनिवार्य रूप से अनिवार्य रूप से घोषित किया जाना चाहिए। कार्यात्मक प्रोग्रामिंग भाषाएं (जैसे कि एमएल परिवार) गैर-परिवर्तनशील चर के लिए डिफ़ॉल्ट हैं और इसलिए =बिना किसी समस्या के अपनी दोहरी भूमिका में उपयोग करना जारी रख सकती हैं। या अधिक सटीक =रूप से, letसिंटैक्स का एक ऑपरेटर और हिस्सा दोनों है ।
अमन

2
@ वामन: मैं गणित में दोहरे अर्थ को लेकर असहमत हूं। "Let 4 = x" केवल "Let x = 4" के रूप में मान्य है।
से आया

4
@COMEFROM "Let 4 = x" के बारे में अस्वाभाविक के रूप में है के रूप में आप अपने उपयोगकर्ता नाम ले जिसमें से INTERCAL बयान। जब "x" को पहले कभी उल्लेख नहीं किया गया है, तो "Let x = {something}" या "Let x be a {widget}" इसके मूल्य को निर्दिष्ट करने के अलावा एक चर का परिचय देता है और यह कन्वेंशन द्वारा पहले वैरिएबल डालता है। यह ठीक है क्योंकि, कम से कम अंतर्ज्ञान के संदर्भ में, यह केवल "मूल्य बराबर ..." बताते हुए एक अलग बात है।

3
@delnan "लेट x = 4" "लेट x x x और x = 4" के लिए शॉर्टहैंड है। संदर्भ नए चर का परिचय देता है और =फिर बस एक विधेय होता है, जैसा कि यह कहीं और है इसका उपयोग किया जाता है। ध्यान दें कि संदर्भ के आधार पर, "लेट x = 4" का अर्थ "लेट x ℝ ℝ और x = 4" भी हो सकता है।
डोभाल

2
@RobertHarvey हम गणितीय लेखन के बारे में बात कर रहे हैं, न कि सी प्रोग्रामिंग। COME FROM: मैंने स्वीकार किया कि यह पहले की तरह स्पष्ट कटौती नहीं है, लेकिन जब से गणितीय गद्य सम्मेलनों पर आधारित है और कोई विनिर्देश नहीं है जो "4 = x" को अनुमति देने के लिए वकील हो सकता है, नहीं, कहा गया है कि बयान "x = 4" के रूप में मान्य नहीं है । बहुत कम से कम, यह पाठकों को भ्रमित करता है और इसलिए गद्य के प्राथमिक उद्देश्य को विफल करता है

7

लेकिन जब मैंने स्कूल में गणित किया "लेट x = 123"

आम बात थी। बेसिक के शुरुआती संस्करणों ने बराबर से पहले "लेट" कीवर्ड पर जोर दिया। तो इसका मूल रूप से "लेट" करने के लिए किया गया फोड़ा समझा जाता है।

एक मुख्य चालक को आमतौर पर नहीं माना जाता है, लेकिन उस समय बहुत महत्वपूर्ण होता है जो आपने वास्तव में टाइप किया था।

दो व्यवहार्य इनपुट डिवाइस थे,

  • "टेलेटाइप" जिसके द्वारा आप पेपर रिबन में छोटे छिद्रों को पंच करने के लिए एक मानक टेलेटाइप मशीन का उपयोग कर सकते हैं जिसे तब कंप्यूटर द्वारा पढ़ा जा सकता है। यह इतना बुरा नहीं था क्योंकि इसने आपके कीबोर्ड की शीर्ष पंक्ति में ऊपरी और निचले मामले में मानक aplphabet के अधिकांश वर्णों का समर्थन किया था।
  • छिद्रित कार्ड - बड़े निगमों में सॉर्टर्स, टैबलेटर और प्रिंटर के उपयोग के रूप में बहुत सारे पंच कार्ड मशीन लटके हुए थे। ये एक सीमित सीमित चरित्र सेट ऊपरी मामले केवल वर्णमाला और "विशेष" वर्णों की सीमित संख्या का समर्थन करते हैं।

Teletypes अकादमिक और सैन्य दुकानों, अधिक व्यावसायिक दुकानों में कार्ड पंचों में इस्तेमाल किया जा सकता है। इसलिए शैक्षणिक भाषाओं जैसे पास्कल ने लोअर केस आइडेंटीवर्स और असाइनमेंट के लिए "समझदार" जैसे ": =" का समर्थन किया। अधिक वाणिज्यिक दर्शकों के उद्देश्य से भाषाएं मानती थीं कि छिद्रित कार्ड इनपुट का मुख्य रूप होगा इसलिए ऊपरी मामला केवल FORTRAN और COBOL जैसी भाषाओं में ":;> <" वर्णों के लिए सीमित समर्थन होता है जो एक मानक कीपंच पर अनुपलब्ध थे।

संयोग से "=" के बारे में कोई अस्पष्टता नहीं थी क्योंकि प्रारंभिक फोरट्रान में असाइनमेंट के लिए उपयोग किया जा रहा था क्योंकि तुलना में ".LT", ".LE", ".EQ", ".GE" का उपयोग किया जा रहा था। और ".GT।" वाक्य - विन्यास।


मैं किसी भी तरह के असाइनमेंट की तुलना में let x = 123अधिक अनुरूप हूं assert(x == 123), हालांकि।
एकेहोलैंड

1
पुनश्च यदि आप पांडित्यपूर्ण हो रहे हैं तो कंप्यूटर "COVE" वाक्यविन्यास सबसे सटीक वर्णन है कि कंप्यूटर वास्तव में क्या कर रहा है। हालांकि "COPY" और भी सटीक होगा।
जेम्स एंडरसन

@AKHandand 123 के बड़े मूल्यों के लिए।

चूंकि C ++ ने मूव कंस्ट्रक्टर्स का आविष्कार किया था, COBOLs "MOVE" बहुत अजीब लगता है।
gnasher729 16

मैंने हमेशा सोचा था कि एलईटी को बीएएसआईसी में अनिवार्य होना चाहिए था, क्योंकि यह समानता परीक्षण के अलावा असाइनमेंट स्टैंड बना देगा। COBOL-ish शॉर्टहैंड की तरह। समस्या यह है कि, स्रोत में एक और टोकन ले लिया जाएगा, उस समय के छोटे से पीसी में एक और कीमती बाइट। इसलिए उन्होंने इसे गिरा दिया।
चक एडम्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.