프로그래밍 언어개념: 1개의 글

프로그래밍 언어개념 과제2

Posted by Patchman
2010.02.15 16:05 Univ Study/프로그래밍 언어 개념

C 언어의 Binding Time에 대해서 예기해 보도록 하겠습니다.

작성되는 순서는 바인딩이 가장 먼저 일어나는 순서로 적어 나가도록 하겠습니다.

 

1. Definition Time Binding

언어에 대한 Design의 시기라고 할 수 있으며, Statement의 구조, Control Structure의 구조 등에 대해서 정의하게 됩니다. 예를 든다면, 문자(Char)의 의미(meaning)를 정의하거나 배열 변수의 크기에 대한 정의가 여기서 이루어지게 됩니다.

 

2. Implementation Time Binding

C 언어에 대한 Compiler를 만드는 단계라고 볼 수 있습니다.

각 Type의 유효자리(Integer 의 유효자리), 숫자표현 방식 등에 대한 것이 이곳에서 이루어지게 됩니다.

 

3. Translation Time Binding

번역시간에는 네 가지로 구분할 수 있는데, 첫 번째로 일어나는 것은 프로그래머에 의한 바인딩입니다. 프로그래머는 변수의 형, 문장 구조 등에 대해 많은 결정을 내려야 하게 됩니다. 이때 Program Creation Binding이 발생하게 됩니다. Compile Time에서는 Variable의 상대주소를 갖게 되고, Linkage Edit Time에서는 Sub Program의 상대주소를 얻게 됩니다. 그 다음에 Binding이 Load Time때 발생하는데 C언어에서 함수 밖에서 선언하는 변수 즉, 전역 변수(Global Variable)의 Location을 결정해 주는 Binding이 발생하게 됩니다. 즉 각 부 프로그램을 위해 지정된 메모리 내에서 변수에 주소를 할당하게 되고 실제 주소를 할당하는 작업이 이곳에서 수행 되게 됩니다.

 

4. Execute Binding

실행 시간에서는 크게 두 가지로 나누어지게 되는데 Sub Program(method)에서의 시작시점에서 지역 변수(local variable)의 Location이 결정 되게 됩니다. C언어의 경우 저장 장소에 대한 형식 매개변수와 실제 매개변수의 바인딩은 부 프로그램의 시작에만 일어나도록 되어 있습니다. 이 시기에 Location이 일어나게 되면, 예를 들어 함수에 int Array[i][j]; 라는 문장이 있을 경우 i, j 변수에 할당된 값을 배열의 Size로 가지게 되기 때문에 프로그래머가 필요로 하는 원하는 사이즈의 크기를 배열에 할당할 수 있게 됩니다. 그리고 두 번째는 임의 시점에서의 Binding입니다. 임의 시점에서는 변수의 Value, Type, Location이 일어나게 된다. 배정문을 통해서 변수에 값을 Binding 하는 수행이 있을 수 있겠습니다.

 

C언어에서의 Binding에 대해서 평가해 본다면, 변수의 Location을 Runtime에 하기 때문에 재귀함수(Recursion)의 사용이 가능하고, 또 사용함으로써 코드를 깔끔하게 할 수 있습니다. 하지만 Fortran이나 Cobol과 같은 Load Time에 변수의 Location이 일어나는 언어보다는 효율성이 떨어질 수 있지만 융통성은 더 좋다고 볼 수 있고, LISP, SNOBOL, APL과 같은 Interpreter언어들보다 융통성은 떨어질 수 있지만 효율성면에서는 더 우수하다고 볼 수 있습니다.