Ý nghĩa của ký hiệu đánh bóng ngược là gì?


21

Tôi dạy máy tính cho những người 18 tuổi. Sau khi có ký hiệu đánh bóng ngược giải thích cho họ, người ta hỏi tại sao nó đủ quan trọng để tham gia kỳ thi công khai. Tôi đã giải thích ý nghĩa lịch sử của máy tính thập niên 70 nhưng điều này không thực sự giải quyết được vấn đề. Vì vậy, có và ứng dụng thực tế hoặc lý thuyết đồng thời của RPN.


3
Tôi đã lập trình được gần mười năm và đã hoàn thành một bậc thầy về CS nhưng tôi không nghĩ rằng tôi đã từng thấy hoặc sử dụng đánh bóng ngược trong bất kỳ bối cảnh nghiêm trọng nào. Bạn có chắc chắn nó liên quan, đặc biệt cho việc dạy học sinh?
Raphael

Dưới đây là một triển khai của một công cụ biểu thức chính quy sử dụng ký hiệu postfix: swtch.com/~rsc/regapi/regapid1.html#thndry . Ken Thompson đã sử dụng nó trong lần thực hiện đầu tiên của mình. Ngoài ra, đây là một kỹ thuật phổ biến để đánh giá các biểu thức trong thời gian chạy (nếu bạn đang xây dựng trình biên dịch).
saadtaame

Trong RPN, bạn có thể ghi lại bất kỳ biểu thức nào mà không cần sử dụng dấu ngoặc.
lỗi

3
Các bài viết trên wikipedia về RPN bao gồm nhiều nền tảng. Các văn bản logic đôi khi đề cập đến ký hiệu đánh bóng (vì nó không có khung), khi chúng giải thích những gì có thể được bỏ qua từ các bằng chứng là "đường cú pháp" thuần túy. Tuy nhiên, RPN rất quan trọng vì mối quan hệ chặt chẽ với ngăn xếp. Hiểu các ngăn xếp là rất quan trọng để gỡ lỗi tương tác, bởi vì "backtrace" nổi tiếng thường chỉ là một bãi chứa ngăn xếp. Các ngôn ngữ chức năng thuần túy vẫn đang vật lộn để cung cấp một cái gì đó có thể so sánh với một ngăn xếp để gỡ lỗi, thậm chí vì vậy chúng sẽ có nhiều thông tin chi tiết hơn để cung cấp (nếu chúng có thể đại diện cho nó).
Thomas Klimpel

Tôi phải rút lại nhận xét trước đây của tôi một phần. Tôi đã thấy ai đó sử dụng ký hiệu sửa lỗi để cây đổ chuỗi. Thật kinh khủng khi đọc, nhưng dễ viết mã. Vì vậy, trong các trường hợp sử dụng rất cụ thể, RP có thể hữu ích, nhưng tôi không chắc liệu điều này có mở rộng cho giáo dục hay không (nói chung). Bạn có thể sử dụng nó để hiển thị rằng cú pháp không cố định, tôi đoán vậy.
Raphael

Câu trả lời:


9

Tôi đã sử dụng RPN nhiều lần để tạo mẫu nhanh, ví dụ: các chương trình phải đọc và giải thích biểu thức toán học do người dùng cung cấp.

Trong khi ký hiệu toán học thông thường sẽ yêu cầu ít nhất một trình phân tích cú pháp đệ quy (nghĩ ngoặc, thứ tự toán tử, v.v.), về cơ bản, trình phân tích cú pháp RPN là một ngăn xếp với switchcâu lệnh giống như. Tôi đoán rằng chính sự kết hợp giữa sự đơn giản và sức mạnh biểu cảm này đã khiến HP sử dụng nó ban đầu.

Điều này, tuy nhiên, thường là cho tạo mẫu nhanh và thuận tiện. Tôi sẽ không bao giờ cho rằng người dùng có thể, hoặc muốn hiểu RPN.


8

Chỉ để mở rộng các câu trả lời / nhận xét trước đó: đừng quên rằng RPN còn sống và ở dạng tuyệt vời ... thực sự nó hiện đang được sử dụng trong các máy stack như máy ảo Java.

