「処理と手続きが混同される一つの理由は、ほとんどの一般的な言語(Ada, Pascal, C)の実装がすべての再帰手続きを手続き呼び出しの量だけメモリを消費するように設計されている空である。たとえ、その手続きが原理的に繰り返しであったとしても。その結果、これらの言語はdo,while,forなどの助けを借りてでしか繰り返し手続きを表現できない。」
SICPより(一部省略)。
再帰呼び出しを行う関数が、必ずしも再帰手続きではないということだ。つまり、再帰呼び出しをしても、たくさんのメモリを使わずに済む場合があり、それは繰り返し手続きとなる。
やっぱり、Cとかそういうものでプログラムを学ぶとこういったことに気づくことができない。それがすべてだと思ってしまう。文字列がNULLで終わるものだと思っているという類の、もうちょっとコンピュータの原理に近い部分の話の気がする。
つまりCなどの実装に影響を受けすぎて、それがコンピュータの動作だと思ってしまう。
こういうことを理解しておくことは重要だ。
My Daily Programming Life...
0 コメント:
Post a Comment