네임스페이스

2020년 6월 19일 수정

네임스페이스(Namespace)를 직역하면 이름 공간 정도로 해석할 수 있다. 실제 의미도 이와 비슷한데 같은 이름들이 존재할 경우 이를 분리하는 용도의 개념이다.

사람의 경우로 비유해보자. 사람은 각자 이름을 가지고 있지만 이 이름은 절대 유일하지 않다. 김철수 이철수 등 같은 이름의 사람은 얼마든지 있을 수 있다. 그리고 이름이 같다고 해서 절대로 같은 사람으로 볼 수는 없다.

그렇다면 같은 이름의 사람이라도 이들을 구분하기 위해 몇 가지 그룹으로 나눌 수 있다. 예를 들어 성(Family Name)으로 나눈다거나 직업으로 분류한다거나 사는 곳으로 분류한다거나 등등 다양한 방법으로 나눌 수 있다.

이렇게 그룹을 지은 것을 네임스페이스로 비유할 수 있다.

실제로 프로그래밍에서 쓰이는 네임스페이스 개념 중 대표적인 것은 역시 C++의 namespace 다.

namespace eng {
  char *name = "choel soo";
}
namespace kor {
  char *name = "철수";
}

같은 이름의 변수인 name 이 두 가지 네임스페이스에서 다른 값을 참조하도록 하는 코드다.

하지만 클래싱(Classing)이나 패키지 분리를 통한 네임스페이스 분리도 가능하기 때문에 '동명이인을 가려내기 위한 그룹짓기' 라는 의미로 이해하는 것이 좋을 것 같다.