ビル・ヒューレットの夢
- 2007/12/14 17:06
- カテゴリー:散財
ヒューレットパッカードの創始者,ビル・ヒューレットは,手のひらサイズでポケットに入る関数電卓を作ることを思い立ちました。
ヒューレットパッカードは,当時既に計測器や計算機で知られた企業でしたが,ビル・ヒューレットの考えは,HP-9100という科学技術計算のこなせる卓上計算機を小さく軽く安くし,エンジニアを計算尺から開放することでした。
これこそまさに彼自身の夢であったわけですが,そうして1972年に登場した電卓が,世界初のハンドヘルド型関数電卓「HP-35」です。
そのサイズは,ビル・ヒューレットのシャツの胸ポケットで決められたといいますし,本当かどうかはわかりませんが,この電卓のために発明されたのが7セグメントLEDだったともいいます。
また,Apple][の設計者であり,アップルコンピュータの創始者である,スティーブ・ウォズニアクがアップルコンピュータを創業するときに,ヒューレットパッカードの関数電卓を売ってお金を作った話は有名ですが,後に彼が語ったところによると,その電卓こそHP-35だったそうです。
というわけで,コンピュータに関わる世界中のエンジニアの憧れであったヒューレットパッカードの関数電卓ですが,80年代中頃から始まった関数電卓の価格破壊と価値の低下のせいもあってでしょうか,特に国内では一部のマニアが喜んで使っているだけの状況だったように思います。
もう1つ,一見さんお断りの要素がヒューレットパッカードの電卓にはあります。それが「逆ポーランド記法」を採用しているということです。
RPNと略されるこの数式の表記方法は,非常に合理的でメリットも多いのですが,いかんせん小学校から習う普通の書き方(中置記法)に慣れた我々には,まるで外国語を見るような気分にさせられてしまいます。
しかし,プログラミング言語「FORTH」に採用されていたRPNは,先進的なファンが雑誌などでそのメリットと気高さ(そう,当時のコンピュータには精神的気高さが重要な要素だったのです)をしばしば初心者に啓蒙していて,私もそうだったのですが,その敷居の高さに「やっぱ本物のコンピュータの世界は一味違う,うむむ」と腕を組んで渋い顔をしていたものです。
RPN,実はそんなに難しいものではありません。
逆ポーランド記法の前に,ポーランド記法から見ていきましょう。LISPなんかが使っていますね。
1 + 2
は,ポーランド記法では,
+ 1 2
と書きます。
個人的には中置記法の方が論理的だと思うんですが(数学的にはそうでないかも知れませんが,演算子の左右で意味が違うことをはっきり表現出来てると思いませんか?),違いが出てくるのは計算の順番を意識しないといけないような場合です。
(1 + 2) x (3 + 4)
は,ポーランド記法では,
x + 1 2 + 3 4
と書きます。お,括弧が取れましたね。
これ,要するに演算子を関数のように扱う書き方です。つまり,+は2つの数値を足すという関数であるとみなすわけで,この統一性はなるほど美しいです。LISPは関数の呼び出しと演算を区別しませんが,それはここから来ています。
で,話を逆ポーランド記法に戻します。ポーランド記法の演算子の位置を逆にした物を逆ポーランド記法といいます。
1 + 2
と書かずに,
1 2 +
と書くのです。
なんで逆に書くのか,という疑問は,コンピュータがスタックを駆使して計算を行っているから,が答えです。1をスタックに積み,2をスタックに積み,+が出てきたら2をスタックから降ろし,降ろした数値2をスタックの一番上の1と加算します。するとスタックには結果の3が入っています。
大事なことは,左から順番に処理していけば,自然とスタックのてっぺんに結果が入っているということです。例えば,
(1 + 2) x (3 + 4)
これをRPNで書くと,
1 2 + 3 4 + x
です。1をスタックに積み,2をスタックに積み,2を降ろしてスタックのてっぺんと加算し,3を新たにスタックに積み,4をスタックに積み,そして4を降ろしてその時のスタックのてっぺんと加算して,そして最後のxで3+4の結果である7を降ろして,その時のスタックのてっぺんにある1+2の結果である3とかけ算するのです。こうして,スタックには計算の結果が常に残ります。
やってることは,スタックに積む,降ろす,降ろした値をその時のスタックのてっぺんと演算する,という単純作業だけです。
ね,括弧の中を先に計算してかけ算するより,とりあえず左から順番にスタックに積みつつ計算をしていく方が,条件分岐がいらないでしょう。
コンピュータでの処理が単純化できるということは,実は人間にとっても計算が楽に出来るということです。
だから,RPNを採用したヒューレットパッカードの電卓を使いこなす人は,普通の電卓を触ることが出来なくなってしまいますし,逆に普通の電卓しか知らない人にとっては「どうして=キーがないんだ???」といきなり大混乱に陥ります。
ちなみに,
(1 + 2) x (3 + 4) x (5 + 6)
を,普通の電卓でやらせようとすると,
1 + 2 M+ 3 + 4 = x MR = x->M 5 + 6 = x MR =
と,メモリ機能を使わないといけません。しかも普通の電卓にはない x->Mキーを使わないとダメです。
でも,RPNの使えるヒューレットパッカードの電卓なら,
1 ENTER 2 + 3 ENTER 4 + x 5 ENTER 6 + x
と,左から順に操作するだけでokです。
1 + (( 2 + 3) x 4) + 5) x 6 + (7 + 8) x 9
これだと,もう普通の電卓だと,どうやっていいのか考えるのも面倒です。でもヒューレットパッカードの電卓なら,
1 ENTER 2 ENTER 3 + 4 x 5 + 6 x + 7 ENTER 8 + 9 x +
と,あくまで基本に忠実に入力すれば,結果はきちんと出てきます。
この単純さと,知ってる人だけ得をするというわずかな優越感が,RPNの魔力なんだと思います。
偉そうにかいてますが,私がHP-35の復刻版である「HP-35s」を購入したのは,別にRPNを使いたかったからではありません。
告白しますが,私は,その「わずかな優越感」をうらやましく思い,HP-35sを買ったのです。
復刻される話は今年の夏頃知っていました。かなり欲しいと思ったのですが,いくらガジェット好きだからといって,1万円近いお金をただの関数電卓に出すには抵抗がありました。それに,私はこうした面倒な計算をすべてポケコンに任せて20年の人です。今さら新しいことを覚えることもありません。
HP-35sが発売になり,次第に国内でも購入者が増えるにつれ,ますますそのうらやましさは募る一方です。一応コンピュータに関係する仕事をしているのですから,ヒューレットパッカードの電卓くらい使えないでどうするよ,という気持ちにあらがうことも,とても不健康に思えてきました。
そこで,意を決して購入。さすがに欲しい人には行き渡った後だけに,即納でした。
パッケージを開き,電源を入れます。「=キーはどこなんだ!」とまず最初に混乱するという儀式を軽く済ませ,英語のマニュアルをパラパラとめくります。
私はこの電卓を,単純に所有欲を満たすために購入したわけですので,RPNを使うかどうかはそれ程重要ではありません。こういうぬるい人がいることをヒューレットパッカードも分かっているんですね,通常の電卓として動作するモードに切り替えることで,RPNが使えない人でも,普通の電卓として使うことが出来るようになっています。
大きさも形もちょうどいい頃合いです。日本の電卓は実は結構使いにくい形をしているものなのですが,キーの大きさや押しやすさも手伝って,その快適さは今時の電卓としては非常に贅沢。
しかし,遊んでいくうちに,この電卓はRPMを使わないと,使いこなせないという気がしてきました。
そこで,先の書いたようなRPNの入門をやってみたのです。
いやはや,未だに使いこなせているとは言えないのですが,とにかくセオリー通りに左から素直に打ち込んでいけば,勝手に答えが出ているこの感動は,なんだか初めて電卓を使ったときを思い起こさせるものでした。
下の計算は,ヒューレットパッカードの電卓の説明書に,例題として長くと取り上げられているものらしいのですが,
√( (8.33*(4-5.2)÷((8.33-7.46)*0.32))) / (4.3*(3.15-2.75)-(1.71*2.01)) )
答えは,4.5728です。
これがスパッと一発で出てきたとき,私はRPNとの出会いに感謝したのでした。
今のところ,ポケコンを使う方がなにかと便利な場合も多いので,会社にHP-35sを持ってくることはしていません。随分と遅れてしまいましたが,憧れのヒューレットパッカードの関数電卓を手に入れられたこと,そしてRPNの意味を理解したことと,たかが電卓で感激したことは,私にとっては有意義でした。
最近はこのHP-35s,店頭でも買えるところがあるようです。値段は8000円から9000円というところですが,過不足なく機能が盛り込まれた本格的なヒューレットパッカードの電卓を使ってみようと思う方は,簡単に入手できる間に奮発して買っておいた方がよいと思います。
