네임스페이스 – 05.식별자 관련 용어 정리

임의의 네임스페이스에 생성된 클래스/함수/상수 엘리먼트element는 아래와 같은 형식으로 참조될 수 있습니다.

네임스페이스-식별자\엘리먼트;

아래는 클래스/함수/상수 엘리먼트element가 생성된 서브네임스페이스sub-namespace Debug의 계층 구조를 보여줍니다.

네임스페이스 계층 구조

네임스페이스 엘리먼트(클래스/함수/상수)를 참조할 때, 전역 공간으로부터 시작되는 절대 경로로 지정할 수도 있고, 현재 네임스페이스를 기준으로 시작되는 상대 경로로 지정할 수도 있으며, 현재 네임스페이스에 있는 엘리먼트(클래스/함수/상수)일 경우에는 엘리먼트 이름만으로 지정하여 참조할 수 있습니다.

이러한 네임스페이스 엘리먼트(클래스/함수/상수)를 참조하는 방식은 파일 시스템 또는 DNSDomain Name System와 매우 유사합니다. 이를 이해하기 위하여 파일 시스템과 DNS에서의 참조 방식과 비교하여 살펴보겠습니다.

File System
파일 시스템
DNS
Domain Name System
PHP Namespace
네임스페이스
  • Relative File Name
    파일 이름
  • Host
    호스트 이름
  • Unqualified Name
  • Unprefixed Name
  • Element or Namespaecd Element
    엘리먼트-이름
  • Relative Path Name
    상대 경로 이름
  • Partially Qualified Domain Name(PQDN)
    부분 주소 도메인 이름
    부분 도메인 주소
  • Relative Domain Name
    상대 도메인 이름
  • Qualified Name
  • Prefixed Name
  • Relative Namespace Expression
  • Relative Name*
    상대-이름
    상대-네임스페이스-이름
    부분-네임스페이스-이름
  • Absolute Path Name
    절대 경로 이름
  • Fully Qualified Domain Name(FQDN)
    전체 주소 도메인 이름
    전체 도메인 주소
  • Absolute Domain Name
    절대 도메인 이름
  • Fully Qualified Name
  • Prefixed Name with global prefix operator
  • Absolute Namespace Expression
    절대-이름
    절대-네임스페이스-이름
    전체-네임스페이스-이름

* PHP 매뉴얼의 네임스페이스 항목에서 Relative Name이라는 용어를 공식적으로 사용하고 있으며, 그 의미는 namespace\Foo\Bar와 같이 namespace 키워드로 시작되는 상대 경로로 지정된 식별자identifier를 의미합니다.

파일 시스템의 파일 참조

파일 시스템의 파일에 접근하는 방식에는 세 가지가 있습니다.

1. 파일 이름relative file name

foo.txt와 같은 경우, currentdirectory/foo.txt로 처리됩니다. 여기서 currentdirectory는 현재 사용 중인 디렉토리입니다. 따라서 현재 디렉토리가 /home/foo이면 이름은 /home/foo/foo.txt로 처리됩니다.

2. 상대 경로 이름relative path name

subdirectory/foo.txt와 같은 경우, currentdirectory/subdirectory/foo.txt로 처리됩니다.

3. 절대 경로 이름absolute path name

/main/foo.txt와 같이 슬래시slash로 시작된 절대 경로인 경우, 지정된 문자대로 /main/foo.txt로 처리됩니다.

네임스페이스 식별자 관련 용어 정리

이하 지극히 개인적인 사견입니다^^

 

qualified라는 용어는 무척이나 흔한 용어인데 이 용어만큼 다양하게 우리말로 번역되는 용어도 흔치 않을 것입니다.

qualified name의 의미는 순서대로 나열된listed(또는 지정된specified) 파일이나 도메인이나 네임스페이스의 경로를 의미하며, fully qualified name이라고 할 때는 최상위 지점으로부터 시작한 전체 경로를 의미합니다.

흔히 이 용어를 직역하여 부르게 되는 ‘정규화된’ 이라는 용어는 마땅한 다른 우리말 용어를 찾지 못해 사용하고 있는 용어이지 않나 싶기도 합니다.

그러나 우리말의 정규화(正規化)라는 용어는 영어로 normalization이라고 하지 qualification(자격, 단서, 조건)이라고 하지는 않습니다.

위키백과에서 찾아보면 정규화(正規化)의 의미를 잘 설명해주고 있습니다.

정규화 또는 정상화(normalization)는 어떤 대상을 일정한 규칙이나 기준에 따르는 ‘정규적인’ 상태로 바꾸거나, 비정상적인 대상을 정상적으로 되돌리는 과정을 뜻한다. 정규화 및 정상화라는 용어는 여러 분야에서 다음과 같이 사용된다.

  • 정상화 (사회학)
  • 데이터베이스 정규화
  • 일반적으로 대수학에서 정규화는 특이점 또는 불연속점을 지우는 과정이다.
  • 단위 벡터를 얻는 과정
  • 정규화 (통계학)
  • 정칙화(regularization)의 다른 번역
  • 텍스트 정규화
  • 오디오 정규화
  • 범위 정규화
  • 정규화 (통계학)
  • 정규화 (이미지 처리)
  • 정규화 (행렬)
  • 정규화 (데이터)

