![]() |
|
『闘うプログラマー』 (Showstopper (*1) )
著者 G・パスカル・ザカリー (Gregg Pascal Zachary)
訳者 山岡洋一
日経BP出版センター
一人の男がいる。名はデビッド・カトラー。目標に向かって邁進し、仕事中毒で有能。根気強く自信も強く、細かいところに徹底して目を配る。反面、激しやすく頑固であり、いつも大声で怒鳴り散らしている。マナーは悪く、あたりまえの礼儀作法を平然と無視する。
しかしカトラーはコーディング(*2)の天才であり指揮官としての資質もあった。屈強な肉体と軍隊顔負けの厳しい企業理念も持っていた。プロ中のプロ「伝説のプログラマー」であった。
カトラーはDEC(*3)で絶対的な評価を得ていたが、会社は大きくなると官僚的になった。干渉を嫌ったカトラーはDECの資金で子会社を設立した。しかし進行中だったプリズム・コンピュータ(*4)のプロジェクトは開発中止を言い渡された。
一方、マイクロソフトのDOSは好調にシェアを延ばしドル箱になっていたが、Windowsはまだ認知されていなかった。ビル・ゲイツはRISCチップ(*5)とUNIX(*6)の脅威に立ち向かう必要を感じていた。「指先に情報を」を実現するにはCPUチップ(*7)を選ばない移植性と、UNIXに負けない機能を持ったOSを作らねばならない。
カトラーがDECを辞めたがっているという噂はゲイツの耳にも入った。「ドンピシャリのタイミングだった」。ゲイツはカトラーに会った。カトラーはMS-DOSはおもちゃだと思っている。信頼性があって、ネットワーク管理ができて、膨大な情報を処理できる本物のOS(*8)を作りたいと思っていた。ゲイツはすぐにカトラーは本物だと思った。
「NT(New Technology)」と称されるOSの開発プロジェクトがスタートした。ゲイツの野望を担ったのは、カトラーがDECから連れてきた外人部隊だった。DOSやWindowsとはまるで違うデザインであり、すべてが新しい概念、新しい機能、新しい技術だった。それはすべてをゼロから作り上げることを意味していた。
IBMとの共同開発に決別したマイクロソフトは、OS/2(*9)部隊をカトラー部隊と合流させ "NT" 計画を "WindowsNT" 計画に変更した。しかし製品リリースまでに残された時間はわずかしかない。カトラー部隊の「死の行進」が始まった。
ソフトウェアをテクノロジーとして捉え情報処理の玉手箱にしようとすると、そこには想像することさえ容易ではない未知の領域・デジタル荒野が広がる。広大な荒野を隅々まで調べ、一歩ごとに処方箋を書き、パズルのピースを作って埋め込み、しかも全体としての調和を保たねばならない。
彼らの書いたコード(*2)は600万行にもおよび、斬新なアイディアや新技術を盛り込まれたモジュール(*10)は数千にも上った。一人の人間がすべてを把握するのは不可能だといわれたOS は、ビルド(*11)するだけでも数日を要する程巨大であった。
ここには時代の先を行く未知の領域に、自分の名を刻んだ道を作ろうとした男たちの、苦闘の足跡が描かれている。OS開発プロジェクトが、膨大な資金と多くの犠牲と、それらを超越した強靱な意志によって成り立つものであることを教えてくれる。
プロジェクト内においてショーを止めるようなバグ、つまりリリースを遅らせるしかなくなる最悪のバグのことをこう呼んだ。 | ||
コーディング |
人間が理解できるプログラミング言語で記述されたプログラム。ソース・コード。 ソース・コードを記述することをコーディングという。このソース・コードを処理してPC上で実行可能なプログラム・ファイルができる。 |
|
DEC (Digital Equipment Corporation) | ||
科学計算を超高速で行うよう設計されたハードウェア・ソフトウェア共に画期的なもので、価格を従来の 1/10 に抑えた。 | ||
Reduced Instruction Set Computer。縮小命令セット・コンピュータと訳される。構造を単純にし処理を高速化したCPU。 | ||
米 AT&T ベル研究所で開発された OS。システムは堅牢であり、ソース・コードが公開され、移植も容易なことから多方面で利用されている。 | ||
Central Processing Unit。コンピュータの心臓部に当たり、コンピュータの入出力、命令の実行などすべての処理を行う。 | ||
コンピュータを動かすための基本となるソフトウエア。タスク・メモリ・ファイル入出力・画面表示といったシステム管理を行う。 | ||
米IBMと共同開発を行っていたOS。 | ||
機能ごとにまとめられたプログラム・ファイル。 | ||
複数のソース・コードあるいはモジュールを、実行可能なプログラム・ファイルやモジュールに変換する作業。 |