HP電卓

もうヒューレットパッカードの電卓から逃れられない体です。
普通の電卓で計算できませんorz
HP-41Cを先日殿堂入りさせて、HP-12cplutinumを実働に復帰させました。
どっちもプログラム電卓でした。
やったね!(なんで)
ポケコン(なつかし〜)が壊れたところだったので、現役のポケコンとしてHP-12cには活躍してもらうつもり。
とはいっても簡単な計算しかさせないけど。
HP-41Cと12Cでプログラムをほんのちょっとしたので、その印象。

・ 両者 スタック計算機だよー
・ 両者 一連のキーストローク=プログラムだそうな
・ 両者 4段あるスタックの中でやりくりするのが原則
・ 両者 でもどうにもならないときは、スタックトップだかボトムを待避用レジスタにストア、リコール操作することでしのぐことができる そう言うキーがあるですよこの電卓は!
・ 両者 待避用レジスタは100個くらいあったんじゃなかったかな(手元にマニュアルないんで曖昧orz)
・ 41C プログラムの抽象化は可能っぽい 簡単にいえばプログラムにアルファベットで名前が付けられるんだよ さすがアルファヌメリック電卓!
・ 41C 抽象化したプログラム(プログラム名のついたプログラム)はexcキーで実行 "exc,プログラム名"でプログラム実行だってさ
・ 41C よって、あるプログラムから他のプログラムを呼び出せるよ!キーストロークとして"exc,プログラム名"とうちこめばいい
・ 41C 各演算キーに任意のキーストロークを覚えさせることができたんじゃなかったかな?ここうる覚え
・ 41C 演算キーに"exc,プログラム名"というキーストロークを覚えさせることで、各演算キーに任意のプログラムを結びつけることができちゃう!うへー
・ 41C 演算キーをプログラム実行するために"USER"モードというのがある 普通の演算実行は"USER"モードを解除する必要があったような
・ 12C プログラムの抽象化はできそうだけど、アルファベットによる名前付けはできなさそう? 複数プログラムが格納できるって書いてあったけど、まだそこまでやってねーす。多分プログラムに番号を付けてストア、リコールするだけじゃねーか?
・ 12C プログラムの実行はR/Sキーを押すことが原則 複数プログラム格納時は、プログラム番号を指定する賢いやり方があるに違いないがそこまでやってない
・ 両者 制御構文はあったかなぁ?if,for・・・マニュアルひっくり返さないと分からないけど、ないんかなぁ。GTOってキーがあるから、GOTOくらいはできるんでしょうきっと。ってことはifぐらいはありそうだなぁ。手元にマニュアルがないし今その気力もないので分からん

41Cの方が、プログラムに名前付けできるという離れ技があるお陰で、PC-1245とか古いポケコンとは比べものにならないほど抽象度の高いプログラムができる雰囲気。
12Cのほうはもっとストレートにマシン語を操っている感じ。(というか、本当にキーストロークしか覚えない!)
でも両者に言えるのは、

スタック計算機であるが故に、キーストロークがプログラムそのものになることができる

ってことかなぁ。
そのかわり、

ちょっとでも難しいプログラムは、"スタック操作"演算キー、"レジスタ操作"演算キーを多用しないといけない!

スタックボトムを入れ替えたり、4段あるスタックをローテーションさせるキーがあるんですよこの電卓どもには!
レジスタ待避、呼び出しのキーもあるんですよどうしろというのだ!
これ多用しないと込み入ったプログラムは書けないし、書いたところでそれが何をしようとしているかなんてさっぱり分からない。
ということで、

HP電卓のプログラム=スタック計算機の機械語

てな結論になりました。
なんだこの電卓。
奥が深すぎてついていけん。
おもしれーじゃねーの。
ま、いずれにしても面白い現役バリバリのポケコンを入手したので、しゃぶり倒す勢いです。
というのはRPNのおはなし。リバースポーランドなんちゃら。
HP48とかになるとスタック4段の制約から解放されて、さらに高度な計算もできるんだそうな。RPLってやつ。リバースポーランドリスプじゃないかというマイ都市伝説。
スタックベースのリスプも面白そうだけどそこまで力入れるつもりはないな。

  • -

そういえば、PostScript(PDFのもと)もスタック計算機だけど、制御構造もあれば抽象化もできるんですよあれ。
昔大学生だった頃の宿題で、「どんなプログラム言語でもいいからフーリエ変換するプログラム作って提出しろ」ってのがあったのを思い出しました。
みんなPASCALやらCやらに走るのをはた目に、PostScriptでプログラム作って提出したなぁ(あほだ!)
PostScriptのレーザープリンタでプログラム実行なんてわけわからん事をして楽しんだっけ。
でも上には上がいて、私の先輩にも同様の発想をした奇特な方がいて、さらにグラフ化させてプリンタから出力させてたなぁ。
あのときは「くやしいけれど、あなたには勝てません」と素直に負けを認めたなぁ。