6
9
Written by:
瀬尾 佳隆
2010/06/09 0:13
※はじめに・・・本当に雑談です(笑)
少し前から迷っていたんですが、HP電卓を買ってしまいました。
今時の若いもん(笑)は知らないんだろうな、HP電卓って言っても。
逆ポーランド記法 (RPN) で計算していく計算機です。
じゃあ、逆ポーランドって何?という話になるわけですが。
代数では
1 + 2
のように演算子を間に書くわけです。これが中間記法。
それに対して逆ポーランドでは
1 2 +
と書きます。演算子が後ろに来るわけです。
この程度の式では全くありがたみがありませんが、複雑な式になると、普通の電卓では一回で計算するのが難しい式でもHP電卓なら一発で答えが導き出せるというメリットがあります。(もちろんキーはそれなりに打たないといけませんが)
ここまで無理矢理な式でなくても、
(1 + 2) * (3 + 4)
が
1 2 + 3 4 *
となります。括弧がなくなり、キー入力数が減ります。
慣れないとメリットを感じられないかもしれませんが、コンピュータの内部に適用すると、単純なスタックを用意するだけでよく、構造が複雑にならないというメリットがあります。
つまり、
- 知らないトークンならばオペランドとしてスタックに積む
- 知っているトークンならばオペレーターとしてスタックからオペランドを取り出して結果をスタックに積む
という処理を繰り返す、基本的にはそれだけですべてが表現できます。
中間期法の言語で必要なB-Treeのような考え方・実装も不要です。
コンピュータ内部でもシンプルな構造になるなら、人間にとっても理解しやすいはず。(難解に見えるのは単に慣れの問題かと)
この考え方に基づいて作られたプログラミング言語が Forth です。
ちょっと触ってみるぶんには Gforth くらいしか適当な処理系がありませんが、遊びやパズル代わりとしてはなかなか楽しいと思います。
ということで、7月の技術ひろばの勉強会では、「RPN & Forth 超入門」と題したミニセッションをやってみようかと思っています。参加者を置いていく結果になる懸念はありますが、まあたまにはこういう変わり種もいいかなと。
なんかよくわからんが面白そうだから/ちょっと懐かしくなったので、という方はこちらからどうぞ。私にお金を落としてください(笑)。
※ここだけの話、本当はHP-15Cがほしかったんですが、ヤ*オクとか見ても高くて、単なるオモチャとしては出せる金額ではなかったので、HP-35sで手を打ってしまったのは私です。でも実際遊んでみると面白くてHP-35s、大満足!
Tags: