프로그래밍 언어론 6-3강. 시퀀싱(Sequencing)

[프로그래밍 언어론]

2019. 11. 23. 18:04

 

[시퀀싱(연속적인 사건들)]

: 각각의 다른 statement들을 모아 일련된 하나의 무언가로 만드는 것(덩어리)

: 시퀀싱인 명령형 프로그래밍에서 매우 중요하다.

: side effect들의 발생(할당) 순서를 통제하는 주요 수단이다.

 

- 대부분의 명령형 언어들에서, statement들의 목록들은 begin..end 나 {...} 를 이용해 둘러 쌓을수 있고, 이를 단일 statement가 들어가는 자리에 사용할 수 있다.

  = Compound statement ( 상태들의 덩어리 )

 

 

 

[특정 종류의 side effect에 대한 논쟁]

: 명령형 언어들에서, 특정 종류의 side effect들에 대해서 논쟁이 존재한다.

 

# Euclid, Turing : 이 언어들에선 function들은 side effect하는 것을 허용하지 않는다.

  : 이와 같은 수학적 취급 언어에서는 side-effect가 일어나지 않는다

  : 만약 같은 인자들로 반복적으로 호출시, 항상 같은 값 return 한다.

  : 연이은 호출들이 이후의 실행의 결과에 영향을 끼치지 않는다.

 

# 함수내 side-effect에 매우 의존적인 상황 예시

void func(char* s) {

  static short int n;

  sprint(s, "L%d\n", ++n);    // 이 함수 실행할때마다 n값 바뀐다.

}

 

# 함수에서 인자를 받아 내부적으로 수정해 외부에 제공 예시 (생략)