[프로그래밍언어론] 변수와 바인딩
변수
- 프로그램에서 처리할 데이터를 저장, 관리할 수 있도록 메모리를 추상화한 것
변수의 속성
- 변수명
- 변수의 이름, 식별자
- 변수의 이름, 식별자
- 타입
- 변수에 저장할 수 있는 데이터 집합의 종류, 자료형
- 변수에 저장할 수 있는 데이터 집합의 종류, 자료형
- 주소
- 변수가 사용하는 메모리의 위치
- 변수가 사용하는 메모리의 위치
- 값
- 변수에 저장된 데이터
- 수행시간 동안 변경될 수 있음
- 변수에 저장된 데이터
바인딩
- 언어 구성 요소의 속성이 구체적으로 결정되는 것
바인딩이 일어나는 시점
- 언어 정의 시점
- 연산지의 의미, 수의 의미 등
- 연산지의 의미, 수의 의미 등
-
언어 구현 시점
타입의 자릿수, 수의 표기법 등 -
컴파일 시점
변수의 타입 등 - 링크 시점
- 라이브러리 함수의 내용 등
- 라이브러리 함수의 내용 등
- 로드 시점
- 변수의 주소 등
- 변수의 주소 등
- 프로그램 수행 시점
변수의 값 등
바인딩 시각의 구분
- 정적 바인딩
- 프로그램 수행 시점에 바인딩의 변화가 없는 경우
- 언어 정의시점, 언어 구현 시점, 컴파일 시점, 링크 시점, 로드 시점의 바인딩을 포함
- 컴파일 방법에 적합
- 프로그램 수행 시점에 바인딩의 변화가 없는 경우
- 동적 바인딩
- 프로그램 수행 시점에 바인딩의 변화가 있는 경우
- 실제 바인딩 시각이 프로그램 수행 시점인 경우
- 유연한 프로그래밍이 가능
- 인터프리터 방법에 적합
- 프로그램 수행 시점에 바인딩의 변화가 있는 경우
변수의 바인딩
- 변수의 속성이 구체적으로 결정되는 것
- 프로그램 수행 중에 변수가 사용되기 위해서는 변수의 속성이 바인딩되어야 함
바인딩 방법
- 명시적 선언
- 선언문에 명시된 이름으로 변수명을 바인딩
- 선언문에 명시된 이름으로 변수명을 바인딩
- 묵시적 선언
- 선언문 없음
- 대입문 등에 처음 사용된 이름으로 변수명을 바인딩
- 선언문 없음
타입 바인딩
- 명시적 선언 ex) int x;
-
묵시적 선언 ex) k=123;, k=’a’;
- 정적 바인딩
- 컴파일 시점에 구문 분석을 통해 타입을 판당
- 명시적 선언과 묵시적 선언 모두 가능
- 컴파일 시점에 구문 분석을 통해 타입을 판당
- 동적 바인딩
- 변수의 타입을 고정하지 않음
- 대입할 값에 맞추어 계속 변화시킴
- 변수의 타입을 고정하지 않음
주소 바인딩
- 변수가 사용할 메모리가 할당되어 변수의 주소가 그 메모리의 주소로 바인딩되는 것
- 할당 → 가용한 메모리 중 필요한 만큼의 공간을 변수에 배정하는 것
- 해제 → 할당된 메모리를 변수로부터 회수하는 것
- 할당 → 가용한 메모리 중 필요한 만큼의 공간을 변수에 배정하는 것
- 변수의 수
- 변수가 메모리를 할당받고 있는 기간
- 변수가 메모리를 할당받고 있는 기간
- 자동 할당 ex) int x; double y;
-
수동 할당 : 프로그래머가 지정한 크기만큼의 메모리를 할당
- 정적 바인딩
- 로드 시점에 정적 세그먼트의 주소를 바인딩
- 로드 시점에 정적 세그먼트의 주소를 바인딩
- 동적 바인딩
- 프로그램 수행 중 변수가 사용되는 시점에 동적 세그먼트의 주소를 바인딩
- 프로그램 수행 중 변수가 사용되는 시점에 동적 세그먼트의 주소를 바인딩