君は逆ポーランド電卓を知っているか?I
一般にはあまり知られていない逆ポーランド電卓(RPN電卓
2021年1月5日
https://dailyportalz.jp/kiji/RPN-calculator
>一般にはあまり知られていない電卓がある。その名は「逆ポーランド電卓」(「RPN電卓」とも言う)。計算方法が普通の電卓とは違っており、使い方を知らないと
>1の計算すら困難な代物だ。
>製造しているのは、ほぼHP(ヒューレット・パッカード)一社のみ。それも高機能で比較的高価な機種しか出回っていないため、気軽に持ち歩いて使うには少し躊躇してしまう。
>世の中には、大きく分けて2種類の電卓がある。ほとんどの人が使っている普通の電卓(「中置記法の電卓」という)と、入力方法の異なる「逆ポーランド記法の電卓」だ。
>「逆ポーランド記法」ってなんだ?
>一般的に使われているのは中置記法だ。一方でポーランド記法は、演算子(+)が数字の前に、逆ポーランド記法は数字の後に記載される。今回注目したいのは、この「逆ポーランド記法」の方である。後で説明するが、この記法はコンピュータプログラムとの相性も良く、いまも電卓の世界などで愛され、生き続けている。
>」という順番は、「1と2を足す」という日本語の語順にも一致しており(日本語文法は逆ポーランド記法に近い)、日本人には比較的なじみやすい記載順なのだ。
>ちなみに「ポーランド」記法という名前は、ポーランドの論理学者ヤン・ウカシェヴィチが考案したことに由来するという。「ウカシェヴィチ記法」とせずに、自国の国名を付けた彼の奥ゆかしさはわりと好きである。
>逆ポーランド記法があると何がうれしいか
>逆ポーランド記法の良いところは、カッコや演算子の優先順位を気にしなくてもいい点にある。
>中置記法の場合は、カッコがあれば先に計算する、
>それが逆ポーランド記法だとこうなる。カッコがなくなり、左から右へ順に読んでいくだけで正しい計算ができるのだ。この数式を日本語に訳して読むと、「100から、2と3を足したものと、4と5を足したものを掛けたものを引く」になる。とても直球な書き方
>こんな風に数式を逆ポーランド記法であらわせば、ややこしい計算順序とはおさらばだ。ただ左から右に素直に読んでいくだけで、誰がやっても一意に答えを導き出すことができる。すごいぞ、逆ポーランド記法。
>もちろん中置記法も逆ポーランド記法も、どっちも同じ意味を持つ数式である。でも演算子の位置が違うだけで、まるで別物に見えるのが面白い。日常的に見慣れたものとは微妙に異なる、でもどこか似ている表現方法。もし並行世界が存在したならば
>きっとそこでも同じ数学の概念はあるだろうけど、記法は微妙に違っていても不思議ではない。ひょっとすると、逆ポーランド記法が主流の世界が存在するかもしれない。そんな妄想をしてみるもの楽しい。
>逆ポーランド電卓ってのがあるんです
>で、話はようやく電卓である。この逆ポーランド記法で計算する電卓が存在しており、それこそが「逆ポーランド電卓」(正確には逆ポーランド記法の電卓だが、ここでは逆ポーランド電卓と呼ぶ)なのだ。
>HPは1960年代から逆ポーランド電卓の製造を開始。いまに至るまで連綿と続いている歴史ある電卓である。
>「HP16C」というプログラマ向けの電卓で、2進数や16進数の計算がしやすいのが特徴という貴重な機種
>入力する際は数字の区切りが必要なため、間に
>キーを押して電卓に知らせるようになっている。そして演算子を押した瞬間に答えが出るため、イコールが必要ない
>逆ポーランド記法を使った計算をコンピュータ上で実現するためには、「スタック」と呼ばれるデータ構造を利用する。スタックとは、スーパーのカゴのようなものだ。
>カゴは下から上に積み上げられる。そして上から入れて、上から取り出すことしかできない。よって最後に入れたカゴが、すなわち次に来た人が最初に取り出すカゴになる。この後入れ先出しの構造をスタックという。
>ところで、スーパーのカゴがこのスタック構造になっているせいで、下の方にあるカゴはほとんど使われる機会がなくて不憫だなと見るたびに思う。つねに上のカゴの重さに耐えているだけで、いつまで経っても順番が回ってこない下のカゴ。かわいそうな下のカゴ、という絵本が書けそうだ。
>話は戻るが、そのスタック構造を使って、逆ポーランド記法の計算をする様子がこちら。
>値が入力されるとスタックに積む。演算子
>が入力されると、値をスタックから2つ取り出して演算する。その後、結果をスタックに積む。この単純な繰り返しだけで、逆ポーランド記法の計算ができる
>逆ポーランド記法とスタックの相性は抜群で、情報工学をやっているとこの例を目にすることも多い。ここまで分かりやすい手続き(アルゴリズム)に落とし込めるので、プログラムを書くのも(細かいことを気にしなければ)簡単にできてしまう。
逆ポーランド記法は稀に情報処理技術者試験で出題されることがあります。