Cogito Ergo Sum.

我思う故に我あり

『1回足す』のが『1回掛ける』になるという…

 先日書いた「多重ループ」の話、僕が何を面白がっているかと言うと、たぶん、掛け算感覚と足し算感覚の接点のように感じたからだろう。

 僕はプログラム的に「行ったり来たり」を実現したかった。このとき僕が感じていたのは、「1足す、1引く」という加法・減法の世界だ。ところが、そこに現われたのは多重ループだった。僕が多重ループに対して持っているイメージは、「次元を増やす」という乗法感覚なのだ。

 プログラミングで「2重ループ」が最もよく出現するのは、2次元画像の処理と、単純なソート(バブルソートだとかセレクションソートだとか)だと思う。2次元画像はまさに2次元だし、単純なソートも(ちょっと違うけど)「リーグ戦の組み合わせ」みたいなものだと考えれば、僕の頭の中には2次元の平面が広がる。ループの入れ子が1段加わるたびに、次元が増えていくような感じがするのだ(配列の添え字を1個増やす感覚とも似ている)。

 それで、加法・減法の「行ったり来たり」を実現しているはずのコードが、「多重ループのどの段からどの段に移るか(次元を一段深くするか浅くするか)」の処理として現われる、ということが、加法・減法の世界と、「もう1回掛けるか、1回割るか」の乗算・除算の世界との不思議なつながりであるように思えたのだ。

 森毅の『指数・対数のはなし』(2006年 東京図書)なんかを読むと、この世界には乗法的な変化というものが満ち溢れているのに、我々の頭はそれを加法的な変化としてとらえるという。そこで、乗法的世界と加法的世界をつなげる指数と対数がどうしても必要になってくる(し、実際に役に立つ)。ふとそんなことを思い出して、不意に目の前に現われた多重ループ構造を自分は面白く思ったのだろう。