Clean Architecture: Chapter 4. Structured Programming

  • ダイクストラ (Edsger Wybe Dijkstra) が構造化プログラミングを提唱した
  • ダイクストラは、プログラムの正しさを数学的に証明したいと考えた
    • 数学のように、問題を分割統治していくアプローチを適用したい
    • goto文のある種の使い方は、プログラムを階層的にモジュール化できなくすることを発見
    • 証明可能性を保つ「良い」goto文の使い方は、if/then/elsedo/whileにあたる。
  • BöhmとJacopiniの証明:全てのプログラムはsequence, selection, iterationの組み合わせで作れる
    • これらは全て「証明可能」な構造!
  • 実際には、プログラムの正しさの証明群を整備する数学的アプローチは達成されなかった
  • 構造化/分割されたプログラムをテストする、自然科学的なアプローチに至った 1
    • テストは証明ではないので、プログラムの正しさは保証しないが、間違いを見つけるもの

Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)

Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)


  1. プログラムが物理法則などに、テストが実験に対応する。プログラムは、テストで反例が見つからない限りにおいて正しいとみなされる