프로그래밍[Univ]/프로그래밍 언어론

[프로그래밍 언어론] Sub-Program 구현 방식 Part 2 Dynamic Language

Cloud Travel 2011. 12. 4. 21:27
동적언어에서 서브프로그램을 구현하는 방법으로는 Deep Access와 Shallow Access가 존재한다.
각각의 방법에 대해서 살펴보도록 하자.

* Deep Access
 - 매번 호출 마다 Dynamic Link를 이용해 구현(Static chain과 비슷한 형태)
   ex) Deep Access Linking ( x , y ) = x번 Activation Record를 찾아간후 y번째를 참조해주세요.
 - Deep Access의 Activation Record의 모습은 Static에서 구현된 Activation Record에서 Static Link가 사라진
   모습이다. 

   

 - 특징 : 각 변수를 참조하기 위해서는 Dynamic Link를 일일이 찾아가야한다.
            Static Language의 static chain과 같이 쫒아가는 횟수가 변수마다 다르므로 Time Critical프로그램에
            좋지 않으며, 더 느리다. 
             >> 이러한 단점을 해결하기 위해서 Shallow Access가 등장한다.

* Shallow Access
 - 단 한번에 변수를 참조하기 위해서 모든 지역 변수들을 중앙 메모리 공간에 저장하고 유지시킨다.
 - 컴파일시에 필요한 만큼의 공간을 확보한 뒤에 실행시 stack 형식으로 쌓아올려, 변수명의 stack에서
    top에 있는 값을 참조한다.