エドガー・ダイクストラ
オランダの計算機科学者(1930-2002)。最短経路を求める「ダイクストラ法」の考案者として最も広く知られるが、業績はそこにとどまらず、構造化プログラミング3の提唱、セマフォによる並行処理の同期機構、プログラムの正しさを数学的に証明するという発想の確立など、計算機科学の基礎に広範な影響を残した。1972年チューリング4賞受賞。プログラミングを「デバッグで動くようにするもの」ではなく「最初から正しく構成すべきもの」として捉え直した人物であり、辛辣で断定的な文章でも知られる。
経歴
1930年5月11日、オランダのロッテルダムに生まれた。父は化学者、母は数学者という家庭で育ち、ライデン大学で数学と理論物理学を学んだのち、アムステルダム2大学で博士号を取得している。1952年3月、アムステルダムの数学センター(Mathematisch Centrum)でプログラマとしての職を得て1962年まで在籍した。当時プログラミングはまだ職業として確立しておらず、ダイクストラはオランダで最初のプログラマとされる。
1959年11月から1960年8月にかけて、ヤープ・ゾンネフェルト(Jaap A. Zonneveld)とともに Electrologica X1 向けに世界初の ALGOL 60 コンパイラを実装した。その後アイントホーフェン工科大学(1963-1973)、アメリカ21のバロース社のリサーチフェロー(1973-1984)を経て、1984年からテキサス2大学オースティン2校でシュルンベルジェ記念講座教授を務め、1999年に名誉教授として退いた※1。2002年8月6日、オランダのヌエネンで死去。
ダイクストラ法
グラフ上の2点間の最短経路を求めるアルゴリズム2。始点から確定済みの頂点を1つずつ広げていき、各段階で最も距離の小さい未確定頂点を選んで確定する、という貪欲法の代表例である。1956年に考案され、1959年に論文として発表された。カーナビの経路探索やネットワークのルーティング、フライトプランの作成など、現在も広く実用されている。
考案の経緯そのものが有名で、婚約者のマリア・デベッツとの買い物の途中、アムステルダムのカフェのテラスで20分ほどのうちに思いついたとダイクストラ自身が語っている。
構造化プログラミングと並行処理
1968年3月、Communications of the ACM に掲載された投書「Go To Statement Considered Harmful(go to 文は有害と考えられる)」で、goto 文の濫用がプログラムの構造を追跡不能にすると批判し、構造化プログラミングの普及を決定づけた。この論争的なタイトルはダイクストラ自身のものではなく、原題は「A Case Against the Goto Statement」で、掲載を早めるために投書として扱うことにした編集者ニクラウス・ヴィルトが付け替えたものである。以後、計算機科学の世界では「◯◯ considered harmful」が定型句として使われるようになった。
並行処理の分野でも基礎的な概念を多く残した。複数のプロセス2が資源を奪い合う状況を制御するためのセマフォ(P操作・V操作)を考案し、相互排除やデッドロック(彼自身は deadly embrace と呼んだ)、銀行家のアルゴリズム、そして「食事する哲学者の問題」といった、今も教科書に載る定式化を与えている。階層構造を持つOS「THE マルチプログラミングシステム」(1968年)、分散システムの自己安定化(1974年)、プログラムの正しさを最弱事前条件から導くガード付きコマンド2(1975年)も彼の仕事である。
EWD と人物像
ダイクストラは自分の草稿に「EWD」に続く連番を振り、モンブランの万年筆による手書きのまま複写して知人に郵送するという方法で流通させ続けた。生涯で1300編を超えるこの EWD 群には、技術的な論考だけでなく書評や旅行記、教育や業界への痛烈な批評も含まれ、正式な論文以前の彼の思考をたどれる資料として、現在はテキサス大学オースティン校のアーカイブで公開されている。
「テストはバグの存在を示すことはできるが、バグの不在を示すことはできない」といった断定的な警句を多く残し、当時普及しつつあった言語や手法に対しても遠慮なく批判を加えた。プログラムを書いてから動くまで直すのではなく、正しさの証明とプログラムを同時に導出する、という彼の主張は今も賛否を呼ぶが、ソフトウェアを数学的対象として扱う発想の出発点になっている。
要確認
- アムステルダム大学での博士号取得の年と学位論文の詳細
- 「計算機科学が計算機に関する学問であるのは、天文学が望遠鏡に関する学問であるのと同程度にすぎない」という警句はダイクストラの発言として広く引用されるが、一次資料での出典を確認できなかった
参照
- Edsger W. Dijkstra - Wikipedia (English)
- Edsger Dijkstra | Biography, Algorithm, & Facts | Britannica
- Edsger W. Dijkstra - A.M. Turing Award Laureate | ACM
- E.W. Dijkstra Archive: Obituary | UT Austin Computer Science
- Edsger W. Dijkstra: Brilliant, colourful, and opinionated | CWI
- The Man Who Carried Computer Science on His Shoulders | Krzysztof Apt, Inference
- The Dijkstra-Zonneveld ALGOL 60 compiler for the Electrologica X1 | CWI
- Letters to the editor: go to statement considered harmful | Communications of the ACM
- Considered harmful - Wikipedia
- Computer Pioneers - Edsger W. Dijkstra | IEEE Computer Society