ความหมายของสัญกรณ์โปแลนด์ย้อนกลับคืออะไร?


21

ฉันสอนการคำนวณให้กับเด็กอายุ 18 ปี หลังจากที่มีสัญกรณ์โปแลนด์ย้อนกลับอธิบายให้พวกเขาหนึ่งถามว่าทำไมมันสำคัญพอที่จะอยู่ในการสอบสาธารณะ ฉันอธิบายความสำคัญทางประวัติศาสตร์ของเครื่องคิดเลขยุค 70 แต่สิ่งนี้ไม่สามารถแก้ไขปัญหาได้ ดังนั้นจึงมีและการใช้งานพร้อมกันในทางปฏิบัติหรือทางทฤษฎีของ RPN


3
ฉันเขียนโปรแกรมมาเกือบสิบปีแล้วและจบปริญญาโทใน CS แต่ฉันไม่คิดว่าฉันเคยเห็นหรือใช้ขัดเงาย้อนกลับในบริบทที่ร้ายแรง คุณแน่ใจหรือว่ามีความเกี่ยวข้องโดยเฉพาะอย่างยิ่งสำหรับการสอนนักเรียน
Raphael

นี่คือการดำเนินการของเครื่องยนต์แสดงออกปกติที่ใช้ postfix สัญกรณ์: swtch.com/~rsc/regexp/regexp1.html#thompson Ken Thompson ใช้มันในการใช้งานครั้งแรกของเขาเช่นกัน นอกจากนี้ยังเป็นเทคนิคยอดนิยมสำหรับการประเมินนิพจน์ในเวลาทำงาน (ถ้าคุณกำลังสร้างคอมไพเลอร์)
saadtaame

ใน RPN คุณสามารถจดนิพจน์ใด ๆ โดยไม่ใช้วงเล็บ
Seg Fault

3
บทความวิกิพีเดียเกี่ยวกับ RPN ครอบคลุมพื้นดินมาก ข้อความตรรกะบางครั้งอ้างถึงสัญกรณ์โปแลนด์ (เพราะมันเป็นวงเล็บฟรี) เมื่อพวกเขาอธิบายสิ่งที่สามารถละเว้นจากการพิสูจน์ว่าบริสุทธิ์ "น้ำตาลน้ำตาล" อย่างไรก็ตาม RPN มีความสำคัญเนื่องจากมีความสัมพันธ์ใกล้ชิดกับกองซ้อน การทำความเข้าใจกับสแต็กมีความสำคัญสำหรับการดีบักแบบอินเทอร์แอคทีฟเนื่องจาก "backtrace" ที่มีชื่อเสียงนั้นเป็นเพียงสแต็กดัมพ์ ภาษาที่ใช้งานได้จริงยังคงดิ้นรนที่จะเสนอสิ่งที่เทียบได้กับกองการถ่ายโอนข้อมูลสำหรับการดีบักดังนั้นพวกเขาจะมีข้อมูลรายละเอียดเพิ่มเติมที่จะเสนอ (ถ้าพวกเขาสามารถเป็นตัวแทนของมัน)
โทมัสคลิมเพล

ฉันต้องถอนความคิดเห็นเดิมของฉันบางส่วน ฉันเคยเห็นใครบางคนใช้สัญกรณ์โพสต์แก้ไขเพื่อต้นไม้ต้นไม้ถ่ายโอนข้อมูล มันน่ากลัวที่จะอ่าน แต่รหัสง่าย ดังนั้นในกรณีการใช้งานที่เฉพาะเจาะจง RP อาจมีประโยชน์ แต่ฉันไม่แน่ใจว่าสิ่งนี้ครอบคลุมถึงการศึกษา (โดยทั่วไป) หรือไม่ คุณสามารถใช้มันเพื่อแสดงว่าไวยากรณ์ไม่ได้รับการแก้ไขฉันเดา
Raphael

คำตอบ:


9

ฉันใช้ RPN หลายครั้งสำหรับการสร้างต้นแบบอย่างรวดเร็วเช่นโปรแกรมที่ต้องอ่านและตีความนิพจน์ทางคณิตศาสตร์ที่ผู้ใช้จัดหา

