구조적 프로그래밍: 두 판 사이의 차이
내용 삭제됨 내용 추가됨
잔글 →바깥 고리 |
잔글 →논쟁 |
||
37번째 줄:
=== 논쟁 ===
구조적 프로그래밍의 선구적 실천가(얼리어답터)인 [[플로저]]는 구조적 프로그램 정리에 대한 그의 반응을 이렇게 설명했다.:
[[1967년]], ''[[CACM (전산학)|CACM]]''에 데이크스트라의 "GOTO문의 해로움"([[Go to statement considered harmful]])라는 서한이 실렸다. 이 글에서 그는 뵘과 야코피니의 증명을 인용하면서, [[고급언어]]에서 GOTO 명령을 제거하는 것이 코드의 질을 높일 수 있다고 했다. 이 글은 주로 구조적 프로그래밍 논쟁의 시작점으로 인용된다.
비록 플로저가 언급했듯이 다수의 프로그래머들이 이 정리에 익숙하지 않다고 해도, 이런 프로그래머들을 양성할 가치가 충분히 있을 정도로
(중략)
[[도널드
▲:''…프로그램의 정확성뿐만 아니라 프로그램의 적응성과 관리성까지 내가 신경 쓰고 있다는 것이 더욱 명백해진다…'' <sup>[[#References|1]]</sup>
▲[[도널드 카누스|카누스]]는 프로그램이 입증가능성을 염두에 두고 작성되어야 한다는 원리는 받아들였으나 GOTO문을 없애는 것은 받아들이지 않았고 지금도 받아들이지 않는다. [[1974년]], 그의 논문, "GOTO문이 포함된 구조적 프로그래밍"에서 직접적인 분기를 하여 입증가능성을 희생시키지 않으면서도 더 간결하고 효율적인 코드를 작성할 수 있는 몇 가지 예제를 보였다. 카누스는 좀 더 완화된 구조 제한을 제안했다. 그것은 프로그램의 [[순서도]]를 그린다면 왼쪽에는 아래쪽으로 가는 가지(branches)만, 오른쪽에는 위쪽으로 가는 가지만 그려야하며 그 가지들이 서로 교차하지 않아야 한다는 것이다. [[컴파일러]]와 [[그래프이론]]에 정통해 있는 많은 사람들이 축소 가능한 흐름도(reducible flow graphs)만을 허용해야한다고 이 생각을 옹호했다.
구조적 프로그램 이론가들은 [[1970년대]] [[IBM]]의 연구원 [[할란 밀즈|밀즈]]가 구조적 프로그래밍 이론에 대한 그의 해석을 [[뉴욕타임즈]]의 인덱싱 시스템 개발자들에게 적용한 일이 있은 후에 대부분이 합의를 봤다. 이 계획은 공학적으로 크게 성공하였다. 데이크스트라가 밀즈의 해석이 출판된 것들과 다르다며 비판하였지만, 다른 회사의 관리자들까지도 구조적 프로그래밍의 채택을 지원하기 위하여 밀즈의 해석을 인용했다.
|