« ろーりー | Main | 夏休み終了 »

2007.09.02

RPN

hp-35sを買い込んでからというもの、暇を見つけては分厚く丁寧な例文が載ってるマニュアルをみぃみぃポチポチと使い方をなんとか憶えようとしています。やっぱりこの電卓の特徴的なのは、一般的な数式通り(Algebraic data entry: 代数式的な数式通り)の操作ではない、RPN、逆ポーランド記法(Reverse Polish Notation)による操作でしょう。それってどんなの?っということになるわけですが、簡単に言うと日本語的な操作っていえるかな。
「1+2=」を演算させようとする場合、普通、電卓では書いた数式通りにボタンを[1][+][2][=]と押すと答えがでますが、この電卓では、「1と2を足す」といった日本語の通りに[1][enter][2][+]と押すことになります。 あははは、変ですよね。そんなわけで、この電卓を触ろうとすると計算できなくて面食らうことになるんですわ。まあ、普通は数式通りに入力して答えが出る方が操作しやすいというのは判ってはいるんですが、35年前に発売されたこの電卓の祖となる世界初と言われた関数電卓 hp-35が出た当時のことを考えるこうならざるえなかったんでしょうねえ。

35年前、hp-35がシャツのポケットに入る35キーの関数電卓としてデビューした1972年という当時、電卓(電子卓上計算機)はその前年、1971年にマイクロプロセッサ4004というのが出来たことから、たった1年で電卓の心臓部のLSI化が進み、爆発的に進化を開始したころです。といってもまだまだ机の上にドン!と載せ、会計用に四則演算がまあなんとかできると言った代物ばかり、関数計算はメモと計算尺で行うのが一般的であり、関数電卓というものはなんじゃそれは?という時代だった。また電卓があったとしても、それはようやく数式通りに演算キーが押せるというのがうたい文句になっていたぐらいに四則演算させるだけでもイッパイイッパイだった。そこへポケットに入るサイズの電卓で関数演算をさせようというわけですから、勢い、中身をに簡潔化したロジックで組めるRPNを採用し、その分を人間が操作するといったことが採用されたんじゃないでしょうか。

ちなみにポーランド記法と言われるぐらいだから、じゃない「ポーランド記法」というのがあります。先ほどの「1+2=」をポーランド記法で書くと、「+,1,2」となります。「足せ!1と2を!」と呪文ぽい書き方ですねえ(笑) これを採用しているのがLISPですね。
逆ポーランド記法で操作してもらえると、電卓側とするとコンピュータにありがちなスタック操作をしているのと同じになることから、数式通りに操作されると大変な構文解析をしないで済みプログラムの実装が楽になるという利点が電卓側にはあったわけです。

じゃあ、なんでテクノロジーの進んだいまになってもこのRPNな入力に拘るファンがいっぱいいるんだろうということになるんですが、入力する代数式がややこしくなるとなるほどキー入力操作に必要なボタン押し数が数式通りに入れる操作よりもRPN操作の方が少なくなるところが好かれてるということと、たぶんパンピー物と違う変な電卓をエンジニアっぽく扱う優越感からじゃないでしょうかね(爆)

手数が実際減るのか? 例えば、「( (2+3)x(3+5) / (sin(30))  ) x 4^2 = 」とかを僕の持っているCASIO FX-602Pでやらせようとした場合、 [2][+][3][)][x][(][3][+][5][)][)][/][3][0][sin][)][x][4][x^2][=]
で20手必要です(実際には、[x^2]キーを押すには先に[inv]キーを押す必要があるので21手必要)。FX-602Pは賢いので括弧を結構省略できちゃうのでかなり楽してますが、省略できないとなるともっと手数が増えることになります。
一方、これをRPNでやると、
[2][ent][3][+][3][ent][5][+][x][3][0][sin][/][4][x^2][x]
で16手になります(こちらも[x^2]させるには先に[->]が必要なので実際には17手になります)。また、括弧の操作をしないで済むので実は頭の中も括弧のネストの数を考えないので楽なんですよ。

てなわけで、いまお勉強中なのは、オマケで実装されてるプログラム機能を使うこと。ご想像の通り、電卓というよりちょっとしたマイコンのプログラムでスタックを触るような状態ですが結構面白いですわ。で、何するの?というのは…何を計算させよう(苦笑)

|

« ろーりー | Main | 夏休み終了 »

携帯・デジカメ・モバイルグッズ」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

Comments

昔はブラックジャックとか数字当てゲームなんかを作りましたが、今は携帯PDAで何でもできますからね。
35sだけしか出来ないプログラムって何だろう。
ステップ数は2KB位あるのかな?

Posted by: hirocakep | 2007.09.04 at 11:09

hirocakepさん、おはよ

僕も昔は散々FX-602Pでゲームなどを入れては遊んでましたねえ。よくもまあ512ステップで入るようにと考えて作っていたものです。
hp-35sには、31KB user memoryと書かれているのですが、これでなんステップくらいになるのかはまだ訳判っていません(^^; まあ、そもそもそんなに長いプログラムを入れても、このhp-35sには外部記録がないので大作を取っておくことが出来ないから、そんなに長いプログラムを作ることないでしょう。
ちなみに、FX-602Pのころは別売のオーディオインターフェイスを持っていたのでカセットテープにピーヒャラとセーブしてましたよん。

Posted by: くっきも | 2007.09.05 at 08:02

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/10432/16324368

Listed below are links to weblogs that reference RPN:

« ろーりー | Main | 夏休み終了 »