人気ブログランキング |
書籍
漫画
映画
アニメ
テレビ
ゲーム
音楽
タイトル
印象度
ラン
書籍索引
漫画索引
映画索引
アニメ索引
テレビ索引
ゲーム索引
音楽索引
時間
空間
人間
ランまとめ
2006年 06月 02日
逆ポーランド記法電卓



e0020682_2274034.jpg
私が愛用している逆ポーランド記法の電卓「HP48G」。HP(ヒューレット・パッカード)社製。かれこれ10年くらい前、やたらITに詳しい知人(職場に出向でいらしてた方)がこれを使っていた。そのとき「逆ポーランド記法」という言葉と概念は頭の片隅に残っていた。たぶんコンピュータの教本か何かでスタックを説明するための例として挙げられていたのだろう。実物を見るのはそのときがはじめてだった。紀伊国屋アドホック館で売っていると教えてもらいすぐさま購入した。

これを使うと普通の電卓が使えない身体になってしまう・・・
これを使うと普通の電卓が使えない脳になってしまう・・・

数年前の話になるが関数電卓以外の電卓が持ち込める資格試験があり、前述のとおり通常の電卓が使えない身体(脳)になっているので、関数機能の付いてない逆ポーランド記法の電卓を購入しようと紀伊国屋アドホック館に行ったのだが、購入できなかった。日本国内では取り扱わなくなったらしい。

いやーまいったね。
普通の電卓の前では、私の挙動はダブルクリックが習得できないじいさんばあさん並みですからね。まあ試験は何とか通ったけどね。

と、ここまで「逆ポーランド記法」を連呼して来たわけだが、ちょっと説明が必要なのかも知れない。

2項演算(2つの数値に対する演算。+,-,×,÷は2項演算子と呼ばれる)の表記法は以下の3とおりになる。
(1)中置記法<infix notation>
(2)ポーランド記法(前置記法)<Polish Notation(prefix notation)>
(3)逆ポーランド記法(後置記法)<Reverse Polish Notation, RPN (postfix notation)>

(1)中置記法<infix notation>
通常われわれが小学校で習う四則演算の表記方法は中置記法と呼ばれ、2項演算において、2つある被演算子の間に演算子を置く。<例1:A+B><例2:(A+B)×C>
メリットは、とにかく、ビジュアル的にわかりやすいと言うことにつきる。絵をそのまま記号化するとこうなるのだろう。演算子が区切り記号を兼ねている点もメリット。演算順序を特定するために括弧が必要になる場合があるというデメリットがあるが、括弧そのものはビジュアル的に非常にわかりやすい。

(2)ポーランド記法(前置記法)<Polish Notation(prefix notation)>
ポーランド人の論理学者ヤン・ウカシェーヴィッチ (Jan Łukasiewicz) が考案したことからこう呼ばれる。被演算子の前に演算子を置く表記法。<例1:+A,B>、<例2:×+A,B,C>
これは演算子の関数化と捉えることができる。演算子を被演算子から分離することで、どれだけネストしても、より被演算子に近い演算子から演算されることから括弧が不要になる。区切り記号が別途必要になるのはデメリット。

ちょっと話はそれるが、関数の表現は一般的に関数を表す記号の後ろに引数(被演算子)が羅列される。
ひとたび関数に拡張して多項演算子を一般化してしまうと、無限にある数値の中で2(項演算)にしか適用できない中置記法に対して、「どれだけ特別(異常)なんだよ!!」とツッコミたくもなってくる。実際2項演算は特別だとは思うけど。

話はだいぶそれるけど、ファインマン物理学のファインマンさんは幼少の頃、積分を習っていなかったので、積分をあらわす演算子を自作して種々の問題を解いていたらしい(昔読んだ本のあやふやな記憶)。演算子を自作するという発想自体普通持たんだろう?必要だからつくる。すばらしい。人が便宜上作ったルールと本質とを切り分けて捉えるセンスが優れてたんだろうね。まあ天才は別としても、少なくともそういう構造を少しでも感じることができないと算数・数学が嫌いになるのだろうなとは思う。

(3)逆ポーランド記法(後置記法)<Reverse Polish Notation, RPN (postfix notation)>
ポーランド記法と同様の考え方で、逆に演算子を被演算子の後ろに置く表記法を逆ポーランド記法という。<例1:A,B+>、<例2:A,B+C×>

逆ポーランド記法の凄いところは、コンピュータとの相性がいいこと(まあ、そのために考案されたのだろうが)。さらに驚くことには日本語との相性が抜群なこと。

(コンピュータとの相性について)
演算子が直前の被演算子に対して演算を行うことから、スタックに被演算子が順番にため込まれ、最後に入れた被演算子から順に取り出して演算するモデルと一致する。
演算子が入力された時点で演算が確定するため、数値をスタックにため込むだけで数式をため込む必要がない。コンピューターはまさに機械的に、入力されたものが数値であればスタックにため込み、演算子であれば即時的に演算をすればよく、コンピューターが数式を解読する必要がないことから単純なプログラムを組むだけで演算を行うことが可能となる。

(日本語との相性について)
日本語では、「たす」、「ひく」、「かける」、「わる」を含む動詞が、文章中、逆ポーランド演算子的に使用されるという偶然により、逆ポーランド記法の電卓においては日本語の思考そのままを入力すればよく、思考が中断されることがない。参考までに中置記法、逆ポーランド記法、その日本語表現を以下に示す。

中置記法:(A+B)×(C+D)
逆ポーランド記法:A,B+C,D+×
日本語:AとBを足したものとCとDを足したものを掛ける

(逆ポーランド記法のメリット)
中置記法は紙に鉛筆で数式を書くときには最も適した方法であろう。しかし、電卓に一文字ずつ入力するのには向いていない。例えば下の例の中置記法を見てみよう。これだけ括弧が多用されると関数が使われてないにも関わらず関数電卓が使いたくなってくる。関数電卓を使うこととしよう。さて、一文字目に来る“(”はJを掛けるときに必要になって後から書き足したものだ。最初からこの“(”は書けない。つまり紙に一度書き出したものをちまちまと入力し直さなければならない。一方、逆ポーランド記法の場合は日本語で思考を進めながら入力していけばよい。演算子を入力した瞬間に演算が実行されるので、ストックが見える機種であれば、途中経過が見え、スムーズに思考を進め易い。また、同じ理由により、"="キーが不要である。最後に"="キーを押した瞬間にエラーが発生して入力し直し、なんてこともない。この世界を知ってしまうと普通の電卓が使えなくなる。

中置記法:(((A+B)×C-D)÷(E-(F+G))÷H-I)×J
逆ポーランド記法:A,B+C×D-E,F,G+-÷H÷I-J×
日本語:AとBを足してCを掛けてDを引いたものをEからFとGを足したものを引いたもので割ってHで割ってIを引いてJを掛ける



で、結局何が言いたいか?

WX310K用逆ポーランド記法電卓有志自作アプリ マダー(・∀・)っ/凵⌒ωチンチン
需要が圧倒的に少ないから99.9%コネー (´・ω・`) ショボーン



※ 「逆ポーランド記法 電卓」、「RPN電卓」等でググってみると、もっとわかりやすい説明がいっぱい。
※ この記事を書くにあたってwikipedia様にはたいへんお世話になりました。深く感謝いたします。
by camuson | 2006-06-02 23:15 | 技術 | Trackback | Comments(0)
トラックバックURL : https://camuson.exblog.jp/tb/3554454
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
<< 熟つぶ 人間ドキュメンタリー >>