रिवर्स पॉलिश नोटेशन का क्या महत्व है?


21

मैं 18 साल के बच्चों को कंप्यूटिंग सिखाता हूं। रिवर्स पॉलिश संकेतन होने के बाद उन्हें समझाया कि एक व्यक्ति ने सार्वजनिक परीक्षा में होना क्यों महत्वपूर्ण है। मैंने 70 के दशक के कैलकुलेटर का ऐतिहासिक महत्व समझाया लेकिन यह वास्तव में इस मुद्दे को हल करने में विफल रहा। तो आरपीएन के समवर्ती व्यावहारिक या सैद्धांतिक अनुप्रयोग हैं।


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

यहां एक नियमित अभिव्यक्ति इंजन का कार्यान्वयन है जो पोस्टफ़िक्स संकेतन का उपयोग करता है: swtch.com/~rsc/regexp/regexp1.html#thompson । केन थॉम्पसन ने अपने पहले कार्यान्वयन में भी इसका इस्तेमाल किया था। इसके अलावा, यह रन-टाइम पर अभिव्यक्ति का मूल्यांकन करने के लिए एक लोकप्रिय तकनीक है (यदि आप एक कंपाइलर का निर्माण कर रहे हैं)।
saadtaame

RPN में आप कोष्ठक का उपयोग किए बिना किसी भी अभिव्यक्ति को लिख सकते हैं।
सेग फॉल्ट

3
RPN पर विकिपीडिया लेख बहुत जमीन को कवर करता है। तर्क ग्रंथ कभी-कभी पॉलिश नोटेशन (क्योंकि यह ब्रैकेट मुक्त है) को संदर्भित करते हैं, जब वे बताते हैं कि शुद्ध "सिंटैक्टिक शुगर" के रूप में प्रमाण से क्या छोड़ा जा सकता है। हालांकि, आरपीएन स्टैक के अपने करीबी रिश्ते के कारण महत्वपूर्ण है। इंटरैक्टिव डिबगिंग के लिए स्टैक को समझना महत्वपूर्ण है, क्योंकि प्रसिद्ध "बैकट्रेस" आम तौर पर सिर्फ एक स्टैक डंप है। शुद्ध कार्यात्मक भाषाएं अभी भी डिबगिंग के लिए स्टैक डंप के बराबर कुछ पेश करने के लिए संघर्ष कर रही हैं, यहां तक ​​कि उनके पास प्रस्तुत करने के लिए बहुत अधिक विस्तृत जानकारी होगी (यदि वे इसका प्रतिनिधित्व कर सकते हैं)।
थॉमस क्लिंपेल

मुझे अपनी पूर्व टिप्पणी को आंशिक रूप से वापस लेना होगा। मैंने देखा है कि किसी ने स्ट्रिंग-डंप पेड़ों के लिए पोस्ट-फिक्स नोटेशन का उपयोग किया है। यह पढ़ने के लिए भयानक था, लेकिन कोड करना आसान था। इसलिए बहुत विशिष्ट उपयोग के मामलों में, आरपी उपयोगी हो सकता है, लेकिन मुझे यकीन नहीं है कि यह शिक्षा तक फैली हुई है (सामान्य रूप से)। आप इसका उपयोग यह दिखाने के लिए कर सकते हैं कि वाक्यविन्यास तय नहीं है, मुझे लगता है।
राफेल

जवाबों:


9

मैंने तेजी से प्रोटोटाइप के लिए कई बार RPN का उपयोग किया है, उदाहरण के लिए ऐसे प्रोग्राम जिन्हें उपयोगकर्ता द्वारा प्रदत्त गणितीय अभिव्यक्ति को पढ़ना और व्याख्या करना है।

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

यह, हालांकि, आमतौर पर तेजी से प्रोटोटाइप के लिए और सुविधा के लिए है। मैं कभी नहीं मानूंगा कि कोई उपयोगकर्ता आरपीएन को समझ सकता है या करना चाहता है।


8

बस पिछले उत्तरों / टिप्पणियों का विस्तार करने के लिए: यह मत भूलो कि RPN जीवित है और शानदार रूप में है ... वास्तव में यह वर्तमान में जावा वर्चुअल मशीन जैसी स्टैक मशीनों में उपयोग किया जाता है ।

विकिपीडिया से: "... एक स्टैक मशीन रजिस्टरों के साथ एक स्टैक लागू करती है। अंकगणित तर्क इकाई (ALU) के ऑपरेंड हमेशा स्टैक के शीर्ष दो रजिस्टर होते हैं और ALU से परिणाम स्टैक के शीर्ष रजिस्टर में संग्रहीत किया जाता है। 'स्टैक मशीन' आमतौर पर उन कंप्यूटरों को संदर्भित करता है जो व्यक्तिगत प्रोग्राम स्टेटमेंट्स को निष्पादित करते समय अल्पकालिक अस्थायी मूल्यों को धारण करने के लिए एक अंतिम-इन, पहले-आउट स्टैक का उपयोग करते हैं। निर्देश सेट पोस्टफिक्स ( रिवर्स पोलिश नोटेशन ) संचालन के साथ अधिकांश ALU कार्यों को करता है। केवल डेटा स्टैक या मुख्य मेमोरी सेल पर नहीं, अभिव्यक्ति स्टैक पर काम करें ... "

इस तरह के दृष्टिकोण के फायदे / नुकसान विकिपीडिया लेख में भी वर्णित हैं


हम्म, बायटेकोड को देखकर आपको प्रति आरपीएन आरपीएन नहीं दिखता है; बेशक निर्देश "पोस्ट-फिक्स" क्रम में दिखाई देते हैं लेकिन यह अंकगणित में आरपीएन की तरह नहीं दिखता है, और इसका कारण स्पष्ट है। रजिस्टर मशीनों को उसी तरह आगे बढ़ना है: मूल्यों को लोड करें, फिर गठबंधन करें।
राफेल

5

फोर्थ और पोस्टस्क्रिप्ट (और इस प्रकार पीडीएफ जिसे IIRC ने पोस्टस्क्रिप्ट के सबसेट के बाइनरी एन्कोडिंग के रूप में शुरू किया था) एचपी पॉकेट कैलकुलेटर एचपी पॉकेट कैलकुलेटर एक से अधिक अच्छी तरह से जाना जाता है।

फिर यह सरल संकलक में मध्यवर्ती प्रतिनिधित्व के रूप में एक अपेक्षाकृत आम विकल्प भी है।

सरल VM भी एक उपसर्ग "मशीन" भाषा है।


संयोग से, "सरल वीएम" वाक्यांश में जेवीएम शामिल है। RPN के बारे में दिलचस्प बात यह है कि यह सबसे सरल उपयोगी स्टैक मशीन है। स्टैक मशीनें वास्तव में दिलचस्प और उपयोगी और प्रासंगिक हैं।
छद्म नाम

4

कैलकुलेटर के संबंध में: RPN क्या है?

  • लाभ: RPN समय और कीस्ट्रोक्स बचाता है। आप गणना करते समय कोष्ठकों का उपयोग करने और रखने से बचते हैं। प्रक्रिया उसी तरह से है जैसे आपने कागज पर गणित सीखा था।

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

  • एक मध्यवर्ती परिणाम उपयोगकर्ता को उत्तर की जांच करने और त्रुटियों को अधिक आसानी से सही करने की अनुमति देता है। गणना की धारा का पालन करना आसान है। उपयोगकर्ता ऑपरेटरों की प्राथमिकता को परिभाषित करता है।

  • RPN तार्किक है क्योंकि उपयोगकर्ता पहले नंबर देता है और फिर बताता है कि इसके साथ क्या करना है।


3

