학습개요
우리는 지금까지 몇 주에 걸쳐 프로그래밍 언어의 구현과 관련된 내용을 알아보았습니다. 오늘부터는 프로그래밍 언어의 구성 요소에 대해 다룰 예정입니다. 그 첫 여정으로 앞으로 두 주에 걸쳐 변수에 대해 알아보겠습니다. 변수는 프로그램의 기본이면서 가장 중요한 개념입니다. 이번 강의에서는 변수의 개념과 변수의 바인딩에 대해서 알아봅니다. 바인딩이라는 용어 자체가 생소하기에 바인딩의 개념을 먼저 알아본 뒤 변수의 속성별로 바인딩에 따른 차이와 특성에 대해 자세히 알아봅니다.
학습목표
- 변수의 개념을 이해하고 변수의 속성을 설명할 수 있다.
- 바인딩의 개념을 이해하고 정적 바인딩과 동적 바인딩의 차이를 설명할 수 있다.
- 변수의 바인딩을 변수의 속성별로 설명할 수 있다.
정리하기
- 변수란 데이터를 저장하거나 나중에 사용할 수 있도록 메모리를 추상화한 것이다.
- 변수의 속성에는 변수명, 타입, 주소, 값이 있다. 변수의 값은 수행시간 동안 바뀔 수 있다.
- 바인딩이란 언어 구성 요소의 속성이 구체적으로 결정되는 것을 의미한다.
- 바인딩 시각이란 언어 구성 요소의 속성이 결정되는 시점을 의미한다. 바인딩 시각은 크게 정적 바인딩과 동적 바인딩으로 구분된다.
- 변수의 바인딩은 변수의 속성이 구체적으로 결정되는 것을 의미한다. 즉, 변수명 바인딩, 타입 바인딩, 주소 방인딩, 값 바인딩이 해당된다.
- 변수의 변수명 바인딩 방법과 타입 바인딩 방법에는 명시적 선언과 묵시적 선언이 있다.
- 변수의 정적 타입 바인딩은 컴파일 시점에 구문 분석을 통해 타입을 판단하고, 동적 타입 바인딩은 수행 시점에 대입할 값에 맞추어 타입을 판단하기에 계속 변할 수 있다.
- 변수의 수명은 변수가 메모리를 할당받고 있는 기간이다.
- 변수의 주소 바인딩 방법에는 자동 할당과 수동 할당이 있다.
- 변수의 정적 주소 바인딩은 로드 시점에 정적 세그먼트의 주소를 바인딩하고, 동적 주소 바인딩은 수행 시점에 동적 세그먼트의 주소를 바인딩한다.
- 정적 주소 바인딩을 하는 변수를 정적 변수, 동적 주소 바인딩을 하는 변수를 동적 변수라고 한다. 동적 변수는 스택 동적 변수와 힙 동적 변수로 나누어진다.