Naming and the Environment

- 프로그래밍 언어에 있어서 객체(computational objects)에 이름을 붙이는 것은 매우 중요합니다.

- 이 "이름"을 우리는 변수(variable)라고 부르며 해당 객체를 값(value)이라고 합니다. 

- Scheme에서 변수를 선언하고자 할때 define 을 사용합니다.

(define size 2)

- 이 경우 2라는 값이 size라는 이름으로 정의되며(associate the value 2 with the name size)

- size라는 이름으로 2라는 값을 표현할 수 있습니다.

(define size   3)
(define shape  (* size size))
(define volume (* size shape))
volume

- 이 경우 volume은 27이 됩니다.

 

Define and Abstraction

- 정의(Define)는 추상화(Abstraction)를 위한 가장 간단한 방법(simplest means) 중 하나입니다.

- 일반적인 경우 객체는 매우 복잡한 구조로 되어 있으며 세부사항(detail)을 매번 일일이 기억하여 사용하는것은 매우 불편합니다.

- 복잡한 프로그램은 단계 별로(step-by-step), 복잡도를 점차 상승시켜가며 만들어집니다. 

- Scheme 인터프리터는 연속적으로 이름-객체간의 연관(name-object associations)을 통해 이러한 과정을 편리하게 만들어주며, 점진적 개발과 테스트(Incremental Development and Testing)을 가능하게 합니다. (Encourage)

- 즉, 복잡한 객체(object)에 이름(name)을 붙여줌으로써 세부적인 디테일을 알 필요 없이 사용이 가능하게끔 추상화(abstract) 하는 것입니다. 

- 이렇게 추상화된 객체들의 정보(name-object pairs)는 메모리와 같은 곳에 보관 및 유지되어야 하는데 이러한 메모리를 환경(environment)- 여기서 말하는 환경은 더 정확히 전역 환경(global environment)- 이라고 부릅니다.