2014年07月01日の日記です

目次

07-01 「我々が考えるように」発表(1945)
07-01 NOP 命令が作られた日(1960)


「我々が考えるように」発表(1945)  2014-07-01 10:40:56  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は MEMEX の構想が発表された日(1945)。


さて、昨日(ヴァネバー・ブッシュの命日)の話の続きです。

「今日は何の日」で、まさかの2日連続の話題。


ブッシュは、1945年の今日発売の The Atlantic Monthly 誌に、「As We May Think」(我々が考えるように)という論文を発表しました。

この論文は、仮想機械 MEMEX の効用を説いたものです。


今は良い時代で、この全文を読むことができます。



論文の前半は、過去の技術の進化と現在の最先端が…各種分野ごとにわかりやすく列記されます。


露光に何時間もかかった写真が進化し、乾板写真となり、現在ではテレビで生中継が可能なこと。

鉛筆やタイプライターで紙に記録してきたのが、現在ではパンチカードに記録することで自動集計が可能になったこと。

そろばんで計算していたのが、機械式計算機が生まれ、複雑な方程式も解ける微分解析機となったこと。

情報を適切に並べるのに、紙の束を何らかの順で並べてファイルしていたのが、パンチカードによってソートが可能になり、何万件ものデータを扱えるようになったこと…




それらの紹介の後、MEMEX のアイディアが披露されます。


技術は進み、たくさんの情報を記録し、ソートしておけるようになりました。

しかし、たとえ「膨大な本をタイトル順に並べた」としても、それで必要な情報が探しやすくなったのでしょうか?


情報を整理するのには、機械的な方法ではダメで、「我々が考えるように」しなくてはならないのです。


ここで、とある情報に、関連性がありそうな別の情報を接続し、後でいつでも引き出せるようにする、という MEMEX の、基本的なアイディアが紹介されます。


膨大な情報は、マイクロフィルムで記録されます。

新しい本や新聞をマイクロフィルムで購入することもできます。

新たな手書きノートも、メモも写真も、撮影して瞬時にマイクロフィルム化できます。


そして、関連する事柄を接続しておくことができます。

…ブッシュは、この「接続された情報」のことを、トレイル(足跡)と呼びました。



たとえば、百科事典では、項目の末尾に関連項目が示されます。

MEMEX のフィルムとして購入できる百科事典は、項目ごとにトレイルが設定されているものになるでしょう。




そして、MEMEX の白眉は、これら「トレイル」の扱いにあります。


トレイルのデータもまた、MEMEX のマイクロフィルムとして記録されます。

パンチカードの穴の有無が光によって検査されているのだから、マイクロフィルム上のインクで同じように情報を記録できる、という技術的裏付けも示唆されています。


そして、マイクロフィルムは複製することも簡単です。

あなたのトレイルデータを複製し、友人に渡すこともできるのです。


例えば、あなたが趣味で「ヨーロッパにおける弓の歴史」を調べたとします。


あなたの書いた論文と、根拠を示す関連書籍を結び付けたトレイルデータを、あなたの友人に渡せば、友人は根拠となる事実が正しいことを確認しつつ、あなたの論文を評価できるのです。


(関連書籍は買う必要があるかもしれませんが、それは「本」が情報の中心だった当時としては当たり前のことです)



弁護士は自分の関与した事件の関連書類をまとめておいて、クライアントに対して、自分が過去にどのような事件を専門として仕事をしてきたか、すぐに示せるでしょう。


医者は珍しい症例のデータを共有し、患者の診断に役立てられるかもしれません。



MEMEX は、単に個人的な記憶の手段としてだけでなく、人々の暮らしを変える「情報の交差点」となるのです。




昨日、ブッシュの命日の記事で書いた通り、ブッシュは自分以外の人の考えを認めないところがありました。


彼はデジタル計算機の限界を超えるために、微分解析機というアナログコンピューターを発明しています。

そのため、デジタル計算機は信用しておらず、新たに生まれつつあったデジタルコンピューターも信用していませんでした。


彼にとっては、マイクロフィルムが最先端技術であり、MEMEX はマイクロフィルムによって発明されるだろう技術でした。


実は、マイクロフィルムを使った連想記録は、この頃すでに発明されていたそうです。

しかし、その発明のことは知らず、技術を発展させるのではなく、夢想するだけに終わっています。


これもまた、「自分のような天才以外に、このようなことを思いつくはずがない」という過信からだったようです。



しかし、この論文のタイトルが「MEMEX」ではなく、「我々が考えるように」だということに注意してください。


ブッシュは、仮想機械として MEMEX を示しましたが、この機械が重要だと言っているわけではありませんでした。



MEMEX を重視するのであれば、ただ MEMEXの夢を語ればよいのです。

しかし、論文の前半は「各分野ごとの工学発展史」でした。


