あのころみんな若かった
【 あのころみんな若かった 】
ダイクストラは、読者に論文を最後まで読む前に、しばしたちどまって、自分自身で問題を考えてほしいと、問題への挑戦を呼びかけています。
「というのも、そうすることが、それぞれのコンピュータは、同時には一方向のメッセージを要求することしかできないという事実のトリッキーな帰結をしっかりと感じてもらう唯一の方法のように思えるからだ。」
「そして、それのみが、どの程度までこの問題が、トリビアルな問題からは遠い問題であることを、読者に理解させるだろう。」
なかなか挑発的です。ダイクストラは、このアルゴリズムの発見で高揚した気分になっているようにも思えます。今だったら、「論文に、こんなこと書かなくていいから」と指導教員からダメ出しされそうです。
ダイクストラのアルゴリズムというのは、10数行で記述されているとても短いものです。1日、1000行近いコードを生産するプログラマを、僕は何人か知っています。20行足らずのコードなんて、読むのも書くのも簡単だと思われるかもしれません。ただ、そうではありません。
事実、ダイクストラのアルゴリズムは、すぐに多くの人に正確に理解されたわけではないようです。ある日事件が起きます。ダイクストラの論文が掲載されたComm ACM誌の編集部宛に、Hymanという人が、コンピュータが2台の場合、ダイクストラのアルゴリズムをもっと簡単にできるという趣旨の手紙を出し、それが掲載されたのです。ただ、それは、間違ったものでした。
この手紙に最初に反応したのは、クヌースでした。(のちに、ド・ブルイジンも参戦します。)
「Hyman氏の「解法」なるものの反例を見つけるのは簡単である。(氏の12行のプログラムには、ALGOLの文法エラーが15個も含まれているのだが、たとえそれでも、何人かの読者は、彼のプログラムを理解できたかもしれないと、私は信じている。)」
キツイいいかたですね。でも、クヌースのダイクストラのアルゴリズムの理解は正確なものでした。その上、彼は、ダイクストラのアルゴリズムには、いくつか問題があることも指摘しています。さすがクヌース。
Knuth, Additional Comments on a Problem in Concurrent Programming Control
https://dl.acm.org/doi/10.1145/355592.365595
当時の議論を振り返っていて、本筋とは関係ないことですが、あることに気づきました。みんな若かったんです。1965年、クヌースは 28歳、ダイクストラは 35歳だったんですね。
-------------------------------------------
セッションの動画のURL
https://youtu.be/hn-fjiXQsN0?list=PLQIrJ0f9gMcOeqlB09PdBddfXLv2QjG-F
スライドのpdf
https://drive.google.com/file/d/12eP76GpUAdXJQzKHvVfcCBolwb-ZCDJn/view?usp=sharing
関連blog 「あのころみんな若かった」https://maruyama097.blogspot.com/2022/07/blog-post.html
参考資料
Dijkstra, E.W. Solution of a problem in concurrent programming control.
Commun. ACM 8, 9 (September 1965), 569.
http://rust-class.org/static/classes/class19/dijkstra.pdf
セミナーのまとめページ
https://www.marulabo.net/docs/concurrent/
セミナー告知・申込ページ
https://concurrent.peatix.com/view
-------------------------------------------
コメント
コメントを投稿