본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

바인딩(Binding)은 프로그램의 이름(변수·함수·연산자 등)에 자료형, 값, 기억 장소, 의미 같은 속성이 정해져 묶이는 것이며, 그것이 정해지는 시점을 바인딩 시간(Binding Time)이라 한다.

변수 하나만 봐도 이름, 자료형, 주소, 값이라는 여러 속성을 가진다. 이 속성들은 한꺼번에 정해지지 않는다. 연산자 * 가 곱셈이라는 것은 언어를 설계할 때, int 가 몇 바이트인지는 컴파일러를 만들 때, 변수 x 의 자료형은 프로그램을 번역할 때, 그 값은 실행할 때 정해진다. 어느 속성이 언제 정해지는지가 언어의 성격(효율과 유연성)을 가른다.

바인딩 시간 정해지는 것의 예
언어 정의 시간(Language Definition Time) 쓸 수 있는 자료형의 종류, 연산자 기호(* 는 곱셈)의 뜻, 예약어
언어 구현 시간(Language Implementation Time) int 의 크기와 표현 범위, 실수의 표현 방식처럼 컴파일러·하드웨어에 따라 달라지는 것
번역 시간(Translation Time, 컴파일 시간) 변수의 자료형, 변수 이름과 선언의 연결, 정적 변수의 상대 위치
링크 시간(Link Time) 다른 모듈에 있는 함수·전역 변수의 위치
적재 시간(Load Time) 정적·전역 변수의 실제 메모리 주소
실행 시간(Execution Time, Run Time) 변수의 값, 지역 변수의 기억 장소(함수 호출 때 스택에 잡힘), 동적 할당 메모리
  • C·자바처럼 선언으로 자료형을 정하는 정적 타입 언어에서 변수의 형은 번역 시간에 결정된다
  • 파이썬·자바스크립트 같은 동적 타입 언어는 변수의 형이 실행 시간에 값에 따라 정해진다
  • 정적 바인딩이 일어나는 시간은 실행 전의 언어 정의·언어 구현·번역·링크·적재 시간이다. 프로그램을 실행하면서 함수를 부르는 프로그램 호출 시간은 실행 시간에 속하므로 정적 바인딩 시간이 아니다

정적 바인딩과 동적 바인딩

편집 원본 편집
구분 정적 바인딩(Static Binding, 이른 바인딩) 동적 바인딩(Dynamic Binding, 늦은 바인딩)
시점 실행 전(번역·링크·적재 시간) 실행 중
바뀌는가 실행하는 동안 바뀌지 않는다 실행 중에 바뀔 수 있다
장점 실행이 빠르고 오류를 미리 잡는다 유연하다
예 정적 타입 변수의 형, 오버로딩 된 함수의 선택 동적 타입 변수의 형, 오버라이딩 된 메서드의 호출(다형성)