ソフトウェア開発で最も時間のかかる作業は、デバッグであると言われています。 よって、バグをいかに出にくくするかで開発効率を改善することができると考えられます。 バグの温床、副作用 バグは主に副作用 (コンピュータの状態の変化) のある所に好んで生息します。 副作用のある処理はその実行する順序が重要となり、処理を記述する順番をきちんと決める必要があります。 そのため、ロジックの組み間違いからバグが発生する可能性があります。 また、予期せぬ場所で予期せぬ値の変更が起こり、それがバグの原因になることもあります。 事実、ロジックの組み違いを減らすために、ソフトウェアの設計をし、個々のコンポーネントの機能を明確、簡潔にし、予期せぬ値の変更を減らすためにカプセル化、といった手法が取り入れられ、今日でも使われています。 Haskell で副作用を分離 バグを出にくくするための機構を持ったプログラミング言