바인딩 (프로그래밍)
IT위키
더 많은 작업
바인딩(Binding)은 프로그램의 이름(변수·함수·연산자 등)에 자료형, 값, 기억 장소, 의미 같은 속성이 정해져 묶이는 것이며, 그것이 정해지는 시점을 바인딩 시간(Binding Time)이라 한다.
변수 하나만 봐도 이름, 자료형, 주소, 값이라는 여러 속성을 가진다. 이 속성들은 한꺼번에 정해지지 않는다. 연산자 * 가 곱셈이라는 것은 언어를 설계할 때, int 가 몇 바이트인지는 컴파일러를 만들 때, 변수 x 의 자료형은 프로그램을 번역할 때, 그 값은 실행할 때 정해진다. 어느 속성이 언제 정해지는지가 언어의 성격(효율과 유연성)을 가른다.
| 바인딩 시간 | 정해지는 것의 예 |
|---|---|
| 언어 정의 시간(Language Definition Time) | 쓸 수 있는 자료형의 종류, 연산자 기호(* 는 곱셈)의 뜻, 예약어
|
| 언어 구현 시간(Language Implementation Time) | int 의 크기와 표현 범위, 실수의 표현 방식처럼 컴파일러·하드웨어에 따라 달라지는 것
|
| 번역 시간(Translation Time, 컴파일 시간) | 변수의 자료형, 변수 이름과 선언의 연결, 정적 변수의 상대 위치 |
| 링크 시간(Link Time) | 다른 모듈에 있는 함수·전역 변수의 위치 |
| 적재 시간(Load Time) | 정적·전역 변수의 실제 메모리 주소 |
| 실행 시간(Execution Time, Run Time) | 변수의 값, 지역 변수의 기억 장소(함수 호출 때 스택에 잡힘), 동적 할당 메모리 |
- C·자바처럼 선언으로 자료형을 정하는 정적 타입 언어에서 변수의 형은 번역 시간에 결정된다
- 파이썬·자바스크립트 같은 동적 타입 언어는 변수의 형이 실행 시간에 값에 따라 정해진다
- 정적 바인딩이 일어나는 시간은 실행 전의 언어 정의·언어 구현·번역·링크·적재 시간이다. 프로그램을 실행하면서 함수를 부르는 프로그램 호출 시간은 실행 시간에 속하므로 정적 바인딩 시간이 아니다