사실 qualified의 사전적 의미는 ‘①자격 있는 ②제한〔한정〕된’이며, ①의 의미로 영문으로 보면 ‘①having finished a training course, or having particular skills, etc.(교육 과정을 이수했거나 특정 기술 등을 보유한)’ 정도로 설명하고 있습니다.

quaified는 그 주체의 자격, 조건 등을 갖춘 상태를 나타내는 것이지 그 조건에 도달하기 위한 과정의 의미가 내포되어 있지 않습니다.

반면 우리말 ‘정규화된’에서 ‘정규화’는 그 자체가 어떤 과정을 내포하고 있으며, ‘정규화된’은 어떤 과정에 따라 얻어진 결과의 의미를 가지고 있으므로, ‘정규화된’ 용어에는 결과인 상태보다는 과정에 주안점을 두고 있는 용어입니다.

그래서인지 DNSDomain Name System에서 Fully Qualified Domain Name(FQDN), Partially Qualified Domain Name(PQDN)를 우리말로 표현할 때 ‘정규화된’ 이라는 용어를 잘 사용하지 않고 전체 주소, 부분 주소라는 경로(노드)가 나열된 상태로 표현합니다.

즉 주소의 구성원인 각 노드node(www, phpclass, com)가 순서대로 나열된 상태(www.phpclass.com)를 Qualified Domain Name이라고 합니다.

그래서 이를 의미상으로 절대absolute 주소, 상대relative 주소라는 용어로 국내 뿐만 아니라 영어권에서도 통상적으로 사용합니다.

이러한 현상은 파일시스템에서도 그대로 나타나고 있습니다.

그러나 프로그래밍 쪽으로 눈을 돌리면 qualified가 ‘정규화된’ 이라고 번역된 것을 많이 볼 수 있습니다.

국내 현실을 놓고 볼 때, 본 문서에서 quaified라는 용어를 어떻게 처리해야 하나를 놓고 고민 아닌 고민을 하게 되었습니다. 옳고 그르고를 떠나 국내 프로그래밍 쪽에서 이미 많이 사용하고 있는 ‘정규화된’ 이라는 용어를 그냥 사용하는 것이 욕 먹지 않는 가장 무난한 선택이기는 한데, 선뜻 제 손이 가지 않는 것은 어쩔 수 없습니다.

이러한 이유로 13년 전에 작성된 ‘네임스페이스 5.3a1’ 문서에서도 어색하게 우리말로 쓰지않고 영문으로 표기했던 것인데, 이제 와서 다시 고민하게 됩니다.

‘네임스페이스 5.3a1’ 문서에서처럼 영문 그대로 Unqualified, Qualified, Fully qualified라고 할까도 생각했으나, PHP 매뉴얼을 주의 깊게 읽는 가운데 결국 의미상 용어인 엘리먼트, 상대, 절대라는 용어를 선택하게 되었습니다.

‘엘리먼트’를 ‘요소’라는 용어로 바꿀까도 생각했으나 우리말 ‘상대 주소’, ‘절대 주소’는 그 의미가 매우 명확한 반면에 우리말 ‘요소’라는 용어는 여러가지로 해석될 수 있기에 그냥 발음대로 표기하기로 했습니다.

외래어 표기법에 따르면 element[élǝmǝnt]를 엘러먼트로 하여야 하나 외래어 표기법의 예외규정에서 허용하는 관용에 따라 엘리먼트로 표기하며, 이와 비슷한 용례로 directory[diréktəri, dai-]를 디렉터리라고 하지 않고 관용에 따라 디렉토리라고 표기하겠습니다.

따라서 이 문서에서는 아래와 같이 네임스페이스 식별자와 관련된 용어를 정리하여 사용하고자 합니다.

영문 한글 사용예
  • Unqualified Name
  • Unprefixed Name
  • Element or Namespaecd Element
엘리먼트-이름

  • 클래스-이름
  • 함수-이름
  • 상수-이름
  • (클래스)Foo::Bar
  • (함수)foo
  • (상수)FOO
  • Qualified Name
  • Prefixed Name
  • Relative Namespace Expression
  • Relative Name
상대-이름
상대-네임스페이스-이름
부분-네임스페이스-이름
  • MyProject\Component
  • some\common\Classes
  • foo\bar\math
  • Fully Qualified Name
  • Prefixed Name with global prefix operator
  • Absolute Namespace Expression
절대-이름
절대-네임스페이스-이름
전체-네임스페이스-이름
  • \Foo\Bar\
  • \my\stuff\nested
  • \some\common\Classes
  • Fully Qualified Class Name
절대-클래스-이름
  • \Foo\Bar\foo::staticmethod()
  • Fully Qualified Function Name
절대-함수-이름
  • \Foo\Bar\foo()
  • Fully Qualified Constant Name
절대-상수-이름
  • \Foo\Bar\FOO

특별한 경우가 아니면, 상대-네임스페이스-이름, 부분-네임스페이스-이름대신에 상대-이름으로만, 절대-네임스페이스-이름, 전체-네임스페이스-이름 대신에 절대-이름으로만 표기하며, 반드시 영문 qualified 또는 fully qualified를 병기하겠습니다.

답글 남기기