[goto statement]
: 어셈블리 언어에서 조작흐름은 조건문과 무조건적인 jump를 이용해 분기문의 역할을 수행한다.
# 초기 Fortran의 goto문을 이용한 조작 흐름 예시
if (A .lt. B) goto 10 ... 10 |
: 매우 goto문 의존적이다.
[goto문의 역사]
: 1960년말, 언어 디자이너들이 goto문의 장점과 단점에 대해 논하였다.
: 요즘에는, Ada와 C#에선 제한된 문맥안에서만 goto문 사용을 허용한다.
: Modula (1,2,3), Clu, Eiffel, Java, 그리고 대부분의 스크립팅 언어들은 아예 goto문 허용하지 않는다.
: Fortran 90과 C++는 주로 그들의 이전버전 언어들과의 호환성을 위해서 허용한다 (Java는 이전버전의 goto를 mis-use 키워드로 지정함으로써 해결)
: goto문을 포기한것은 1970년대 유행했던 구조화된 프로그래밍으로 알려진 혁명의 큰 부분을 차지했다.
[구조화된 프로그래밍 방식 주요점]
: 기존의 goto방식의 문제점 해결
: 탑-다운 디자인
: 코드의 모듈화
: 구조화된 타입 ( 레코드, 셋, 포인터, n중 배열 등)
: 서술되는(descriptive) 변수와 constant names
: 광범위한 논평(주석)
[구조화된 프로그래밍 방식에서의 goto문]
: 대부분의 잘 설계된 명령형 알고리즘들이 오직 시퀀싱(sequencing), 선택문(selection) 그리고 반복문(Iteration)으로만 표현된다. (기존 goto 대체방법)
: 또한, 기존의 goto문의 label방식을 대체해, 바운더리를 사용해 문맥적으로 중첩된 구조를 반복할 수 있게 되었다.
: 즉, 기존의 goto문으로 해결했던 방식들을 전부 대체할 수 있게 되었다.
+) 현대의 프로그래머들에게 친숙한 구조화된 제어 흐름의 대부분은 Algol 60 에 의해 개척되었다.
(if..then..else 구조 / for, while / switch 문 등)
'[프로그래밍 언어론]' 카테고리의 다른 글
프로그래밍 언어론 6-3강. 시퀀싱(Sequencing) (0) | 2019.11.23 |
---|---|
프로그래밍 언어론 6-2-1강. goto문의 구조적 대안(Structured Alternatives to goto) (0) | 2019.11.22 |
프로그래밍 언어론 6-1-5강. 단락 평가(Short-Circuit Evaluation) (0) | 2019.11.21 |
프로그래밍 언어론 6-1-4강. 표현식 내의 순서(Ordering within Expressions) (0) | 2019.11.18 |
프로그래밍 언어론 6-1-3강(4). 생성자 초기화 (Constructors) (0) | 2019.11.15 |