이름을 통해 값을 다룬다
프로그램은 점수나 현재 위치처럼 작업 중에 필요한 정보를 이름으로 다룰 수 있다. 이름을 사용하면 같은 값을 여러 곳에서 표현하고 계산 과정을 명확하게 적을 수 있다. 변수의 이름과 현재 연결된 값은 서로 다른 개념이다.
상자라는 비유의 한계
변수를 값을 담는 상자로 설명하면 대입의 기본 모습을 이해하기 쉽다. 하지만 어떤 언어에서는 이름이 객체를 가리키는 연결로 동작하고 여러 이름이 같은 객체를 가리킬 수 있다. 이름을 바꾸는 일과 객체 내부를 변경하는 일도 다를 수 있다.
범위와 수명
변수의 범위는 이름을 사용할 수 있는 프로그램의 영역이고 수명은 관련 값이나 저장 공간이 존재하는 기간이다. 둘이 언제나 같지는 않다. 함수 밖으로 반환된 값이나 다른 곳에서 참조하는 객체가 함수 실행 뒤에도 남을 수 있다.
메모리와 최적화
소스 코드의 변수 하나가 항상 고정된 메모리 주소 하나에 대응하는 것은 아니다. 컴파일러가 레지스터를 사용하거나 계산을 미리 처리하고 불필요한 저장을 없앨 수 있다. 소스 수준의 의미와 기계 수준의 구현을 구분하면 언어의 동작을 더 정확히 이해할 수 있다.