많은 프로그램 언어에서, 변수는 사용되기 전에 선언되어야 한다.

선언이란, "난 이것을 사용하겠어!"라고 선언하는 과정이다. 왜 선언을 해야 할까?

변수를 선언하는 이유는 변수를 어떤 방법으로 사용할 것인지 컴퓨터에게 알려주는 과정이기 때문이다. 컴퓨터의 메모리 공간에 기록되어 있는 숫자들은 각각 어떤 의미를 갖고 있는데, 그게 어떤 의미인지 알려주지 않으면 컴퓨터는 그 숫자를 읽어도 처리할 수가 없다. 그 의미를 알려주는 것이 선언이다. 이게 변수인지 프로그램인지, 이게 2바이트 기준인지 4바이트 기준인지, 이게 한번 쓰고 버릴 건지 계속 사용할 건지, 이걸 혼자 쓸건지 같이 쓸건지 등등을 알려줘야 한다.

만약, 변수가 1가지 종류(type)만 있었다면 선언이 필요 없을지도 모른다. 가령, 2바이트 부호있는 정수형 변수만 사용된다면, 선언을 하지 않아도 괜찮을 수 있다. 물론 그런 경우에도 변수의 다른 특징들을 컴퓨터에게 알려주려면 선언을 해야 할 수도 있다.

물론 선언하지 않아도 되는 프로그램 언어도 있다. 그런 경우에는, 변수가 처음 사용되는 시점에서 그 변수에 대입되는 값이 뭔지 따져서 변수의 종류와 처리방법을 결정하는 언어도 있다. 편리하기는 하지만 그런 언어는 쓰다보면 헷갈리는 부분도 있어서, 개인적으로는 별로 좋아하지 않는다. (쓰라면 쓰겠지만. -_-;)

변수를 사용하기 전에 선언하는 이유는 컴파일러의 처리 방식때문이다. 컴파일러는 앞에서부터 읽어가면서 기계어로 번역을 하는데, 변수가 어떻게 사용하는건지 모르고서 쓰라고 하면 짜증내면서 컴파일을 관둔다. [각주:1] 물론, 뒤에 선언이 되어 있더라도 컴파일러의 처리 방식에 따라서 프로그램을 두번 읽어서 번역할 수 있는 것들도 있다. 이건 편하긴 한데, 두번 읽어야 하니까 당연히 컴파일 시간이 거의 두배 걸린다.


  1. 이건 사람의 언어를 읽을 때도 대명사가 나왔을 때 앞에 나온 어떤 명사를 지칭하는 것인지 알 수 없으면 글이 도저히 읽혀지지 않는 것과 같다. [본문으로]
by snowall 2010. 10. 8. 09:28