彼は、それまで「技術」が先行し、バラバラに発展していた各種工学分野の成果を、「そろそろ、人間が使いやすいことを重視して、まとめなおすべきではないか」と提言したのです。


いうなれば、20世紀の機械技術の人間復興ルネッサンス


現代的に振り返えれば、ユーザーインターフェースに革命を促したのです。




MEMEX は魅力的な機械でしたが、夢想が壮大すぎてすぐに実現できそうにはありませんでした。


しかし、後の世に確実に種をまきました。この論文を読み、感銘を受け、後に MEMEX を自分なりに作り出そうとした人たちがいるのです。


…というところで、今日の話は終わりにしておきます。

続きはまた明日。(ナヌッ!?)



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

コンピュータ

今日は何の日

関連ページ

ヴァネバー・ブッシュ 誕生日(1890)【日記 15/03/11】

訂正・NOP命令の誕生

ダグラス・エンゲルバート 誕生日(1925)【日記 16/01/30】

ダグラス・エンゲルバートの命日(2013)【日記 14/07/02】

【訂正】NOP命令が作られた日【日記 14/07/06】

別年同日の日記

05年 再引越し

08年 溶連菌感染症

11年 節電

13年 凝集度の高いプログラム

15年 A Dark Room , Candy box! , Cookie Clicker.

16年 PHSサービスが始まった日(1995)

18年 氷川丸


申し訳ありませんが、現在意見投稿をできない状態にしています

NOP 命令が作られた日(1960)  2014-07-01 12:16:50  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は NOP 命令が初めて公式文章に記された日(1960)。


…本当かどうかわかりませんが。

僕の調べではこれより古い NOP 命令の記述はありません。


2014.7.6 追記

もっと前の記述がある、という情報が寄せられました。情報提供ありがとうございます。

この記事の内容全てが誤りではありませんが、少なくとも「初めて公式文書に記された日」は誤りでした。


最初に NOP が登場したのは IBM 701。しかし、考え出したのは先に開発を始め、後で発売された IBM 702のようです。

IBM 702 では、明確な目的を持って NOP が作られています。

詳細は別記事にまとめてあります。


えーと、1年近く前に書いた記事、「NOP命令の誕生」は、自分では結構面白い内容だと思うのですが、面白さが伝わる人はかなり限られたようです。


うん。妻にすら、なんだかわからないと言われたよ。

まず、普通は NOP 命令が何かわからないよね。それで当然。


もっと多くの方に読んでもらえるように、前知識を解説しちゃいますよ!

面白いと思ったら本文も読んでいってね。




現代のコンピューター機器は、大抵 CPU を搭載しています。

会社によっては MPU って呼んだりするけど、つまりはコンピューターの本体部分。


コンピューターは電流を使って計算をしているわけですが、これは、計算できる回路をたくさん用意して、切り替えているのです。


足し算をしたいなら足し算回路を、引き算をしたいなら引き算回路を、掛け算をしたいなら掛け算回路を、割り算をしたいなら割り算回路を呼び出すだけ。

計算以外では、メモリにデータを記録しておく、とか、逆にデータを読み込む、とか。全部回路で用意されている。


そんな、小さな命令の寄せ集めでコンピューターは動いています。


ちなみに、画面に文字を書いたり、キーボードからの入力を読み込むのは、「記録」の一種です。

特定の場所に書いたデータは画面に表示されて、特定の場所のデータは、キーボードの内容によって勝手に書き変わる。


コンピューターって、本当に、驚くほど簡単な事しかできません。




さて、そんなコンピューターの「命令」も、データとしてメモリに記録されています。

コンピューターは数字しか扱えませんから、10 だったら足し算、11だったら引き算…みたいに、命令は数字と対応している。


しかし、数字だとプログラムしにくいので、一対一対応で、英語を省略したような名前が付いているのが普通です。


足し算なら add 、引き算なら sub 、掛け算なら mul 、割り算なら div 、という具合。

データの読み込みは CPU によって mov (ムーブ、移動、の意味)だったり、ld (ロード、読み込む、の意味)だったり、store (ストア、保存する、の意味)だったり。


余程単純な英語でない限り、CPU メーカーによって命令の呼び名も、その動作詳細も異なるのが普通です。



ところが、メーカーに寄らずほとんど同じ名前、動作も同じ命令があります。

それが NOP 命令。


No OPeration (なにもしない)の略なのですが、略であれば NOOP になりそうなものが、なぜか NOP 。

(NOOP にしているメーカーもあります)




…と、これが「NOP命令」が特別な理由なのですが、理解できる人が非常に少ないんですよね。


多分、プログラム能力がある人って、非常に簡単なものを作る能力でも 100人に1人いない。

ましてや、機械が理解できる言葉(機械語)で直接プログラムしようなんて人は、プログラムできる人のうち 100人に1人いない。


