Goto 문: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
편집 요약 없음
7번째 줄:
 
== 비판 ==
고급 언어에서 goto 문은 비판의 대상이 되어 왔는데, goto 문이 과도하게 사용되면 읽고 유지하기 힘든 [[스파게티 코드]]가 나오기 쉽기 때문이다. [[구조적 프로그래밍]]은 [[1960년대]]와 [[1970년대]]에 더 두드러졌는데, 많은 [[컴퓨터 과학자]]들의 결론은 프로그램이 항상 goto 문 대신 일명 ‘구조적’인 흐름 제어문([[순환문]], if-then-else문)을 사용해야 한다는 것이다. 그러나 goto 문의 사용이 종종 나쁜 습관이긴 하지만, 많은 프로그래밍 언어에서 goto 문을 사용하지 않고는 간단히 되지 않는 경우(중첩 순환문을 빠져나갈 때나 [[예외 처리]]할 때)가 있다고 주장하는 사람들이 있다.음..
 
goto 문에 대한 한 가지 유명한 비판은 [[1968년]]에 [[에츠허르 데이크스트라]]의 'goto 문의 해로움'<ref>{{언어고리|en}} [[에츠허르 데이크스트라]]: [http://www.acm.org/classics/oct95/ Go To Statement Considered Harmful]. ''Communications of the ACM'' '''11''':3 (1968), 147–148.</ref>이라는 서신이다. 이 서신에서 데이크스트라는 더 높은 수준의 언어에서는 goto 문을 제한하지 않으면 안된다고 했는데, 이것은 프로그램의 정확성을 분석하고 증명하는 것을(특히 순환문을 포함해서) 어렵게 하기 때문이라고 했다. [[도널드 크누스]]의 'goto 문을 사용한 구조적 프로그래밍'<ref>{{언어고리|en}} [[도널드 크누스]]: [http://pplab.snu.ac.kr/courses/adv_pl04/papers/p261-knuth.pdf Structured Programming with Goto Statements]. ''Computing Surveys'' '''6''':4 (1974), 261–301.<!-- This link probably violated copyright --></ref>에서는 goto의 적절한 위치를 고찰한다. 일반적으로 이것들은 특정 프로그래밍 구조가 없기 때문이다. 이런 경우들에서 goto 문은 항상 원하는 구조를 에뮬레이트 할 수 있고, 따라서 이것이 프로그래밍의 기본적인 요소의 하나라는 것이다. 다른 해법은 [[매크로 (컴퓨터 과학)|매크로]]를 이용하여 원하는 제어 구조를 만드는 것이다.([[리스프]]와 그 변종이나 [[포스 프로그래밍 언어|포스]]에서는 이렇게 해서 대부분의 일을 할 수 있다.)