역 광택 표기법의 의미는 무엇입니까?


21

저는 18 살짜리 학생들에게 컴퓨팅을 가르치고 있습니다. 리버스 폴리시 표기법을 설명한 후 공개 시험에 참여하기에 충분한 이유를 물었습니다. 70 년대 계산기의 역사적 중요성을 설명했지만 실제로이 문제를 해결하지 못했습니다. RPN의 실용적 또는 이론적 응용이 동시에 존재합니다.


3
나는 거의 10 년 동안 프로그래밍을 해왔고 CS에서 석사를 마쳤지만 어떤 심각한 상황에서도 리버스 폴리싱을 보거나 사용한 적이 없다고 생각합니다. 당신은 확실 하다 학생을 가르치는 특히, 관련?
Raphael

다음은 접미사 표기법 ( swtch.com/~rsc/regexp/regexp1.html#thompson) 을 사용하는 정규식 엔진의 구현입니다 . 켄 톰슨은 그의 첫 번째 구현에도 사용했습니다. 또한 런타임에 표현식을 평가하는 데 널리 사용되는 기술입니다 (컴파일러를 빌드하는 경우).
saadtaame

RPN에서는 대괄호를 사용하지 않고 모든 표현식을 기록 할 수 있습니다.
Seg Fault

3
RPN에 관한 위키 백과 기사는 많은 내용을 다룹니다. 논리 텍스트는 때로는 순수 "구문 설탕"으로 증명에서 생략 할 수있는 것을 설명 할 때 광택 표기법 (대괄호가 없기 때문에)을 나타냅니다. 그러나 RPN은 스택과 밀접한 관계가 있기 때문에 중요합니다. 유명한 "백 트레이스"는 일반적으로 스택 덤프이기 때문에 스택을 이해하는 것은 대화식 디버깅에 중요합니다. 순수 기능 언어는 여전히 디버깅을 위해 스택 덤프와 비슷한 기능을 제공하기 위해 고심하고 있습니다. 심지어 제공 할 수있는 훨씬 자세한 정보가있을 수 있습니다.
Thomas Klimpel

내 의견을 부분적으로 취소해야합니다. 나는 문자열 덤프 나무에 누군가 사용 후 수정 표기법을 본. 읽는 것이 끔찍했지만 코딩하기는 쉬웠습니다. 따라서 매우 구체적인 사용 사례에서 RP가 유용 할 수 있지만 이것이 교육 (일반적으로)으로 확장되는지 확실하지 않습니다. 구문이 고정되어 있지 않다는 것을 보여주기 위해 사용할 수 있습니다.
Raphael

답변:


9

빠른 프로토 타이핑을 위해 RPN을 여러 번 사용했습니다. 예를 들어 사용자 제공 수학 표현을 읽고 해석해야하는 프로그램입니다.

정규 수학 표기법에는 최소한 재귀 파서 (괄호, 연산자 순서 등)가 필요하지만 RPN 파서는 기본적으로 switch-like 문이 있는 스택입니다 . HP가 처음에 이것을 사용하게 한 것은 단순성과 표현력의 조합입니다.

그러나 이는 일반적으로 빠른 프로토 타입 제작 및 편의를위한 것입니다. 사용자가 RPN을 이해할 수 있거나 이해하기를 원한다고 결코 생각하지 않습니다.


8

이전 답변 / 의견을 확장하기 만하면 RPN이 살아 있고 훌륭한 형식 임을 잊지 마십시오 . 실제로 Java 가상 머신과 같은 스택 머신 에서 사용됩니다 .

Wikipedia에서 : "... 스택 머신은 레지스터로 스택을 구현합니다. 산술 논리 장치 (ALU)의 피연산자는 항상 스택의 최상위 두 레지스터이며 ALU의 결과는 스택의 최상위 레지스터에 저장됩니다. . '스택 기계는'일반적으로 사용하는 컴퓨터를 참조하는 마지막-최초-에서 개별 프로그램 문을 실행하는 동안 스택은 단명 임시 값을 유지합니다. 명령 세트는 후위 대부분의 ALU 작업 수행 ( 역 폴란드어 표기법 ) 작업을 그 데이터 레지스터 나 주 메모리 셀이 아닌 표현식 스택에서만 작동합니다 ... "

이러한 접근 방식장점 / 단점은 Wikipedia 기사에 설명되어 있습니다.


흠, 바이트 코드를 보면 RPN 자체가 보이지 않습니다. 물론 명령어는 "수정 후"순서로 표시되지만 산술에서는 RPN처럼 보이지 않으며 그 이유는 분명합니다. 레지스터 머신은 같은 방식으로 진행해야합니다 : 값을로드 한 다음 결합하십시오.
Raphael

5

Forth 및 PostScript (및 IIRC가 PostScript 하위 세트의 이진 인코딩으로 시작한 PDF)는 HP 포켓 계산기보다 잘 알려진 포스트 픽스 언어입니다.

그런 다음 간단한 컴파일러에서 중간 표현으로 비교적 일반적으로 선택됩니다.

단순한 VM은 접미사 "기계"언어도 사용하는 경향이 있습니다.


또한 "단순 VM"이라는 문구에는 JVM이 포함됩니다. RPN의 흥미로운 점은 RPN이 가장 유용한 유용한 스택 머신이라는 것입니다. 스택 머신은 정말 흥미롭고 유용하며 관련성이 있습니다.
가명

4

계산기와 관련하여 : RPN이란 무엇입니까?를 참조하십시오 .

  • 이점 : RPN은 시간과 키 입력을 줄입니다. 계산을 수행하는 동안 괄호를 사용하고 추적하지 마십시오. 이 과정은 종이에서 수학을 배운 방식과 유사합니다.

  • 마지막에 답이 아니라 계산을 수행 할 때 중간 결과를 볼 수 있습니다. 이것은 논리를 배우는 데 매우 도움이됩니다. 수학 교사는이 기능을 사용하여 수학에 대한 학생의 이해를 향상시킵니다.

  • 중간 결과를 통해 사용자는 답변을 확인하고 오류를보다 쉽게 ​​수정할 수 있습니다. 계산 스트림을 따르는 것이 더 쉽습니다. 사용자는 운영자의 우선 순위를 정의합니다.

  • RPN은 사용자가 먼저 숫자를 제공 한 다음 RTO가 무엇을해야하는지 알려주기 때문에 논리적입니다.


3

이름에서 알 수 있듯이 리버스 폴란드어 표기법 또는 직접 폴란드어 표기법은 표기법입니다. 그것들은 무언가를 표현하는 구문이며, 메모리 요구 사항을 고려할 때 실제로 효율적인 구문입니다. 그들이 나타내는 것은 루트 트리이며, 공식, 추상 구문 트리 (AST) 및 기타 종류의 엔티티가 될 수 있습니다.

때때로, 그러한 엔티티를 파일에 저장해야합니다. 예를 들어 프로그램을 AST로 편집하거나 변형 할 수있는 시스템이 있으며 이러한 표현을 저장해야 할 수도 있습니다. 폴란드 양식이 편리합니다. 사람, 특히 큰 나무에 대한 가독성이 제한되어 있지만 기계에 대한 매우 편리한 표현입니다.

그것의 또 다른 측면은 나무와 나무의 기초적 용도와 표현뿐만 아니라 관련 장치 (스택)에 대한 연구가 미래의 고급 개념 (구문, 구문 분석, 논리, 언어학)에 대한 연구에 소개하는 데 교육적으로 유용하다고 생각합니다. ...).