そして、機械語プログラムができる人でも、NOP 命令に興味を持つ人なんて、100人に一人いない。


…となると、今日が「NOP が初めて公式文書に記述された日」と書いて関心を持つ人は、日本全国で 100人程度しかいないことになる。


#今まで NOP に興味を持ってなかった人の2人に1人が、このページを読んで興味を持ってくれれば、5千人程度には増える計算(笑)



僕がコンピューターを使い始めた時には NOP はあって当たり前の命令でした。

だから僕も、正直なところ NOP の存在を特に疑問に思ったことはありませんでした。


これがちっとも「常識」ではないと知ったのは、がたろうさんのページに、「NOPと都市伝説」というコーナーを見つけたから。


そして、上記ページを見つけた時、すでに僕は がたろうさん が求めている答えを知っていました。




がたろうさんは、ある程度有名なマシンを調べて PDP-1 が NOP を最初に搭載したマシンである、と結論付けていました。

そして、その理由はおそらく技術的に自然発生しただけだろう、と。

NOP の名前の由来も、同じように自然発生と考えています。


しかし、PDP-1 の前には TX-0 があり、TX-0 には NOP が存在しなくてはならない、強い理由があるのです。

実際、PDP-1 よりも前に TX-0 の技術文章に NOP が登場していました。



TX-0 は、非常に複雑な命令系を持っています。


先に、CPU の命令を「足し算」「引き算」などの簡単なものしかない、と書きましたが、TX-0 にはそれすらもないのです。


「半加算」と呼ばれる、繰り上がりの無い足し算は出来ました。

また、「繰り上がり処理」も出来ました。

だから、組み合わせれば足し算ができます。でも、それを組み合わせるのはプログラマの責任でした。


全ての命令が、いくつか組み合わせたら何かできそうな機能どまりなのです。

そして、これらの命令は「同時に」実行することが可能でした。


命令の特定のビット(2進数の1桁)を 1 にすると実行され、0 にすると何もしないのです。

いくつかの命令は、2進数1桁ではなく、5桁で表現されました。


この命令体系は TX-0 独特のもので、僕は他のマシンでこのような方法を見たことは無いです。




5桁で示される命令は…2進数5桁では、32種類の組み合わせを作り出せます。

しかし、当初は全ての数字に命令が割り振られていたわけではありません。


命令表で「何も入っていないところは将来の拡張予定」とされました。


しかし、ここで問題が起こります。


1桁で示される命令は「0」を指定すると、その命令は実行しない、と決められています

5桁の場合、すべての桁が 0 の場合は、何もしないことになっていました。


しかし、「何もしない」がゆえに、命令表には何も書かれていませんでした。


何も書かれていないのですから、これは、将来の拡張予定なのでしょうか?

もし拡張されたら、5桁の2進数で示される部分は、「何もしない」ことができなくなり、他の命令に悪影響を与えるのでは?



そして、懸念していた事態…すべてが 0 の「将来の拡張予定」部分に、命令が拡張される時が来ます。


追加された命令は「NOP」。意味はもちろん「No OPeration」でした。

「命令が入ってない場所は将来の拡張予定」でしたが、すべてが 0 の時は何もしないことを保証したかったため、「何もしない」命令が作られたのです。


この追加命令が公式文章に登場したのが、1960年の7月1日。つまり54年前の今日でした。



ちなみに、TX-0 は、6bit を 1byte とする、18bit コンピューターでした。

当時はアスキーコード選定前。1文字は 6bit で、3文字を同時に扱える、ということになります。


このため、TX-0 の機械語命令は、3文字で1命令とするのが普通でした。

NOOP ではなく NOP となっているのはそのためです。



…と、概要は以上の通り。

詳細は「NOP命令の誕生」を読んでね。





ちなみに僕が書いたページ、がたろうさんのページでは触れられていませんが、書いてすぐに連絡済みです。

いろいろお忙しい方なので、ページ更新の暇が無いようです。


お忙しい方の手を煩わせたくないので、「こんな記事があるよ」というような無駄な追加連絡はしないように。

(こっちも趣味、あっちも趣味だから、主張が違ったって構いませんし)



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

コンピュータ

今日は何の日

関連ページ

ヴァネバー・ブッシュ 誕生日(1890)【日記 15/03/11】

訂正・NOP命令の誕生

ダグラス・エンゲルバート 誕生日(1925)【日記 16/01/30】

ダグラス・エンゲルバートの命日(2013)【日記 14/07/02】

【訂正】NOP命令が作られた日【日記 14/07/06】

別年同日の日記

05年 再引越し

08年 溶連菌感染症

11年 節電

13年 凝集度の高いプログラム

15年 A Dark Room , Candy box! , Cookie Clicker.

16年 PHSサービスが始まった日(1995)

18年 氷川丸


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

8000

-- follow --




- Reverse Link -