[바인딩(binding)]
: a name(변수, 함수등)에 the thing it names(코드, 클래스와 같은 실제 값)으로 연결하는 것.
[바인딩 타임(binding time)]
: 이름(name)에 속성이나 값이 결정(연결)되는 시점
[바인딩 타임의 종류]
: 결정되는 시점에 따른 분류
1. 언어 디자인 시점
: 대부분의 언어에서 제어 흐름 구조, 기본 유형 집합, 복잡한 유형을 만드는 데
사용할 수 있는 생성자 및 언어론의 많은 측면들이 언어를 설계할 때 선택된다.
2. 언어 구현 시점
: 대부분의 언어 메뉴얼이 언어 구현자의 재량에 다양한 이슈를 남긴다.
(ex. I/O, 스택과 힙의 최대크기 등)
3. 프로그램 작성 시점
: 알고리즘, 데이터구조, 변수 어떤것을 사용할지 결정(바인딩의 일종)
4. 컴파일 시점(Compile time)
: 메모리에 정적(static)으로 정의된 데이터의 레이아웃, 기계어의 상위 수준의 구성의 매핑을 선택
5. 링크 시점(Link time)
: 코드내에서 사용된 라이브러리 모듈들 링크
6. 로드 시점(load time)
: 운영체제가 프로그램을 실행하려고 메모리로 불러오는 시점
: 가상 주소 결정시점(가상주소와 물리주소 서로 다름 – 물리주소는 실행시점에 변동)
7. 실행 시점(Run time)
: 실행 시작부터 끝까지에 해당되는 전체 영역
: 값을 변수에 바인딩
- 실행 시점 세부 분류
- 프로그램 시작 시점
- 모듈 임장 시점
- 상세 시점(elaboration time) : 함수내 변수가 메모리 공간 하는 시점
[정적(Static), 동적(Dynamic) 조건]
: 바인딩 시점이 실행 시점 이전인지 실행 시점인지에 따라 구분된다.
- 컴파일러 기반 언어가 인터프리터 기반 언어보다 더 효율적인 이유
: 컴파일러 기반언어가 바인딩에 대한 결정 일찍 내리기 때문 (= static binding이 좀더 많다)
: 순수한 인터프리터는 프로그램 실행할때마다 바인딩 결정(+실행시점)
- 빠른 바인딩 시점(대부분의 컴파일 언어) => 높은 효율성
- 느린 바인딩 시점(대부분의 인터프리트 언어) => 높은 유연성
몇몇 언어는 언어의 유연성또는 표현력 증가를 위해 그들언어의 근본적인 토대가 실행 시점까지 연기될 필요가 있어 컴파일하기 어렵다.
대부분의 스크립팅 언어는 모든 타입 검사를 실행 시점까지 미룬다.
이렇게까지해서 다형성(polymorphism)을 얻을 수 있다.
[다형성(polymorphism)]
: 프로그래머가 유연하고 범용 목적 코드를 쓸수 있도록 해준다.
: 프로그램 언어의 각 요소들이 다양한 자료형에 속하는 것이 허가되는 성질
'[프로그래밍 언어론]' 카테고리의 다른 글
프로그래밍 언어론 3-2-1강. 메모리 관리 - 정적 할당(Static Allocation) (0) | 2019.10.26 |
---|---|
프로그래밍 언어론 3-2강. 객체 수명과 메모리 관리 (0) | 2019.10.26 |
프로그래밍 언어론 3강. 추상(Abstraction) (0) | 2019.10.26 |
프로그래밍 언어론 1-6강. 컴파일 과정 Overview (0) | 2019.10.14 |
프로그래밍 언어론 1-4강. Compilation(편집) vs Interpretation(해석) (0) | 2019.10.14 |