うしPのサイト
文学・思想の一丁目一番地
ダイクストラ入門 科学者入門シリーズ39
第一章 ダイクストラってどんなひと?
ダイクストラという名前を知ったとき、多くの人はまず「ダイクストラ法」を思い浮かべるだろう。地図アプリ、配送ルート、ネットワーク通信、ゲームの経路探索。とにかく「最短経路」を求める話で、プログラミングの入門書には必ずと言っていいほど登場する。だから彼は、便利なアルゴリズムを作った偉い人、というイメージで語られがちだ。
だが、もしダイクストラを「最短経路おじさん」として片付けてしまうなら、それは彼の本質を見落としている。彼が本当にすごかったのは、ひとつの技術を発明したからではない。彼が世界に残したのは、アルゴリズムよりも深いところにある、「考え方の形式」だった。もっと言うなら、コンピュータ科学という学問が、ただの現場の職人芸ではなく、人間の思考を鍛える知的な技術体系になっていくための、骨格のようなものを作った人だった。
エドガー・ダイクストラは、オランダ出身の計算機科学者である。彼が活動した時代は、現代のようにコンピュータが当たり前の道具になっていたわけではない。プログラミング言語も環境もまだ未成熟で、ソフトウェア開発という行為そのものが新しく、荒っぽく、手探りだった。今でこそ「正しい設計」「読みやすいコード」「テスト」「安全な並行処理」といった概念が常識のように語られているが、当時はそんなものは十分に共有されていなかった。むしろ、できるだけ早く動くものを作ることが優先され、コードは巨大になり、事故は起こり、修正は泥沼になっていった。
ダイクストラは、その混沌に耐えられなかった人だ。混沌を楽しめるタイプではない。秩序を求め、構造を求め、何よりも「人間の頭が扱える範囲」を守ろうとした人だった。ここが面白いところで、彼はマシンのために秩序を求めたのではない。人間のために秩序を求めた。プログラムが複雑になればなるほど、その複雑さを背負うのは機械ではなく、考える人間の側だからだ。つまり彼は、プログラミングを「機械への命令」ではなく、「人間の思考をどう保つか」という問題として見ていた。
彼が残した文章には、そういう強烈な意志がにじんでいる。ダイクストラは技術者であると同時に、思想家だった。しかもその思想は、「こうしたほうがうまくいく」といった優しい助言ではなく、「こうしなければ必ず破滅する」と言い切るような鋭さを持っていた。だから彼はしばしば怖い人として語られる。強い口調で批判する。甘えを許さない。妥協を嫌う。そういう人物像が生まれるのも自然だ。
しかし、その厳しさは、単なる性格の問題ではない。彼が見ていたのは、ソフトウェアの未来が抱える“確実な爆発”だった。プログラムはどんどん巨大になり、複雑になり、現場の勢いだけでは制御できなくなる。誰かが「これ以上は危険だ」と言わなければならない。誰かが「人間は万能ではない」と宣言し、複雑さに勝つための方法論を提示しなければならない。ダイクストラは、その役割を引き受けた人だった。だから彼の厳しさは、未来への警告であり、同時に未来への責任だった。
ダイクストラの名を有名にした言葉のひとつに、「goto文は有害である」という主張がある。プログラミングを少しでもかじったことがある人なら、goto文というものを知っているかもしれない。処理の流れを強制的に飛ばす命令で、便利ではあるが、使いすぎるとコードが迷路のようになっていく。初心者でも「読みにくくなる」という実感は持ちやすい。ダイクストラは、それを単なる好みや美意識ではなく、人間の思考の限界から導かれる危険として捉えた。無秩序に飛び回る制御構造は、プログラムを理解することを困難にし、修正や拡張を地獄にする。そしてその地獄は、規模が大きくなれば必ず現実になる。
この主張は賛否を呼び、今でも語り草になっている。だが重要なのは、彼が「gotoを禁止したかった」わけではないことだ。彼が言いたかったのは、プログラムを無秩序な迷路にしないために、人間の理解に沿った構造を持たせよ、ということだ。そしてその構造とは、分岐と繰り返しをきれいに組み合わせ、階層的に読み下せる形で作ることだった。ここから構造化プログラミングという革命が生まれていく。つまり彼は、特定の命令を悪者にしたのではなく、「思考の形式」を守るための戦いをしたのである。
ダイクストラはまた、「正しさ」というテーマに異常なまでに執着した人でもある。プログラムは動けばいい、という考え方は昔から強い。現代ですら、締切に追われる現場では「とりあえず動くもの」が優先されることがある。だがダイクストラは、動くことと正しいことは別だと言い続けた。いや、それどころか、動いているから正しいと信じることこそ危険だ、と言った。なぜなら、プログラムは複雑になればなるほど、偶然動いているだけの状態が発生するからだ。小さな条件の違いで破綻する。想定外の入力で崩れる。現場の人間が「たぶん大丈夫」と思ってしまう隙間に、静かにバグは潜む。
この姿勢は、単なる理想論ではない。むしろ現実を直視した結果の徹底だった。プログラムが社会の土台になればなるほど、壊れたときの被害は大きくなる。交通、金融、医療、通信。現代はすでにそれを実感している。ダイクストラは、まだ社会がその危険を十分に理解していない時代から、その未来を見据えていた。そのために「証明」や「形式的な検証」という方向へ進むことを強く推した。数学のように正しさを示せる形でプログラムを組む。あるいは、少なくとも正しさを議論できる構造で書く。ここにも彼の一貫したテーマがある。人間の思考を守るために、秩序を与えるのだ。
そして、ダイクストラは「文章を書く人」でもあった。論文だけでなく、短いメモを大量に残している。EWDと呼ばれるメモ群は、時に挑発的で、時に詩のようで、時に冷酷なほど論理的だ。そこには、単に技術を説明するのではなく、思考そのものを鍛えようとする姿勢がある。彼にとって文章は、発表のためだけの道具ではない。考えを整理し、誤りを排除し、自分の思考を正確にするための武器だった。
うしPのページに戻る