category name  »  page title date

ブートストラップ

パソコン前夜

もう何十年も前のことなので、うろ覚えの部分も多い。パソコン前夜のお話しである。
その頃まだパソコンという言葉はなく、個人的に手に入るコンピュータはマイコン(マイクロ・コンピュータ)と呼ばれていた。

NECのワンボードマイコン
TK80BS

マニアックな話しで恐縮だが、当時のマイコンは、下敷きの上に小さなチョコレートがぎっしり並んだような形をしていた。いまでいうマザーボードを、もう少し疎らにしたような感じ。

なにかをさせようとすると、下敷きの脇に8個並んでいるスイッチを、2進数のコード表を見ながらオンオフして、命令をメモリにセットする。命令といっても単純なことしかできないので、たとえば整数の足し算をさせるだけでも、何十もの命令を順に書き連ねなくてはならず、ひとつの間違いも許されない。しかも、困ったことに、電源を切ると全部失われてしまう。

当時のコンピュータマニアたちは、今以上にオタクな作業をコツコツやっていたのである。
これでは不便なので、メモリの内容をカセットテープに書き出し読み込む、という高度な命令群をなんとかつくり、これをROMに焼き付けて保存する。これで、めでたく電源を切っても大丈夫になる。ROMの内容は、電源を切っても消えない。
当時、秋葉原に行くと5分用とか10分用とかの短いカセットテープが売られていた。もっぱらプログラムの保存用であり、いわゆるプチ・磁気テープですね。

次は、8個のスイッチの組み合わせをキーボード上のキーに対応させる(実際にはキーの数が少ないので、4個のスイッチの組み合わせをひとつのキーにするのだが)ような命令群をつくる。
たとえば、0000→「0」、0001→「1」・・・・1001→「9」、1010→「A」・・・・1111→「F」という具合。Fというキーを押すと、「1111」が入力される。
おお、これは便利だ。あとは、使えるようになったキーボードで、結果をテレビ画面に映したり、プリンタで印刷したりする命令群をつくっていく。これらの命令群を、テープに書き出しておいて、必要に応じて読み込んで使う。これで、格段に操作性が向上してコンピュータらしくなった。

しかし、それでもオタク度はあまり変わらない。相変わらず人間には理解できない16進数のコードを大量に書き連ねる作業を、夜な夜な繰り返すのである。

そこで、今度はそれぞれの命令に固有の名前をつけて、キーボードからその名前を打ち込むと、対応したコードに変換してくれるような翻訳プログラムをつくる。翻訳といっても、単に単語を1対1対応したコードに直すだけなのだが、これで、脳への余計な負担が格段に低減する。たとえば、「LOAD A,B」と打ち込むと、それに対応した10110001というコードに変換する、という具合(この対応例はデタラメですが)。

ただそれでも、どこそこのレジスタのデータをどこそこの番地のメモリへ移す、などという下等な命令を書いていることに変わりがない。もう少しなんとかしたい。

それで次に出てくるのが、いわゆるプログラミング言語への欲求である。ある種の言語からの翻訳プログラムを、さきの翻訳プログラムを使ってなんとか書くと、やっと安心して複雑な作業をこなせるようになる。
たとえば、画像データをファイルから読み込んで画面に表示するという処理は、相当に複雑な処理で、これを機械語で記述するとソースコードが何千行になるのかわからないが、VisualBasicでは「.Picture = LoadPicture(filePath)」とほんの一言ですんでしまう。
自分でつくった超単純なアセンブラを使って、Tiny BASICのインタープリタを悪戦苦闘しながら作った昔が、なつかしい。

CPU自体は、内部に機械語に対応したマイクロプログラミングのコードが備わっているだけで、それ以上のものではない。これを使えるようにするのは、少しずつステップアップしていくソフトウェアのおかげである。
正確ではないかもしれないが、たとえば裸のCPUから出発して、アセンプラというプログラミング・ツールが使えるようにし、アセンプラを使ってC言語のコンパイラを作り、C言語自体を使ってC言語による開発環境を整備し、それを使ってエクセルとVisualBasicのインタープリタをつくり、さらにそれを使って業務用のパッケージを開発し・・・・というようなイメージである。

こういう積み上げをブートストラップと言うのだ、と当時教わった。ブートストラップはいろいろなことを教えてくれる。

ブートストラップ

ブートストラップとは「編み上げ靴のつまみ皮」と辞書には書いてある。
皮紐をつまんで、靴ごと自分の体を持ち上げる、という冗談っぽい言い回しから「自分のことを自分でする」というニュアンスをもつ言葉らしい。

「より小さな起動力を出発点に、より大きなものを動かすしくみ」と解説するひともいて、こう聞くと、いま紹介したコンピュータプログラムの進化ステップをなぜそういうのかが、ストンと納得できる。
機械語からはじまって、それを使って少しましな言語をつくり、少しましな言語を使ってさらに高度な言語をつくり、と順に登っていくプロセスを「ブートストラップ」と言ったのは、なかなかしゃれている。

