少し前の GIGAZINE に、世界で最初の PC として「サイモン(SIMON)」を掲げる記事が出ていました。
ツイッターでは当日中に異論を唱えたのだけど、ちゃんとまとめておきましょう。
なお、異論を唱えたと言っても、GIGAZINE の記事が誤りだというわけではありません。
これについては後述。
以下、海外でサイモンについて詳しいサイトからの情報です。
技術を紹介したページなので、翻訳ではなくて、読み解いて解説しなおしたもの。
でも、元ページの図などを一緒に見るとわかりやすいです。
サイモンは、ラジオエレクトロニクス1950年10月号の表紙を飾り、それから1年にわたって解説記事が連載された機械です。
リレー回路を使ったデジタル計算機で、紙テープを使ってプログラムを作ることができます。
実用品と言うよりは、将来のコンピューター技術者を育てるための教育用でした。
プログラムには5穴紙テープを使います。
当時はテレタイプ用として普及していました。
#テレタイプについても解説したいけど、ここでは関係ないので割愛。
まぁ、紙テープは当時の「普及した保存メディア」で、簡単に手に入ったことだけ理解できれば十分です。
5穴紙テープは、紙テープの「幅」方向に、5つの穴を開け、読み取ることができます。
この5穴を「1列」とします。1列が 5bit 、ということですね。
テープの続く限り、何列も穴を空けることができ、長いデータを保存できます。
また、テープ自体は切ったりセロテープで貼ったりして編集できます。
その意味で、長さの制限は特にありません。
計算機自体は、レジスタを 16本持ちます。CPU として見るとなかなか豪勢。
でも…メモリを持たない機械なので、これが「全メモリ」です。
レジスタは基本的に1本が 2bit です。
ただし、2bit のレジスタを2本まとめて 4bit として使えるレジスタ(IR1/IR2)が1本と、4bit のレジスタ(CR4)が1本あります。
テープにプログラムを組む場合は、5穴のうち4つを使い、それを3列で命令を表します。
(各列のつかわない1bitは、内部制御のフラグに使用します)
3列のうち、1つはデータを示します。
テープから読み込まれたデータは、常に 4bit で IR1/IR2 に入ります。
残る2列は、レジスタを表します。
1つは「送り側レジスタ」で、もう一つは「受け側レジスタ」の指定です。
先に書いたようにレジスタは16本なので、穴4つで完全に指定できます。
この「2つの指定レジスタ」間で、データのコピーが行われます。
送り側に IR1/IR2 を指定すれば、いまテープから読み込んだデータを別のレジスタに書き込むことも可能です。
SR1~SR6 は値の一時保存(Storage)用で自由に使えます。
OR1~OR3 は出力(Output)用。
CR1~CR5 は計算(Compute)専用。
OR1~OR3 は、ビットが電球に繋がっています。
計 6bit ありますが、OR3 は1個しか電球がつながっておらず、出力は5bitになります。
電球に繋がっている、ということを除けば普通のレジスタなので、読出しも可能です。
CR4 は 4bit ですので、IR1/IR2 の値を 4bit すべて書き込むことしかできません。
そして、CR4 に書き込みが行われると、CR1~CR3の数値を元に「計算」が行われます。
結果は CR5 に書きだされます。CR5 は読み出し専用で、書き込むことはできません。
CR4 に書き込む計算指示は 4bit ですが、9種類だけ作られていて、残りは未定義です。
以下、C言語風に書くと、命令はこうなっています。
算術演算:
CR1 + CR2
-CR1
キャリー付算術演算:
CR1 + CR2 + CRY
-(CR1 + CRY)
ビット演算:
CR1 & CR2
CR1 | CR2
~CR1
選択:
(CR2 > CR1) ? 1 : 0
(CR3 & 1) ? CR2 : CR1
以上の9個が全命令です。
キャリーは、算術演算・キャリー付算術演算で生じます。
これはレジスタではなく、計算回路に 1bit のフラグとして保持されています。
命令には、選択はあるけど、条件分岐はありません。それどころか、ジャンプ命令が無い。
メインメモリが無くて「紙テープ」にプログラムが書かれているのだから、ある意味当然です。
紙テープに直接書かれているプログラムが、直接「計算」を指示するのではなく、「データ移動」だけ。
計算指示は CR4 にデータを移動することで表現。
今の CPU から見るとちょっと変わったプログラム方法ですが、いまだってデータ転送がプログラムの中心で、計算は時々…だと思えば、それほど変わっているわけでもありません。
2bit の足し算しかできませんが、補数を求められるので引き算にも応用できます。
また、キャリーフラグはあるため、多倍長演算に拡張できます。
もっとも、結果出力が 5bit しかないので、結果が 0~31 に収まる計算しかできません。
紙テープには、各列 1bit づつの余りがあります。
これを使って、「プログラムの終了」を表現することができました。
でも、これはただ単に「終了」なのね。
条件が整ったら終了、とかではない。紙テープの終わりに来ても終了するのだけど、途中で明示的に打ち切れるだけ。
つまり、条件ジャンプも、条件停止もできません。データは制御できるけど、プログラムは制御できないのです。
これが何を意味するかというと、掛け算は作れても割り算は作れない、ということです。
割り算は「何回引けたか」が答えなので、「引けなくなった」という条件によって「停止」する必要がある。
ここら辺が、サイモンのプログラムの限界です。
ちなみに、後にスケッチパッドを作り、CGの世界を切り拓いたサザーランドは、幼少のころに兄と一緒にサイモンを使っていたそうです。
詳細はサザーランドの誕生日に書いたけど、彼はサイモンを改造し、割り算プログラムを作っています。
CR4 に与える命令は、4bit まで可能だけど9種類しかありませんでした。
残り7命令文、拡張の余地があります。
恐らくは、どこかに「条件停止」を追加したのでしょうね。
ジャンプ命令は無いので、「何回引いたか」を調べるために、理論上最大の長さまで命令を繰り返しておく。
(現代風に言えばループ展開です)
そして、割り算の結果が出た時点で条件停止します。
残りの命令は実行されずに終わるのだけど、それでいい。
これが、プログラムの紙テープが 2.4m にも達した理由でしょう。
複雑なプログラムを組んだから長いのではなくて、ループ展開したから長いだけ。
さて、最初に書いたように、僕はこの機械が PC だというのに異論がありますが、ギガジンの記事が誤りだとは思いません。
まず、GIGAZINE の記事は、海外記事を翻訳しただけの受け売りで、GIGAZINE の記者は記事の内容を理解できていません。
だから、GIGAZINE に誤りはない。誤りがあるとすれば元の海外記事。
この記事自体は「PCの定義」から始まっています。
なにを PC と呼ぶかは不明だけど、「定義した内容にしたがって」最初の PC を紹介する、という体裁。
ここでは、誰でも手に入るほど、入手容易で安価なデジタルコンピューターでプログラム可能なもの、とされています。
(GIGAZINE では、コンピューターを「計算機」と訳し、「デジタル計算機である」ことを定義としています。
しかし、元記事では「コンピューター」と書かれているので、ここではコンピューターとします)
ところで、計算機(カリキュレーター)と、コンピューターは違います。
カリキュレーターは、ただ計算を行うだけの機械。
カリキュレーターの中には、計算手順をプログラム可能なものもあります。
なので、プログラム可能であることはコンピューターの条件ではありません。
元々、コンピューターは計算手…計算を行う「人」を意味した言葉です。
一定の手順…アルゴリズムに従って計算を行えます。
アルゴリズムには、条件の「判断」が多数含まれます。
そうでない場合、プログラムが可能で、その手順がどんなに複雑でも、単一の「計算式」を示しているにすぎません。
カリキュレーターとコンピューターをわけるのはこの部分です。
コンピューターであれば、プログラムの「条件分岐」か、最低でも「条件停止」を持っていることが条件となります。
そして、サイモンはこうした命令を持っていないのです。
(サザーランド兄弟による「改造サイモン」には条件停止がありましたが、改造するには高度な知識が必要です。これはすでに「特殊な訓練を受けていなくても使える」という元記事の要件を満たしません。)
ただ、どこまでがカリキュレーターで、どこまでがコンピューターか、というのも人によって解釈はさまざま。
サイモンは条件分岐や条件判断は持ちませんが、条件によって値を変える命令はあります。
元記事を書いた人たちは、古いコンピューターを保存するのを目的とした人たちですから、ここまでに書いたような議論は全部了解したうえで、あえて「サイモンが最初」と書いたのだと思っています。
当ページでは、リレー式計算機はコンピューターには含めていません。
電気では動きますが、物理的動作があるために遅く、いわゆる「電子計算機」としての要件を満たさないためです。
サイモンはリレー式なので、僕としては最初とは考えません。
部品が違うだけで原理的には同じなので、含めるという考えがあったって一向に構わないのですけどね。
GIGAZINEの記事中では、PDP-8 は「高かったから選外」となっているのですが、実際には PDP-8 は安価だったが故の大ベストセラーマシンで、長年売られていたために技術の進歩に合わせてどんどん値下げされました。
当初の値段は $18,500 で確かに高価なのですが(質素な家が買える値段、だったようです)、後には 1/10 程度まで下がりました。
特に「複数台買うと値引き」もあったので、会社のと併せて2台買ってしまおう(BUY TWO, TAKE ONE HOME)、なんてキャンペーンもあったようです。
そんなこともあって、最初の「個人でもなんとか所有できるコンピューター」としては PDP-8 はギリギリの線かな、と思っています。
#もちろん、本当に「気軽に」買えるのは、値段的にもサイズ的にも Altair8800 だと思います。
実際、PDP-8 ではゲームとか音楽演奏とか、仕事ではない、個人のためのフリーソフトが沢山作られました。
後のパソコン文化を先取りしていた、と言ってもいいでしょう。
あと、個人で遊べるコンピューターとしては TX-0 推し。1台しかないプロトタイプなので、所有は無理でしたが。
(GIGAZINE の記事にも出てきませんし)
テレビゲームも多数作られています。面白くもない計算用途ではなく、面白いからコンピューターを使う、というのは「個人のための」の重要要件だと思います。
ちなみに、サザーランドはサイモンで基礎を学びましたが、TX-0 でコンピューターの可能性に目覚め、後継の TX-2 でスケッチパッドを作っています。
当時はまだコンピューターが高価な時代。お絵かきのために「個人で占有する」なんていうアイディアは、当時としては驚きを持って迎え入れられました。
スケッチパッドのアイディアを元に SmallTalk が着想され、Alto が作られます。
Alto は、GIGAZINE の記事にも出ているね。
そして、Alto が Macintosh や Windows を生み出したわけで、PC のルーツをたどると TX-0 に行きつく、と思っています。
TX-0 は「個人でコンピューターを使う」というハッカー文化を生んだ機械でもあり、「誰かが作ったプログラムのソースを入手して改造できるのが当然」なんていう、オープンソースの概念はここから生まれています。
GNU の創始者である RMS も TX-0 の作った文化を知る最後の世代です。
同じテーマの日記(最近の一覧)
関連ページ
森公一郎 命日(2015) レイ・ドルビー誕生日(1933)【日記 16/01/18】
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |