さて、先の稿
プログラムは圧縮だ
ではメソッドのinに対しoutを返す組み合わせを全て記録して、それを圧縮したものとプログラムは
ブラックボックステストでは同一のものになるというお話でした。
この稿は数学分野への分岐となります。
メソッドは写像だ
先の稿ではinがbyteでoutがbooleanのメソッドを例にしていました。
入力に対し、出力が一意に決まるということは、byteという集合をbooleanという集合に対応づけているということです。
これは、数学で言う写像にあたります。
そして、プログラムは入力のバリエーションよりも出力のバリエーションを増やすことができません。
先のメソッドでは入力256通りが出力2通りになってしまいます。
このことから、メソッドを通れば通るほど情報量は減っていくのです。
状態もまた入力/出力
さて、先のメソッドは状態を持たないものでした。オブジェクト指向でのオブジェクトの状態、
もしくは単にグローバル変数を思い浮かべてもらえばよいのですが、
これらをメソッド内から参照することで、一見して入力より出力のバリエーションが多くできるように思えます。
しかし、これらの情報はまた、入力値なのです。
状態の参照はinであり、状態の変更はoutなのです。
こうして考えた場合に、システムは、そのシステムに流入する情報量のとりうるパターン数よりも
多くの出力パターンをとることができない!
システムは通せば通すほど、入力の集合は写像の写像というように繰り返すに従い、
その集合の大きさを縮めていくのです。
しかし、それでもこれほど多様な出力がされるプログラムを創れるのは、
入力の集合というものが、次元の悪魔によって恐ろしい大きさにされているからなのです。
投稿日時 : 2007年10月22日 14:08