Hatena::ブログ(Diary)

TAKUYA’s FLIGHT RECORDER RSSフィード

2006/01/18 (Wed)

「やさしいコンピュータ科学」その1

|

「MITの教科書」という副題がつけられている、

やさしいコンピュータ科学 (Ascii books)

やさしいコンピュータ科学 (Ascii books)

という本の前半部分を読み終えたので、

ひとまず教訓を書き残しておく。


最近、

コンピュータがなぜ動くのか」

「大学のようなところでは、

こういう分野のことを、どのようにに教えているのか」

ということに興味が沸いていて、

それにぴったりの本を見つけたので、

今、読んでいるところである。

前者の疑問については、

コンピュータが、

電気的な「オンとオフ」を「ゼロとイチ」を使って表現している、

というところまでは、

感覚的にわかるような気がするけど、

その電気的なものが、

なんで計算や入出力動作につなげられるのか、

なんてことは、感覚的にもつかめず、

不思議に思えてならないでいる。

後者については、

大学では文系だった自分だけど、

今、ちょっとずつ勉強している分野のことを、

体系的に学ぶとしたら、どんな感じになるのか、

ということに対して、ちょっとした関心があった。


そんな想いを持ちながら読み進めている訳だけど、

この本の前半部分の最後には、

とても興味深い文章があった。

 コンピュータが出始めのころ、コンピュータ言語の能力に関しておもしろい競争が起こった。自分の開発した言語はほかの言語で可能などんな関数でも計算できる、とある研究者が自慢すると、別の研究者が、自分の言語も前者の言語でできるすべてのものを計算できるという。つまり、どの言語も、ほかの言語以上のことは何もできないという意味である。両方とも、同じクラスの関数しか計算できないのである。このような比較は何度も繰り返され、そのたびに同じ驚くべき結論に至った。ある人が発明できるコンピュータ言語は、それが単純でなければ、それが計算できる関数の数はほかのどんな単純でないプログラム言語より多くもなく少なくもない。これを、「チャーチ-マルコフ-チューリングの命題」といい、本書のPascalについて述べた部分にあてはまる。読者は、これから発明される言語でプログラムされるいかなる関数でも計算するのに必要ないろいろな計算機能を学んだのである。機能が増えると便利になるだろうが、計算能力自体が増すわけではない。

 (中略)つまり、「チャーチ-マルコフ-チューリングの命題」を拡大解釈すると、誰もが具体的な英語で(または、ほかのどの自然言語でも)記述できる計算なら、現代のどのプログラム言語でも計算でき、本書で使用しているPascalも例外ではない。ほとんどのコンピュータ科学者が認めているこの命題は、現代のプログラム言語のある種の完全さをほのめかしている。自然言語で処理が記述できれば、それをプログラムできるというのである。現代のコンピュータ言語は十分に強力である。想像もつかないような新しいパラダイムが考案されないかぎり、どんな新しい言語でも、いま以上の関数を計算できないであろう。

この本が出たのは十数年も前のことらしく、

そのことからも、基本的なことがいかに大切なことか、

ということを教られる文章だった。

後半部分では、

コンピュータの内部がどのように動いているのか、

ということが取り上げられているっぽいから、

引き続き、興味深く読み進めていきたい。