D. E. Knuth : The Art of Computer Programming Volume 1 Fundamental Algorithms

作成日: 2011-06-11
最終更新日:

いわゆる名著

Knuth は、コンピュータ科学の第一人者である。日本ではクヌースと発音されるが、 カヌースが原音に近いようである。ともかく、Knuth の著書として最も有名なのが The Art of Computer Programming と題された一連の事典である。 私が持っているのはすべて原著である。邦訳本が高かったからである。 しかも第 1 巻はペーパーバック版(第2版)である。

コルーチンを調べて

ペーパーバックだからだろうか、印刷が不鮮明なところがある。 その中に、コルーチンに関する箇所がある。 1995 年ごろ、必要があってコルーチンの概念や書き方を調べていたことがあったが、 この本に載っていたとは思わなかった。当時も持っていたはずなのに。 改めて、原著 p.190 を拙訳により紹介する。

サブルーチンはプログラム部品の特別な形であり、一般化したものはコルーチンと呼ばれる。 サブルーチンは、メインルーチンとの間に非対称な関係がある一方、 コルーチンは完全な対称性がある。 これは、相手を互いに呼び出すという意味である。

コルーチンの考え方を理解するために、サブルーチンについて別の角度から考察しよう。 サブルーチンとは単にコンピュータのハードウェアの拡張という視点であり、 コード行を減らすために導入されたものである。 この見方は正しいかもしれないが、別の見方もできる。 すなわち、メインプログラムとサブルーチンは、プログラムのチームとして考慮できるという見方である。 チームのメンバーは、自分のすべき仕事を実行し、メインプログラムを起動する。 こういった想像を広げれば、 サブルーチンの観点からみると、脱出とはサブルーチンがメインルーチンを呼び出す、 ということである。メインルーチンを義務を果たして、サブルーチンに「脱出する」。 サブルーチンは同様に動作し、再度メインルーチンを呼ぶ。

なるほど、こうだったのか。共同で、というのがみそなのだな。 さて、1995 年当時、コルーチンを知らなかった私は、C 言語でコルーチンを実現すべく一生懸命文献を調べた。 最終的に採用したのはコルーチンではなくマルチスレッドだった。 マルチスレッドはコルーチンの上位概念にあたると考えられたからだ。 そこで、コルーチンはおしまいになっていた。

コルーチンの例題

コルーチンの例として、Knuth は次のように書き出している。

In order to study coroutines in action, let us consider a "contrived" example.

この contrived という語をどう解釈すればいいのだろう。 初めてみる単語である。そのあとの例を参照するに「人為的な」「作為的な」 という程度の意味と想像した。辞書を引くと「人工的な」「わざとらしい」という訳語があり、 まあ、当たらずとも遠からず、というところか。

書 名The Art of Computer Programming 2nd. Edtion, Volume 1 Fundamanetal Algorithms
著 者Donald E. Knuth
発行日
発行元Addison-Wesley Publishing
定 価???円(本体)
サイズ???版
ISBN
備考World Student Series Edition

まりんきょ学問所読んだ本の記録 > D. E. Knuth : The Art of Computer Programming Volume 1 Fundamental Algorithms


MARUYAMA Satosi