プログラマの論理

事象

先週の出来事。

私「今日学校行くことになるかもしれん」
母「出るなら洗濯物入れてって」

私の脳内: self.set_hook(BEFORE, 外出, function(){self.洗濯物を入れる()});

私「んー」

〜夜〜

母「なんで洗濯物入れなかったの!」
私「外に出なかったから……」

理不尽だ。 外に出なかった場合の動作は未規定なので実装依存のはずである。

母に味方する主張

最適化で命令を単純化すべきである。 すなわち、条件分岐をなくし、常に一定のタイミングで洗濯物を入れるよう動作すべきである。

私に味方する主張

最適化でパフォーマンスを向上すべきである。 すなわち、可能な場合常に洗濯物を入れないべきである。

教訓

実装依存の挙動は怖い。

追記 (2017-07-05)

このときの「ならば」は実行条件ではなく「指示を出した理由」だ。 外へ出るという予定を聞いたから指示を出しておくという意味。 つまり、指示をした時点で意味を成しているので実行フェイズでは消去して考えるということで矛盾はない。

プログラマの論理 - 何とは言わない天然水飲みたさ https://blog.cardina1.red/2016/09/13/programmers-logic/
書いた

@L16777216@twitter.com, , Twitter
@SaitoAtsushi@twitter.com, , Twitter

なるほど。

参考資料