Từ Wikipedia: "... một máy stack thực hiện một ngăn xếp với các thanh ghi. Các toán hạng của đơn vị logic số học (ALU) luôn là hai thanh ghi trên cùng của ngăn xếp và kết quả từ ALU được lưu trữ trong thanh ghi trên cùng của ngăn xếp . 'stack máy' thường được đề cập đến máy tính mà sử dụng một cuối-in, First-out ngăn xếp để giữ giá trị tạm thời ngắn ngủi trong khi thực hiện báo cáo chương trình cá nhân. Các tập lệnh thực hiện hầu hết các hành động ALU với postfix ( Xếp Ba Lan ký hiệu ) hoạt động mà chỉ hoạt động trên ngăn xếp biểu thức, không hoạt động trên các thanh ghi dữ liệu hoặc các ô nhớ chính ... "

Những ưu điểm / nhược điểm của cách tiếp cận như vậy cũng được mô tả trong bài viết Wikipedia .


Hừm, nhìn vào mã byte bạn không thấy RPN mỗi se; tất nhiên các hướng dẫn hiển thị theo thứ tự "sửa lỗi" nhưng điều đó không giống RPN trong mỹ phẩm và lý do của nó khá rõ ràng. Đăng ký máy phải tiến hành theo cùng một cách: tải giá trị, sau đó kết hợp.
Raphael

5

Forth và PostScript (và do đó PDF mà IIRC bắt đầu dưới dạng mã hóa nhị phân của một tập hợp con PostScript) là các ngôn ngữ postfix nổi tiếng hơn mà máy tính bỏ túi HP sử dụng.

Sau đó, nó cũng là một lựa chọn tương đối phổ biến như biểu diễn trung gian trong trình biên dịch đơn giản.

VM đơn giản hơn thường có ngôn ngữ "máy" hậu tố.


Ngẫu nhiên, cụm từ "VM đơn giản hơn" bao gồm JVM. Điều thú vị về RPN là nó là máy xếp chồng hữu ích đơn giản nhất. Máy xếp chồng là những gì thực sự thú vị và hữu ích và có liên quan.
Bút danh

4

Liên quan đến máy tính: Xem RPN là gì?

  • Lợi ích: RPN tiết kiệm thời gian và tổ hợp phím. Bạn tránh sử dụng và theo dõi dấu ngoặc đơn trong khi thực hiện tính toán. Quá trình này tương tự như cách bạn học toán trên giấy.

  • Bạn có thể thấy kết quả trung gian khi bạn thực hiện các tính toán của mình thay vì chỉ trả lời ở cuối. Điều này là vô cùng hữu ích cho việc học logic. Giáo viên toán đang sử dụng tính năng này để cải thiện sự hiểu biết của học sinh về toán học.

  • Một kết quả trung gian cho phép người dùng kiểm tra câu trả lời và sửa lỗi dễ dàng hơn. Nó dễ dàng hơn để theo dòng tính toán. Người dùng xác định mức độ ưu tiên của các nhà khai thác.

  • RPN là hợp lý bởi vì trước tiên người dùng đưa ra số và sau đó cho biết phải làm gì với nó.


3

Như tên cho thấy, Ký hiệu Ba Lan đảo ngược, hoặc ký hiệu Ba Lan trực tiếp, là các ký hiệu. Chúng là cú pháp để biểu diễn một cái gì đó và cú pháp thực sự hiệu quả nếu bạn xem xét các yêu cầu về bộ nhớ. Những gì họ đại diện là cây gốc, có thể là công thức, cây cú pháp trừu tượng (AST) và các loại thực thể khác, mà bất kỳ ai cũng có quyền lập hiến để xem xét hoàn toàn vô dụng.

Đôi khi, người ta phải lưu trữ các thực thể như vậy trong hồ sơ. Ví dụ, có những hệ thống có thể chỉnh sửa hoặc chuyển đổi các chương trình như AST và có thể cần lưu trữ các biểu diễn đó. Mẫu Ba Lan thuận tiện. Nó có khả năng đọc hạn chế cho con người, đặc biệt là đối với những cây lớn, nhưng nó là một đại diện rất thuận tiện cho máy móc.

Một khía cạnh khác của nó là tôi tin rằng nghiên cứu về cây và cách sử dụng và biểu diễn cơ bản của chúng, cũng như các thiết bị liên quan (ngăn xếp), có ích về mặt sư phạm như là một giới thiệu cho các nghiên cứu trong tương lai về các khái niệm nâng cao hơn (cú pháp, phân tích cú pháp, logic, ngôn ngữ học , ...).