ในขณะที่สัญกรณ์ทางคณิตศาสตร์ปกติจะต้องมีอย่างน้อยตัวแยกวิเคราะห์ซ้ำ (คิดว่าวงเล็บคำสั่งผู้ประกอบการ ฯลฯ .. ), ตัวแยกวิเคราะห์ RPN นั้นเป็นกองที่มีswitchคำสั่งเหมือน ฉันเดาว่ามันเป็นการรวมกันของความเรียบง่ายและพลังการถ่ายทอดที่ทำให้ HP ใช้มันในตอนแรก

อย่างไรก็ตามนี่คือโดยปกติสำหรับการสร้างต้นแบบที่รวดเร็วและเพื่อความสะดวก ฉันจะไม่สมมติว่าผู้ใช้สามารถหรือต้องการเข้าใจ RPN


8

เพียงเพื่อขยายคำตอบ / ความคิดเห็นก่อนหน้า: อย่าลืมว่า RPN ยังมีชีวิตอยู่และอยู่ในรูปแบบที่ยอดเยี่ยม ... แน่นอนมันถูกใช้ในเครื่องสแต็กเช่น Java virtual machine

จากวิกิพีเดีย: "... เครื่องสแต็กใช้สแต็กที่มีการลงทะเบียนตัวถูกดำเนินการของหน่วยคำนวณเลขคณิต (ALU) มักจะเป็นสองอันดับแรกของสแต็กและผลลัพธ์จาก ALU จะถูกเก็บไว้ในทะเบียนด้านบนของสแต็ก . 'Stack machine' โดยทั่วไปหมายถึงคอมพิวเตอร์ที่ใช้ Last-in, First-out stack เพื่อเก็บค่าชั่วคราวในขณะที่ดำเนินการคำสั่งของแต่ละโปรแกรมชุดคำสั่งดำเนินการ ALU ส่วนใหญ่ด้วยการปฏิบัติการ postfix ( Reverse Polish notation ) ที่ ใช้งานได้เฉพาะกับนิพจน์สแต็กไม่ใช่บนรีจิสเตอร์ข้อมูลหรือเซลล์หน่วยความจำหลัก ... "

ข้อดี / ข้อเสียของวิธีการดังกล่าวยังมีการอธิบายไว้ในบทความวิกิพีเดีย


อืมมองไปที่ bytecode ที่คุณไม่เห็น RPN ต่อ se แน่นอนคำแนะนำปรากฏในลำดับ "หลังการแก้ไข" แต่นั่นไม่ได้ดูเหมือน RPN ในวิชาคณิตศาสตร์และเหตุผลของมันค่อนข้างชัดเจน เครื่องลงทะเบียนจะต้องดำเนินการในลักษณะเดียวกัน: ค่าโหลดแล้วรวม
Raphael

5

Forth และ PostScript (และ PDF ซึ่ง IIRC เริ่มต้นเป็นการเข้ารหัสไบนารีของส่วนย่อยของ PostScript) เป็นภาษา postfix ที่เป็นที่รู้จักกันดีกว่าที่ HP Pocket Calculator หนึ่งเครื่อง

จากนั้นมันก็เป็นตัวเลือกที่ใช้กันทั่วไปในฐานะคอมไพเลอร์ธรรมดา

VM ที่ง่ายกว่านั้นมักจะมีภาษา "machine" postfix ด้วย


อนึ่งวลี "simpler VM" รวมถึง JVM สิ่งที่น่าสนใจเกี่ยวกับ RPN ก็คือมันเป็นเครื่องซ้อนที่มีประโยชน์ที่สุด เครื่องซ้อนเป็นสิ่งที่น่าสนใจและมีประโยชน์และมีความเกี่ยวข้องจริงๆ
นามแฝง

4

