前のエントリーの続きのようなもの。
世の中には、無限に走行してサービスを提供し続けるタイプのプログラムがありますよね(リアクティブシステムとか呼ぶらしい)。例えば:
/* 門番さんのお仕事 */while (true) {
while (客が来ている) {
門を(それが閉じていれば)開けて客を1人通す;
}
門が開いていれば閉じる;
10秒休む;
}
これがオモチャの例だとか、ひどい擬似コードとかだってハナシは置いといて、上のような記述は「アルゴリズム」と呼んじゃいけないのでしょうか。停止性の(暗黙または明示的)保証が必要なら、アルゴリズムのはずはありません。だって、これは停止しません、むしろ、停止したらマズイのですから。
リアクティブシステムは分野が違うから、「アルゴリズム」の解釈も変わるんだ、てな所に落ち着くような気がしますが、そうなると結局、「分野/集団/文化圏ごとに解釈いろいろ人生いろいろ」って、ほぼ反論不可能な結論になってしまうなぁ。
前のエントリーでは「アンケートをとる気もありません」と書いたけど、ちょっと興味が出てきた。「アルゴリズム」って何でしょうか、停止しないといけないのでしょうか。ご意見聞かせてください。