人気ブログランキング | 話題のタグを見る

モジュール

新しいプログラム言語を学ぶと、必ずひとつか二つはうれしい発見がある。

Perl の場合は、正規表現や連想配列だったし、Rubyは簡単なクラスの作り方や、イテレータだった。この前から勉強し始めた関数言語では、高階関数や、遅延評価だ。

なんでうれしいのかというと、これらはみなモジュールなので、可変なパラメータを設定するだけで、複雑な処理が可能になるのだ。例えば sort など、「並べ替え」というふうに、現実生活のイメージはすぐにわくが、スクラッチからコンピュータにやらせようとすると、かなりの知識と時間を要求されるものだ。

モジュールはみな、共通部分と可変部分をもっている。共通部分をモジュール化してあるため、ユーザは可変部分のみ操作すればそれぞれの用途に使うことができる。プログラム言語の仕様と実装でモジュール化しやすい処理の種類が変わってくるが、いずれにしても共通部分と可変部分があるのは共通している。

しかし、このモジュールの性質は何もプログラミングに限ったことではないのだ。知識を習得するということはある意味モジュールの共通部分を理解して可変部分を操作できるようになるということと同義になる。

思考法がどうのこうのといっても、結局共通部分のパターンと可変部分のパラメータを見抜いて知識を利用できるようにするだけのことのではないのだろうか。

ものを考えるときに、共通な部分は何か、また、共通性を保ちながら違っている部分はなにか。可変部分の変化でどのような多様性が見られるのか、また、共通部分の縛りでどのような制限ができてくるのかなどと、共通部分と可変部分の相互作用のようなものを考えていくと角度のちがった見方や新しい発見ができるような気がする。
by tnomura9 | 2008-01-28 11:39 | 考えるということ | Comments(0)
<< 再帰 高階関数 >>