# 制御構造
## 定義
制御構造(control structure)とは、プログラム実行時における文や処理の実行順序を決定・統御するプログラミング言語の構成要素である。[[Edsger W. Dijkstra]] は [[@1968__CACM__Go To Statement Considered Harmful]] において、無条件分岐(goto文)を排除し、連接(sequence)、選択(selection: if-then, if-then-else, case)、反復(iteration: while, repeat)、手続き呼び出し(procedure call)という限定された構文要素のみに制御構造を制限することで、テキスト上の静的な構造と実行時の動的プロセスとの概念的間隙を縮小し、プロセスの推移を客観的な指標列(テキスト指標と動的指標)として把握可能にできることを示した。(Source: [[@1968__CACM__Go To Statement Considered Harmful]])
## 未解決の問い
- 構造化プログラミングが定めた基本制御構造に対し、例外処理、非同期・並行処理(async/await, コルーチン)、中断・脱出機構(early return, break)などの現代的制御構造は、動的プロセスと静的テキストの対応関係をどのように変容させているか。
- 単一の入口・単一の出口(Single Entry, Single Exit: SESE)の原則は、現代の大規模・フォールトトレラントなシステム設計においてどこまで厳格に維持されるべきか。
## 未編纂の観察
- [[@1968__CACM__Go To Statement Considered Harmful]] は、プログラムの制御構造を「プログラマの作為から独立した座標系を維持できるか否か」という認知工学的・検証論的観点から峻別した。代入の連接、条件節、選択節、反復節、手続き呼び出しはそれぞれプロセスの進行をテキスト指標と動的指標(反復カウント)の混合列として客観的に記述できるのに対し、goto文はこの座標系を破壊するためプロセスの追跡可能性を致命的に損なうと論じられた。
## 関連
- 概念: [[構造化プログラミング]] / [[プログラム理解性]] / [[情報処理システムとしての人間]]
- ソース: [[@1968__CACM__Go To Statement Considered Harmful]]
- エンティティ: [[Edsger W. Dijkstra]]
## 出典
- [[@1968__CACM__Go To Statement Considered Harmful]]