누구나 편집자에게 보낸 Dijkstra의 편지를 알고 있습니다 : 유해한 것으로 간주되는 진술 ( 여기서는 .html 스크립트 및 .pdf)로 이동 하십시오 . goto를 사용하여 유지 관리 할 수없는 거대한 코드를 생성 할 수는 있지만 최신 프로그래밍 언어로 유지 됩니다 . Scheme 의 고급 연속 제어 구조 조차도 정교한 goto로 설명 할 수 있습니다.
어떤 상황에서 goto를 사용해야합니까? 언제 피하는 것이 가장 좋습니까?
후속 질문 : C는 setjmp와 longjmp의 한 쌍의 함수를 제공하여 현재 스택 프레임뿐만 아니라 호출 프레임 내에서도 이동할 수 있습니다. 이것들은 goto만큼 위험한 것으로 간주되어야합니까? 더 위험한?
Dijkstra는 자신이 책임을지지 않은 제목을 후회했습니다. 의 끝에서 EWD1308 (또한 여기 .PDF) 그가 쓴 :
마지막으로 레코드에 대한 짧은 이야기. 1968 년 ACM의 커뮤니케이션은 " 유해한 것으로 간주되는 goto 성명서 "라는 제목으로 내 텍스트를 출판 했다. 제목은 템플릿이되어 내 명성의 초석이되었습니다. "Dijkstra는 유해한 것으로 간주"라는 제목을 포함하여 거의 모든 X에 대해 "X는 유해한 것으로 간주"라는 제목의 모든 기사를 볼 수 있습니다. 그러나 무슨 일이 있었습니까? 제목이 ' 고토 진술에 대한 사례 '인 논문을 제출했습니다 .", 출판 속도를 높이기 위해 편집자는"편집자에게 편지 "로 바뀌었고, 그 과정에서 그는 자신의 발명품에 새로운 제목을 부여했습니다! 편집자는 Niklaus Wirth였습니다.
Dijkstra의 주제와 일치하는이 주제에 대해 잘 알려진 고전 논문은 Donald E. Knuth의 Statements to go with Statements로 구성된 Structured Programming입니다 . 두 가지를 모두 읽으면 상황에 대한 맥락과 비 도움적인 주제에 대한 이해를 회복하는 데 도움이됩니다. 이 백서에서이 사례에 대한 Dijkstra의 의견이보고되었으며 더욱 강력합니다.
Donald E. Knuth : 저는 그러한 견해를 제시함으로써 Dijkstra의 아이디어에 대해 최근에 다음과 같은 글을 썼기 때문에 실제로 동의하지 않는 것은 아니라고 생각합니다. ] 문으로 이동합니다. 내가 프로그래밍의 개념 문제를 규율을 코딩 간단한 형태로, 하나의 속임수에 의해 해결 될 수 있다면 다른 사람이, 그것의 종교를하고 있다는 불편한 느낌이! "
goto
.