Nó cũng có ưu điểm là khái niệm khá đơn giản và dễ thử nghiệm trên giấy. Đây cũng là một dịp tốt để thảo luận về cú pháp và thực tế là cú pháp là biểu diễn và các biểu diễn có thể khác nhau, trong khi biểu diễn cùng một điều, và các cách biểu diễn khác nhau có thể được sử dụng tùy thuộc vào nhu cầu được đáp ứng (tối ưu hóa không gian, sửa đổi dễ dàng, khả năng đọc của con người, khả năng đọc của máy tính, ...).

Nhưng tôi ngạc nhiên rằng câu hỏi này, và câu trả lời của nó, chỉ xem xét RPN, và không ai xem xét ký hiệu đánh bóng trực tiếp.

Nó chắc chắn là tuyệt vời mà sinh viên yêu cầu. Nhưng trả lời câu hỏi như vậy luôn có những khía cạnh đa dạng. Nó có hữu ích cho kiến ​​thức không? Tôi nghĩ rằng nó là. Có hữu ích như bài tập sư phạm? Tôi nghĩ là vậy, nhưng điều đó phụ thuộc nhiều vào đối tượng dự định và chỉ giáo viên mới có thể đánh giá những gì nó có thể hiểu được. Có hữu ích để hiểu một số vấn đề khái niệm? Tôi nghĩ là vậy, nhưng một lần nữa, nó phụ thuộc vào đánh giá của giáo viên về những khái niệm nào có thể được giải thích cho học sinh của họ.


2

Học sinh của bạn đã hoàn toàn đúng. Ký hiệu đảo ngược Ba Lan không đủ ý nghĩa trong khoa học máy tính để có giá trị dành thời gian lớp học rất hạn chế cho nó. Thay vào đó, có rất nhiều ý tưởng khái niệm tuyệt vời khác mà bạn có thể dạy, với những ý tưởng trí tuệ sâu sắc: hôn nhân ổn định, cắt bánh, cắt chéo và không có vấn đề của vấn đề tạm dừng, bằng chứng tương tác và bằng chứng không có kiến ​​thức, v.v. tất cả những thứ đó có thể được truy cập cho những người 18 tuổi.

Và, tôi hy vọng bạn khen ngợi học sinh của mình đủ can đảm để đặt câu hỏi! Họ đã phải đặt mình lên một gờ đá để nêu vấn đề. Nó nói tốt cho phong cách giảng dạy của bạn mà họ cảm thấy thoải mái khi hỏi bạn câu hỏi này.


1
Ký hiệu Ba Lan gần như không có thời gian để dạy. Tuyến tính hóa các cấu trúc tiêu chuẩn như cây cũng rất quan trọng, vì việc lưu trữ hàng loạt thường là tuần tự thay vì truy cập ngẫu nhiên. Bạn cũng có thể muốn lưu trữ nó một cách hiệu quả, hoặc hiểu làm thế nào để lấy nó toàn bộ hoặc một phần. Nó kết nối cây, đi bộ cây, cấu trúc nhúng và đẩy xuống. Tóm tắt, nó cho biết làm thế nào để mã hóa Gôdel cho dữ liệu. So với sự lãng phí rất lớn về thời gian và năng lượng được thể hiện bởi phân tích cú pháp LR và LL, và các công nghệ rác khác, tôi thậm chí sẽ nói rằng thời gian dành cho ký hiệu đánh bóng là thời gian sử dụng tốt.
babou

"không đủ ý nghĩa trong khoa học máy tính" - vô cùng quan tâm
Dmitri Zaitsev

1

Ký hiệu đảo ngược Ba Lan là một công cụ tốt trong giáo dục của tôi để hiểu về phân tích cây và cấu trúc dữ liệu cây nói chung. Nó cũng hữu ích nếu bất kỳ ai có bất kỳ mối quan tâm nào trong việc lập trình trong bất kỳ họ ngôn ngữ Lisp nào (Clojure, emacs-lisp, lược đồ, v.v.).


Tại sao Lisp và Đề án? Chúng có đầy đủ dấu ngoặc đơn.
babou
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.