高度な言語を用いると、複雑な処理がそれまでより簡単にできるようになる。
「簡単に」というのは画期的なことである。たとえば、機械語ではオンとオフの8連の組み合わせを間違わないで一万個書き連ねなくてはいけなかった処理が、ひとつの単語で指示できるようになったとすると、それは簡単になったというよりも、できなかったことができるようになった、ということである。

余談ながら、コンピュータの世界ではこういうことがよくある。機械語でオタクしていた頃と今とを比べると、コンピュータの処理速度は十万倍をはるかに越えているが、これは、十年かかった仕事が今は一時間でできることを意味するから、これも単に速くなったのではなく、できなかったことができるようになったのである。

もっと余談をいうと、パソコン用のハードディスクがはじめて発売された頃、その容量は1メガバイトで値段がちょうど100万円であった。いま、1テラバイトのものが1万円以下で買えるから、1バイトあたりでいうと、1億分の一の計算である。これは、単に安くなったのではなく、買えなかったのが買えるようになったわけだ。

さらに余談をいうと、当時のマイコンは今よりもはるかにスピードが遅くメモリ容量もわずかであったために、プログラミングの際にはできるだけ無駄を省いていかに早く処理させ、いかにメモリを節約するかということに腐心したものである。
おかげで、もうそんな必要もなくなって、むしろプログラムの保守の容易さを重視するようになった今でも、ややもすると昔の癖がでてアクロバチックなコーディングをしてしまいがちだ。逆に、たとえば最近の自動作成されたホームページのコーディングなどを見ると、その恐るべきほどの冗長さに目がくらんでしまう。

さて、言語が高級化して複雑な仕事ができるようになると、もっともっと、と欲求はとめどもなく広がってくる。その結果として、1台のパソコンの中のバーチャルな世界は、人ひとりが一生かかっても探訪できないくらい広大なものになってしまった。
最初からそうだったわけではない。自分の言語で次の言語を記述するという、自己向上の仕組みをコンピュータがもっていたからこうなった。

2種類のオタク

わたしの通っていた大学に大型計算機センターが設置されたのは、1965年。
わたしが、自作のプリント基板の上に買ってきたICを並べて、8個のスイッチをオンオフしながら夜毎ネクラな作業をやっていたのは、そのおよそ10年後のことである。

計算機センターは、鉄筋コンクリート4階建てで、専用の受電設備がついた巨大なものだった。その導入にかかわったY先生が、ときどきわが下宿に視察にやってきて、楽しそうにこちらのコンピュータを眺めていたが、彼が感嘆して言うのに

「センターの最初の機械より、これのほうが内部記憶容量が大きいんだよね・・」。

進歩とはすごいものだ、とこっちも嬉しくなった。
しかし、若干のコンプレックスがなかったわけではない。同僚や先輩に「そんなことで遊んでいるよりも、本業の勉強をしろ」と言われると「いずれこれが都市計画にも役立つはずだ」と強弁するほかなかったのだが、実のところ、そんなことはちっとも信じていなかったのである。

その後、凄まじいばかりの集積度の向上、驚異的な高速度化、圧倒的な記憶容量の増大、劇的なコストの低下、なによりもコンピュータ人口の爆発的な増加、などとあいまって、コンピュータ言語とデータベースはブートストラップを繰り返したあげく、はるかここまで来てしまった。
いまでは、都市計画のプランニングに限らず、コンピュータを使わないで仕事を行うことは不可能である。

あの頃の、悲壮で機械的で、まわりから蔑まれる辛気臭い作業はいったい何だったのか、と考えることがある。ゲームやアニメに現を抜かすのと、さして違わないのではないかと。

ところが、違うのである。
前者は、ブートストラップの流れの中にいる、という意味で優れて生産的な行動である。かりに何も生産しなかったにせよ、先に広大な夢があった。
しかし後者は、人がなしとげてくれた成果を、単に消費しているだけのものだ。その結果えられるものは、時間つぶしと個人的かつ瞬間的な達成感だけである。

と、いまだに強弁するのは、まだ当時のコンプレックスが抜けきらないせいかもしれない。しかし、この見分けは何につけても必要だ。誰かが地道な作業を、多少のコンプレックスを抱えながらコツコツとやってくれたから、今がある。

ニュートンの巨人

ニュートンは、

「わたしが遠くを見ることができるとすれば、それは巨人の肩に乗っているからである」

と言ったそうだが、どの世界でもそういうことがあるだろう。
本当に何の役に立つのだろうと思われるような、取るに足りないオタクっぽい作業でも、夢をもって続けていれば、それが積み重なって、巨人の体が生まれる。
ニュートンにはなれないが、それを乗せる巨人の細胞のひとかけらにでもなりたいものだ。

inserted by FC2 system