RPNについて


RPNとは、1951年にポーランドのJan Lukasiewiczという学者が発表した算術式の表記法をHPが改良したもので、Reverse Polish Notation、日本語では"逆ポーランド記法"と呼ばれています。

これは一言で言えば、「数値の後に演算子を置く」という方法で、例えば、2に3を足すという計算を国産の電卓では、

   [2] [+] [3] [=]
というふうにキー入力して求めますが、RPN方式では
   [2] [ENT] [3] [+]
と押します。この両者の[+]キーを押す位置に注目して下さい。RPN方式では演算対象である2と3を入力してから[+]キーを押しています。ここで[ENT]キーは2と3を区切るためのキーだと思って下さい。

この例だけを見ると、国産電卓のいわゆる"数式通り"の入力方式のほうが分かりやすいと思われるかもしれませんが、次の例ではどうでしょうか。
   (5+3)÷(4−2)
これぐらいの計算は暗算でできるなどと言わないで、電卓で計算することを考えて下さい。国産電卓の場合は、
   [5] [+] [3] [=] [÷] [(] [4] [-] [2] [)] [=]
というふうに、括弧を使う必要がありますが、RPN方式であれば
   [5] [ENT] [3] [+] [4] [ENT] [2] [-] [÷]
と括弧を使う必要がありません。
余談ですが、私たち日本人は「5千円に3千円を足すと」とか、「100グラムの肉を4人に分けると」などというふうに、演算対象の数値を先に言ってから演算の種類を定義していると思います。つまり、日本語の思考はRPN方式であると言えます。上の例を言葉にしながら計算すると、次のようになります。
[5] [ENT] [3]   [+]     [4] [ENT] [2]    [-]        [÷]
5 に 3を 足して、 4 から 2を 引いたやつで、割る

次に、こんな計算を考えてみましょう。
2×sin(3/5)−LOG(4−1)

国産電卓の場合は、普通は演算順序を考慮してsinの中身から計算して、まずこの第1項をメモリしておいてから第2項のLOGを計算し・・・というふうに計算するのではないでしょうか。
   [3] [÷] [5] [=] [sin] [×] [2] [=] [M] [4] [-] [1] [=] [LOG] [±] [+] [MR] [=]
RPN方式では完全に左から順に計算できます。
   [2] [ENT] [3] [ENT] [5] [÷] [sin] [×] [4] [ENT] [1] [-] [LOG] [-]
このように、特に技術計算で出てくるような多項の計算に対してRPN方式は効果があります。事実、上の例で国産電卓では18回キーを押す必要があるのに対して、RPN方式では14回で済んでいます。

このRPN方式は元々は計算機内部での処理(レジスタに収納したデータに対して演算命令を実行する)をそのまま入力方式にしたものですが、その後ハードの性能向上につれて、他社では「数式通り」という一般受けする宣伝文句を掲げて、ソフト的に負荷がかかる現在の方式に移行していきました。

しかし、HPだけは見かけの易しさよりも電卓が備えるべき本質を追求するために、RPN方式を守り続けているのだ、と私は思っています。


カッコのない国 なんと、このRPNを子供向けに解説している絵本があります。 岩波書店が小学校の高学年向けに出版している「はじめて出会うコンピュータ科学」というシリーズのなかの1冊で、
カッコのない国』 徳田雄洋/村井宗二(ISBN4-00-115264-9)
というタイトルです。
この本では、先入れ後出しのスタックの概念を洞穴を使って説明し、RPNの記法を解説しています。さらに、算術式の記法とRPNの変換を通してコンパイラの概念まで解説しており、平易な表現ながらも高度な内容を含んでいます。
小学生のうちにこういう教育を受ければ、もっとHP電卓もメジャーになれるのにと思うのは私だけでしょうか。