जैसा कि नाम से संकेत मिलता है, रिवर्स पोलिश नोटेशन, या डायरेक्ट पोलिश नोटेशन, नोटेशन हैं। यदि आप स्मृति आवश्यकताओं पर विचार करते हैं, तो वे किसी चीज़ का प्रतिनिधित्व करने के लिए सिंटैक्स हैं, और वास्तव में कुशल सिंटैक्स हैं। वे जो प्रतिनिधित्व करते हैं वे जड़ वाले पेड़ हैं, जो सूत्र, सार वाक्यविन्यास पेड़ (एएसटी), और अन्य प्रकार के निकाय हो सकते हैं, जो किसी को भी बिल्कुल बेकार मानने का संवैधानिक अधिकार है।

कभी-कभी, ऐसी संस्थाओं को फ़ाइल पर संग्रहीत करना पड़ता है। उदाहरण के लिए, ऐसे सिस्टम हैं जो एएसटी के रूप में प्रोग्राम को संपादित या बदल सकते हैं, और इस तरह के अभ्यावेदन को संग्रहीत करने की आवश्यकता हो सकती है। पोलिश फॉर्म सुविधाजनक है। इसमें मनुष्यों के लिए, विशेष रूप से बड़े पेड़ों के लिए सीमित पठनीयता है, लेकिन यह मशीनों के लिए बहुत सुविधाजनक प्रतिनिधित्व है।

इसका एक और पहलू यह है कि मेरा मानना ​​है कि पेड़ों के अध्ययन और उनके प्राथमिक उपयोगों और प्रतिनिधित्व के साथ-साथ संबद्ध उपकरणों (ढेर) को अधिक उन्नत अवधारणाओं (सिंटैक्स, पार्सिंग, तर्क, भाषा विज्ञान) के भविष्य के अध्ययन के लिए एक परिचय के रूप में उपयोगी होना चाहिए। , ...)।

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

लेकिन मुझे आश्चर्य है कि यह सवाल, और इसके जवाब, केवल आरपीएन पर विचार कर रहे हैं, और कोई भी प्रत्यक्ष पॉलिश नोटेशन पर विचार नहीं करता है।

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


2

आपका छात्र बिलकुल सही था। कंप्यूटर साइंस में रिवर्स पोलिश नोटेशन इतना महत्वपूर्ण नहीं है कि इस पर बहुत सीमित समय बिताने लायक हो। इसके बजाय, कई अन्य अद्भुत वैचारिक विचार हैं जिन्हें आप गहराई से बौद्धिक विचारों के साथ सिखा सकते थे: स्थिर विवाह, केक काटना, विकरण और रुकने की समस्या की अनिश्चिता, संवादात्मक प्रमाण और शून्य-ज्ञान प्रमाण, आदि। हाँ। उन सभी को 18 वर्ष के बच्चों के लिए सुलभ बनाया जा सकता है।

और, मुझे आशा है कि आपने प्रश्न पूछने के लिए अपने छात्र की बहुत प्रशंसा की होगी! उन्हें इस मुद्दे को उठाने के लिए खुद को एक कगार पर खड़ा करना पड़ा। यह आपकी शिक्षण शैली के लिए अच्छी तरह से बोलता है कि उन्होंने आपको यह प्रश्न पूछने में सहज महसूस किया।


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

"कंप्यूटर विज्ञान में पर्याप्त महत्वपूर्ण नहीं" - अविश्वसनीय रूप से राय दी गई
दिमित्री ज़ैतसेव

1

सामान्य रूप से पार्स पेड़ों और पेड़ डेटा संरचनाओं को समझने के लिए मेरी शिक्षा में रिवर्स पोलिश नोटेशन एक अच्छा उपकरण था। यह भी उपयोगी है अगर किसी को भी भाषाओं के किसी भी लिस्प परिवार (क्लोजर, एमएसीएस-लिस्प, स्कीम आदि) में प्रोग्रामिंग में कोई रुचि है।


लिस्प और स्कीम क्यों? वे कोष्ठक से भरे हैं।
बबौ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.