目次
07-01 「我々が考えるように」発表(1945)
07-01 NOP 命令が作られた日(1960)
今日は 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 を自分なりに作り出そうとした人たちがいるのです。
…というところで、今日の話は終わりにしておきます。
続きはまた明日。(ナヌッ!?)
同じテーマの日記(最近の一覧)
関連ページ
ヴァネバー・ブッシュ 誕生日(1890)【日記 15/03/11】
ダグラス・エンゲルバート 誕生日(1925)【日記 16/01/30】
ダグラス・エンゲルバートの命日(2013)【日記 14/07/02】
別年同日の日記
15年 A Dark Room , Candy box! , Cookie Clicker.
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
今日は 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命令の誕生」を読んでね。
ちなみに僕が書いたページ、がたろうさんのページでは触れられていませんが、書いてすぐに連絡済みです。
いろいろお忙しい方なので、ページ更新の暇が無いようです。
お忙しい方の手を煩わせたくないので、「こんな記事があるよ」というような無駄な追加連絡はしないように。
(こっちも趣味、あっちも趣味だから、主張が違ったって構いませんし)
同じテーマの日記(最近の一覧)
関連ページ
ヴァネバー・ブッシュ 誕生日(1890)【日記 15/03/11】
ダグラス・エンゲルバート 誕生日(1925)【日記 16/01/30】
ダグラス・エンゲルバートの命日(2013)【日記 14/07/02】
別年同日の日記
15年 A Dark Room , Candy box! , Cookie Clicker.
申し訳ありませんが、現在意見投稿をできない状態にしています。 |