เกี่ยวกับเครื่องคิดเลข: ดูRPN คืออะไร

  • ประโยชน์ที่ได้รับ: RPN ประหยัดเวลาและการกดแป้นพิมพ์ คุณหลีกเลี่ยงการใช้และติดตามวงเล็บในขณะทำการคำนวณ กระบวนการคล้ายกับวิธีที่คุณเรียนรู้คณิตศาสตร์บนกระดาษ

  • คุณสามารถเห็นผลลัพธ์ของคนกลางเมื่อคุณทำการคำนวณมากกว่าแค่คำตอบในตอนท้าย สิ่งนี้มีประโยชน์อย่างมากสำหรับการเรียนรู้ตรรกะ ครูคณิตศาสตร์ใช้คุณลักษณะนี้เพื่อปรับปรุงความเข้าใจของนักเรียนเกี่ยวกับคณิตศาสตร์

  • ผลกลางช่วยให้ผู้ใช้สามารถตรวจสอบคำตอบและแก้ไขข้อผิดพลาดได้ง่ายขึ้น ง่ายต่อการติดตามกระแสการคำนวณ ผู้ใช้กำหนดลำดับความสำคัญของผู้ประกอบการ

  • RPN เป็นตรรกะเพราะผู้ใช้ให้หมายเลขก่อนแล้วจึงบอกว่าจะทำอย่างไรกับมัน


3

ตามชื่อระบุว่า Reverse Polish Notation หรือ Notation Notation เป็นสัญกรณ์ พวกเขาเป็นไวยากรณ์สำหรับการแสดงบางสิ่งบางอย่างและไวยากรณ์ที่มีประสิทธิภาพจริง ๆ ถ้าคุณพิจารณาความต้องการของหน่วยความจำ สิ่งที่พวกเขาเป็นตัวแทนคือต้นไม้ที่หยั่งรากซึ่งอาจเป็นสูตรต้นไม้ไวยากรณ์นามธรรม (AST) และหน่วยงานประเภทอื่น ๆ ที่ทุกคนมีสิทธิตามรัฐธรรมนูญที่จะพิจารณาว่าไร้ประโยชน์อย่างแน่นอน

ในบางครั้งเราต้องเก็บเอนทิตีดังกล่าวไว้ในไฟล์ ตัวอย่างเช่นมีระบบที่อาจแก้ไขหรือแปลงโปรแกรมเป็น AST และอาจต้องเก็บการรับรองดังกล่าว แบบฟอร์มโปแลนด์สะดวก มันมีความสามารถในการอ่านที่ จำกัด สำหรับมนุษย์โดยเฉพาะอย่างยิ่งสำหรับต้นไม้ขนาดใหญ่ แต่มันเป็นตัวแทนที่สะดวกมากสำหรับเครื่องจักร

อีกแง่มุมหนึ่งของมันคือฉันเชื่อว่าการศึกษาต้นไม้และการใช้งานเบื้องต้นและการเป็นตัวแทนรวมถึงอุปกรณ์ที่เกี่ยวข้อง (สแต็ค) เพื่อเป็นประโยชน์ในการสอนการแนะนำการศึกษาในอนาคตของแนวคิดขั้นสูงเพิ่มเติม (ไวยากรณ์การแยกวิเคราะห์ตรรกะภาษาศาสตร์ , ... )

มันยังมีข้อดีของการเป็นแนวคิดค่อนข้างง่ายและง่ายต่อการทดลองบนกระดาษ นอกจากนี้ยังเป็นโอกาสที่ดีในการพูดคุยเกี่ยวกับไวยากรณ์และความจริงที่ว่าไวยากรณ์เป็นตัวแทนและการรับรองอาจแตกต่างกันไปในขณะที่เป็นตัวแทนของสิ่งเดียวกันและการใช้รูปแบบที่แตกต่างกันขึ้นอยู่กับความต้องการที่จะพบ ความสามารถในการอ่านของมนุษย์, การอ่านคอมพิวเตอร์, ... )

แต่ฉันประหลาดใจที่คำถามนี้และคำตอบของมันกำลังพิจารณาเพียง RPN เท่านั้นและไม่มีใครพิจารณาสัญกรณ์โปแลนด์โดยตรง

