2021.10.12
데이크스트라가 초기에 인식한 문제는 프로그래밍은 어렵고, 프로그래머는 프로그래밍은 잘하지 못한다는 사실이었다.
아주 작은 세부사항이라도 간과하면 프로그램이 결국엔 예상 외의 방식으로 실패하곤 하였다.
증명이라는 수학적 원리를 문제를 해결하고자 했고, 기본적인 알고리즘 증명에 대한 기법을 연구하면서 goto 문장의 좋은 사용방식은 if/then/else와 do/while과 같은 분기와 반복이라는 단순한 제어 구조에 해당한다는 사실을 발견했다.
순차, 분기, 반복이라는 세 가지 구조만으로 모든 프로그래밍을 표현할 수 있다는 사실을 발견했고, 모듈을 증명 가능하게하는 구조가 모든 프로그램을 만들 수 있는 제어 구조의 최소 집합과 동일하였다. 구조적 프로그래밍은 이렇게 탄생하였다.
데이크스트라는 테스트는 버그가 있음을 보여줄 뿐, 버그가 없음을 보여줄 수는 없다라고 말하였다.