終わりますた

火曜日に発表を行って、終了しますた。最後の最後まで、どうしても組み込みたかった機能を組み込むことができなかったのが残念です。それと、個人的にはあまり満足のいく結果を得ることができませんでした。
今回の課題では、画像処理を再帰的な手続きで解こうとしました。再帰手続きは、基本的には繰り返し手続きと等価です。データをスタックに積むことさえできれば、繰り返し処理で処理することができます。また、ある条件を満たすことができれば、再帰手続きはスタックを用いない反復手続きへと変換することもできます。ですから、繰り返し処理へと変換可能な再帰手続きを、再帰的な回路構成とすることは、ある意味無駄かもしれません。事実、講師として来て頂いた方も、再帰処理は反復処理にて扱うと結論付けたとおっしゃっていました。
しかし、果たして本当に再帰処理を単純に反復処理へと変換しても良いのだろうか。通常の手続きは逐次処理が基本となり、再帰処理も現在のコンテクストのみが実行されます。しかし、現在のコンテクスト以外のスタック上に詰まれたコンテクストが実行可能である場合、これは、再帰処理を並列化できることとなります。そして、本質的に並列動作を行う回路上で、再帰処理を繰り返し的な回路ではなく、再帰的な回路として表現する意味を持つのではないか。
私は、やはり再帰手続きとして表現されるものは、再帰的な回路として表現するべきだと思います。ですから、今回の課題では、再帰的な回路を記述しました。
回路を再帰的に記述した結論ですが、再帰処理に限らず、ストリーム演算を基礎とするような回路を扱う場合、ストリームの繰り返し処理を含む場合は、回路を複数並べたほうが効率が良いということが分かりました。当たり前ですね。
すなわち、コード上で2重ループになっているような箇所の場合、そこは外側のループの回数に対応する個数分だけ回路を記述する、ということです。もちろん例外も多々ありますが、私のコーディング時のくせ、すなわちループ構成時のくせだと、処理の種類によっては結構当てはまると思います。
話がまとまらなくなりそうなのでここら辺で打ち止めにしておきます。