เป็นเลิศที่นักเรียนถาม แต่การตอบคำถามนั้นมีแง่มุมที่หลากหลายอยู่เสมอ มันมีประโยชน์สำหรับความรู้ของตัวเอง? ฉันคิดว่ามันคือ. มันมีประโยชน์เช่นเดียวกับการออกกำลังกายการสอน? ฉันคิดว่ามันเป็น แต่นั้นขึ้นอยู่กับผู้ชมที่ตั้งใจและมีเพียงครูเท่านั้นที่สามารถประเมินสิ่งที่สามารถเข้าใจได้ มันจะมีประโยชน์ในการทำความเข้าใจปัญหาความคิดบางอย่าง? ฉันคิดว่ามันเป็น แต่อีกครั้งมันขึ้นอยู่กับการประเมินของครูเกี่ยวกับแนวคิดที่สามารถอธิบายให้นักเรียนของพวกเขา


2

นักเรียนของคุณพูดถูก Reverse Polish Notation มีความสำคัญไม่มากพอในวิทยาการคอมพิวเตอร์ที่จะคุ้มค่ากับการใช้เวลาเรียนอย่าง จำกัด มีแนวคิดทางความคิดที่ยอดเยี่ยมอื่น ๆ อีกมากมายที่คุณสามารถสอนได้ด้วยความคิดทางปัญญาที่ลึกซึ้ง: การแต่งงานที่มั่นคงการตัดเค้กการทแยงและความไม่แน่นอนของปัญหาการหยุดพักการพิสูจน์เชิงโต้ตอบและการพิสูจน์ความรู้แบบศูนย์เป็นต้นเป็นต้น ทั้งหมดสามารถเข้าถึงได้สำหรับเด็กอายุ 18 ปี

และฉันหวังว่าคุณจะยกย่องนักเรียนของคุณที่กล้าหาญพอที่จะถามคำถาม! พวกเขาต้องวางบนหิ้งเพื่อยกประเด็น มันพูดได้ดีสำหรับรูปแบบการสอนของคุณที่พวกเขารู้สึกสบายใจที่ถามคำถามนี้กับคุณ


1
สัญกรณ์โปแลนด์แทบจะไม่มีเวลาสอน การจัดโครงสร้างเชิงเส้นของโครงสร้างมาตรฐานเช่นต้นไม้ก็มีความสำคัญเช่นกันเนื่องจากที่เก็บข้อมูลขนาดใหญ่มักจะเป็นลำดับมากกว่าการเข้าถึงแบบสุ่ม คุณอาจต้องการเก็บไว้อย่างมีประสิทธิภาพหรือเข้าใจวิธีการเรียกคืนทั้งหมดหรือบางส่วน มันเชื่อมต่อต้นไม้ทางเดินต้นไม้โครงสร้างแบบฝังและการกดลง มันบอกวิธีการเข้ารหัสGödelสำหรับข้อมูล เมื่อเทียบกับการเสียเวลาและพลังงานจำนวนมากที่แยกวิเคราะห์โดย LR และ LL และเทคโนโลยีขยะอื่น ๆ ฉันจะบอกว่าเวลาที่ใช้กับสัญกรณ์โปแลนด์เป็นเวลาที่ใช้กัน
Babou

"ไม่สำคัญพอในวิทยาศาสตร์คอมพิวเตอร์" - มีความเห็นอย่างไม่น่าเชื่อ
Dmitri Zaitsev

1

Reverse Polish Notation เป็นเครื่องมือที่ดีในการศึกษาของฉันสำหรับการทำความเข้าใจการแยกวิเคราะห์ต้นไม้และโครงสร้างข้อมูลต้นไม้โดยทั่วไป นอกจากนี้ยังมีประโยชน์ถ้าใครมีความสนใจในการเขียนโปรแกรมในตระกูลภาษา Lisp ใด ๆ (Clojure, emacs-lisp, แบบแผน ฯลฯ .. )


ทำไม Lisp และ Scheme? พวกเขาเต็มไปด้วยวงเล็บ
babou
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.