
에츠허르 비버 데이크스트라
초기 문제 : 프로그래밍은 어렵고 프로그래머는 잘 하지 못한다.
⇒ 증명(proof)라는 수학적원리를 적용하여 해결하고자 함.
→ goto 문장이 모듈을 더 작은 단위로 재귀적으로 분해하는 과정에 방해가 되는 경우가 있다는 것을 발견
모듈을 분해 할 수 없다면 분할 정복 접근법 사용 할 수 없게 됨.
반면, goto 사용하더라도 모듈 분해에 문제 X인 경우 if/then/else 와 do/ while/until의 분기와 반복이라는 단순한 제어 구조로 대체
모듈을 증명 가능한 더 작은 다위로 재귀적으로 분해할 수 있게 됨. 즉, 모든 모듈을 기능적으로 분해할 수 있음
유클리드 계층 구조는 만들어지지 X.
과학적 방법은 반증 가능 but 증명 불가
과학은 서술된 내용이 사실임을 증명하는 방식이 아니라 서술이 틀렸음을 증명하는 방식으로 동작.
수학 : 증명 가능한 서술이 참임을 입증하는 원리
과학 : 증명 가능한 서술이 거짓임을 입증하는 원리
“ 테스트는 버그가 있음을 보여줄 뿐, 버그가 없음을 보여줄 수는 없다.”
→ 프로그램이 잘못되었음을 테스트를 통해 증명할 수 있지만 츠로그램이 맞다고 증명 X.
⇒ 소프트웨어 개발은 수학적 구조를 다루는 것 같아도 수학적 시도가 아님.과학임.
소프트웨어는 과학과 같고 따라서 반증가능성에 의해 주도된다.
⇒ 데이크스트라는 유클리드 계층 구조를 만드려고 연구 과정 끝에 과학적 방법이 소프트웨어 개발에서 유용함을 말한다.