또한 개념적으로 다소 단순하고 종이로 실험하기 쉽다는 장점이 있습니다. 구문과 구문이 표현이며 표현이 다를 수 있지만 동일한 것을 나타내는 동안 표현이 다를 수 있고 충족해야 할 필요에 따라 다른 표현이 사용될 수 있다는 사실 (공간 최적화, 쉬운 수정, 인간 가독성, 컴퓨터 가독성, ...).

그러나 나는이 질문과 그 대답이 RPN 만 고려하고 있으며 직접 광택 표기법을 고려하지 않는다는 것에 놀랐습니다.

학생들이 묻는 것이 확실히 우수합니다. 그러나 그러한 질문에 대답하는 데는 항상 다양한 측면이 있습니다. 지식 자체에 유용합니까? 나는 생각합니다. 교육학 운동으로 유용합니까? 제 생각에는 그것이 의도 한 청중에 따라 크게 다르며 교사 만이 이해할 수있는 것을 평가할 수 있습니다. 개념적 문제를 이해하는 것이 도움이됩니까? 나는 그것이 다시 생각하지만, 학생들에게 어떤 개념을 설명 할 수 있는지에 대한 교사의 평가에 달려 있습니다.


2

당신의 학생은 절대적으로 옳았습니다. 역 폴란드 표기법은 컴퓨터 과학에서 수업 시간을 매우 제한적으로 쓸만한 가치가 없습니다. 그 대신 심오한 지적 아이디어, 안정된 결혼, 케이크 자르기, 대각선 화 및 정지 문제의 결정 불가능 성, 대화 형 증명 및 무 지식 증명 등을 통해 여러분이 가르 칠 수있는 다른 훌륭한 개념적 아이디어가 많이 있습니다. 예, 이 모든 것은 18 세가 접근 할 수 있습니다.

그리고, 당신이 질문을하기에 충분히 용감한 당신의 학생을 칭찬하기를 바랍니다! 그들은이 문제를 제기하기 위해 난간에 있어야했습니다. 그들이 당신에게이 질문을하는 것이 편안하다고 느끼는 것은 당신의 교수 스타일에 대해 잘 말합니다.


1
폴란드어 표기법을 가르치는 데 거의 시간이 걸리지 않습니다. 대용량 스토리지는 종종 임의 액세스보다는 순차적이기 때문에 트리와 같은 표준 구조의 선형화도 중요합니다. 또한 효율적으로 저장하거나 전체 또는 일부를 검색하는 방법을 이해할 수도 있습니다. 그것은 나무, 나무 산책, 임베디드 구조 및 푸시 다운을 연결합니다. 추상적으로, 데이터에 대한 고델 (Gödel) 인코딩 방법을 알려줍니다. LR 및 LL 파싱 및 기타 정크 기술로 대표되는 엄청난 시간과 에너지 낭비와 비교할 때, 나는 광택 표기법에 소비되는 시간이 잘 소비된다고 말할 것입니다.
babou 2016 년

"컴퓨터 과학에서 충분히 중요하지 않다"-엄청나게 의견이 있습니다
Dmitri Zaitsev

1

역 폴란드 표기법은 구문 분석 트리 및 트리 데이터 구조를 이해하는 데있어 교육에서 훌륭한 도구였습니다. 또한 Lisp 계열 언어 (Clojure, emacs-lisp, scheme 등)로 프로그래밍하는 데 관심이있는 사람도 유용합니다.


왜 Lisp와 Scheme을 사용해야합니까? 그들은 괄호로 가득합니다.
babou
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.