第二部 プログラミングパラダイム
§3 パラダイムの概要
- 3つのプログラミングパラダイム
- 構造化プログラミング
- オブジェクト指向プログラミング
- 関数型プログラミング
- パラダイムのやっていること
- プログラミングに規律・制約を課している
§4 構造化プログラミング
- Edsger Wybe Dijkstra
- アルゴリズムの証明
- プログラマーがプログラムを書けていない問題を、数学の証明を適用することでサポートすることを目指した
- goto 文を濫用すると分割統治法が破綻することを発見(うまく使えば破綻しない)
- プログラミングの最小単位である順次/選択/反復という最小セットと同じ構造になるようモジュールにわけることでプログラムが証明可能であると発見した
- 有害宣言
- Go To Statement Considered Harmful.
- 炎上したが10年後には静まった。Dijkstra が勝利した
- 構造化プログラミング
- モジュールを証明可能な単位に再帰的に分割する
- 大きな問題は上位レベルの機能に分割、上位レベルの機能は下位レベルの機能へ無限に分割
- 証明するという目標は達成できなかった
- 科学の証明
- 正しいことは証明できない
- 反証可能性だけがある
- テスト
- ソフトウェア開発は科学の証明と同じ
- 構造化プログラミングではプログラムを分割して、証明可能な小さな機能にする
- 証明可能な小さなプログラムが正しくないことをテストで証明する
- (制限)正しくないことの証明は証明可能なプログラムにしか適用できない/証明不可能なプログラムはいくらテストしても正しいとみなせない
- ソフトウェア開発は科学の証明と同じ
- ソフトウェアアーキテクトはビジネスをテスト可能なサービス/コンポーネント/モジュールに分割するため、構造化プログラミングのような制約を課している