네임스페이스

Namespace

컴퓨팅에서 네임스페이스는 다양한 종류의 객체를 식별하고 참조하기 위해 사용되는 기호(이름) 집합입니다.네임스페이스를 사용하면 모든 개체 집합이 고유한 이름을 가지므로 쉽게 식별할 수 있습니다.

네임스페이스는 일반적으로 다른 컨텍스트에서 이름을 재사용할 수 있도록 계층 구조로 구성됩니다.유추적으로, 각자가 주어진 이름을 가지고 있는 사람의 이름 체계와 그들의 친척들과 공유하는 성을 생각해보자.만약 가족 구성원들의 이름이 각 가족 내에서만 고유하다면, 각각의 사람은 이름과 성씨의 조합으로 고유하게 식별될 수 있습니다. Jane Doe는 여러 명의 Janes가 있을 수 있지만, 오직 한 명뿐입니다.Doe 패밀리의 네임스페이스에서는, 「Jane」만으로 이 인물을 명확하게 지정할 수 있습니다.또, 모든 유저의 「글로벌」네임스페이스에서는,

네임스페이스의 대표적인 예로는 [1]파일에 이름을 할당하는 파일 시스템이 있습니다.일부 프로그래밍 언어는 변수서브루틴을 네임스페이스로 [2][3][4]정리합니다.컴퓨터 네트워크 및 분산 시스템은 시스템, 프린터, 사이트 및 원격 파일과 같은 리소스에 이름을 할당합니다.운영 체제는 분리된 네임스페이스별로 커널 리소스를 분할하여 가상화 컨테이너를 지원할 수 있습니다.

마찬가지로 계층형 파일 시스템도 디렉토리에 파일을 구성합니다.각 디렉토리는 개별 네임스페이스이므로 디렉토리 "문자"와 "송장"에 모두 "to_jane" 파일이 포함될 수 있습니다.

컴퓨터 프로그래밍에서 네임스페이스는 일반적으로 특정 기능 주위에 기호와 식별자를 그룹화하고 같은 이름을 공유하는 여러 식별자 간의 이름 충돌을 피하기 위해 사용됩니다.

네트워킹에서 도메인 네임 시스템은 웹 사이트(및 기타 리소스)를 계층 네임스페이스로 구성합니다.

이름 충돌

요소 이름은 개발자에 의해 정의됩니다.이로 인해 다른 XML 응용 프로그램에서 XML 문서를 혼합하려고 할 때 충돌이 발생하는 경우가 많습니다.

이 XML은 HTML 테이블 정보를 전송합니다.

<table> <tr> <td> </td> <td> </td> </td> </td> </table>

이 XML은 테이블(가구)에 대한 정보를 전달합니다.

<표> <이름>아프리카 커피 테이블 </name> <width> 80 </width> <length> 120 </length> </table>

이러한 XML fragment가 함께 추가되면 이름 경합이 발생합니다.둘 다 a를 포함합니다.<table>...</table>요소는 다른 내용과 의미를 가지고 있습니다.

XML 파서는 이러한 차이를 처리하는 방법을 알지 못합니다.

프리픽스를 통한 솔루션

XML 의 이름 경합은, 이름 프리픽스를 사용하면 간단하게 회피할 수 있습니다.

다음 XML은 요소의 시작 부분에 "h"와 "f"를 접두사로 하여 HTML 테이블과 가구 정보를 구분합니다.

<h:table> <h:tr> </h:td> </h:td> </h:tr> 오렌지 </h:td> </h:tr> </h:table> <f:name> 아프리카 커피 테이블 </f:name> </f:width> </f:f:twidth> </f:f:f>

네이밍 시스템

네임스페이스의 이름은 네임스페이스 이름과 로컬 [5][6]이름으로 구성됩니다.네임스페이스 이름은 보통 로컬 이름에 접두사로 적용됩니다.

증강된 Backus-Naur 형식:

name = <로컬명> 구분자 <로컬명>

로컬 이름이 단독으로 사용되는 경우 이름 해결은 특정 로컬 이름이 암시하는 특정 이름을 결정하기 위해 사용됩니다.

네임스페이스 이름 예제
맥락 이름. 네임스페이스 이름 로컬명
경로. /home/user/readme.txt /home/user(디렉토리) readme.txt(파일명)
도메인 이름 www.example.com example.com(도메인명) www(리프 도메인 이름)
C++ 표준:: 배열 std(C++ 네임스페이스) 어레이(표준)
언로코드 미국 뉴욕 미국(국가 또는 지역) 뉴욕(로컬)
XML xmlns:xhtml="http://www.w3.org/1999/xhtml"
<xhtml: 본문>
xhtml(이전에는 XML 네임스페이스 xhtml="http://www.w3.org/1999/xhtml"로 선언됨) 본문(표준)
$DBI:: errstr $DBI(Perl 모듈) errstr(표준)
자바 java.displaces를 클릭합니다.날짜. java.util(Java 네임스페이스) 날짜(클래스)
Uniform Resource Name(URN) urn:nbn:fi-fe19991055 urn:nbn(국가별 서지 번호) fi-fe19991055
시스템 처리 10.1000/182 10 (명칭권한 부여) 1000/182(로컬명 추가)
디지털 객체 식별자 10.1000/182 10.1000 (표준) 182 (공개)
MAC 주소 01-23-45-67-89-ab 01-23-45(조직 고유 식별자) 67-89-ab(NIC 고유)
PCI ID 1234 abcd 1234(벤더 ID) abcd(디바이스 ID)
USB VID/PID 2341 003f[7] 2341(벤더 ID) 003f(제품 ID)
SPARQL dbr: Sydney dbr (이전에는 온톨로지라고 선언되어 있습니다.예를 들어 @sublic dbr:<http://dbpedia.org/resource/ >를 지정함으로써) 시드니

위임

당사자 간의 책임 위임은 월드 와이드 웹의 구조와 같은 실제 애플리케이션에서 중요합니다.네임스페이스는 글로벌 [8]고유성을 유지하면서 여러 명의 이름 발행 기관에 식별자 할당을 위임할 수 있습니다.중앙 등록 기관은 할당된 네임스페이스 이름을 등록합니다.각 네임스페이스 이름은 할당된 네임스페이스에서 이름을 할당하는 조직에 할당됩니다.이 조직은 이름 자체를 할당하는 이름 발행 기관일 수도 있고 이름 공간의 일부를 다른 조직에 추가로 위임하는 다른 등록 기관일 수도 있습니다.

계층

네임스페이스를 서드파티에 서브 위임할 수 있는 이름 지정 방식은 계층 네임스페이스입니다.

각 하위 위임에 대해 네임스페이스 이름의 구문이 동일한 경우 계층이 재귀적입니다.재귀 계층의 예로는 도메인 이름 시스템이 있습니다.

비재귀 계층의 예로는 Internet Assigned Numbers Authority(IANA; 인터넷 할당 번호 기관) 번호를 나타내는 Uniform Resource Name이 있습니다.

urn:isbn:978-3-16-148410-0에 대한 계층적 네임스페이스 분석, 칼 포퍼의 책 "The Logic of Scientific Discovery"의 식별자, 제10판.
레지스트리 레지스트라 식별자 예시 네임스페이스 이름 네임스페이스
Uniform Resource Name(URN) 인터넷 할당 번호 기관 urn:isbn:978-3-16-148410-0 항아리 정식 URN 네임스페이스
정식 URN 네임스페이스 인터넷 할당 번호 기관 urn:isbn:978-3-16-148410-0 ISBN 통일된 자원명으로서의 국제 표준 도서 번호
국제품번(EAN) GS1 978-3-16-148410-0 978 북랜드
국제표준도서번호(ISBN) 국제 ISBN 기관 3-16-148410-X 3 독일어권 국가
독일어 퍼블리셔 코드 에이전트 für Buchmarkt 표준 3-16-148410-X 16 모어 시벡

네임스페이스와 스코프

네임스페이스 이름은 이름에 컨텍스트(컴퓨터 과학에서 범위)를 제공할 수 있으며, 이 용어들은 때때로 서로 바꿔서 사용됩니다.그러나 이름의 컨텍스트는 이름이 발생한 위치나 이름의 구문과 같은 다른 요소에 의해 제공될 수도 있습니다.

로컬 및 글로벌 범위와 네임스페이스 유무에 관계없이 시스템을 명명하는 예
네임스페이스 없음 네임스페이스 포함
로컬 스코프 차량 번호판 파일 시스템 계층 표준
글로벌 범위 유니버설 유니크 아이디 도메인 네임 시스템

프로그래밍 언어

많은 프로그래밍 언어에서 네임스페이스는 식별자의 컨텍스트입니다.운영 체제에서 네임스페이스의 예는 디렉토리입니다.디렉토리내의 각 이름은, 1개의 파일 또는 서브 [9]디렉토리를 일의로 식별합니다.

일반적으로 네임스페이스의 이름은 여러 개의 의미를 가질 수 없습니다. 즉, 서로 다른 의미는 동일한 네임스페이스에서 동일한 이름을 공유할 수 없습니다.네임스페이스는 다른 네임스페이스에 있는 동일한 이름이 각각 다른 의미를 가질 수 있기 때문에 컨텍스트라고도 합니다.

네임스페이스의 다른 특징은 다음과 같습니다.

위에서 설명한 추상적인 언어 기술 사용뿐만 아니라 일부 언어에는 명시적인 네임스페이스 제어에 사용되는 특정 키워드가 있습니다.C++ 의 네임스페이스의 예를 다음에 나타냅니다.

#실패하다 <iostream>  // 이렇게 하면 현재 스코프에 이름이 표시됩니다.이 경우, // 글로벌 범위로 가져옵니다. 사용. 표준::외치다; 사용. 표준::;  네임스페이스 박스 1 {     인트 상자_측 = 4; }  네임스페이스 박스2 {     인트 상자_측 = 12; }  인트 주된() {     인트 상자_측 = 42;     외치다 <><> 박스 1::상자_측 <><> ;  // 출력 4     외치다 <><> 박스2::상자_측 <><> ;  // 12를 출력합니다.     외치다 <><> 상자_측 <><> ;  // 출력 42. } 

컴퓨터 과학에 관한 고려 사항

컴퓨터 과학에서 네임스페이스(이름 범위라고도 함)는 고유한 식별자 또는 기호(예: 이름)의 논리적 그룹을 유지하기 위해 만들어진 추상 컨테이너 또는 환경입니다.네임스페이스에 정의된 식별자는 해당 네임스페이스에만 연결됩니다.여러 네임스페이스에서 동일한 ID를 독립적으로 정의할 수 있습니다.즉, 한 네임스페이스에서 정의된 식별자는 다른 네임스페이스에서 정의된 동일한 식별자와 동일한 의미를 가질 수도 있고 그렇지 않을 수도 있습니다.네임스페이스를 지원하는 언어는 식별자(정의가 아님)가 [10]속한 네임스페이스를 결정하는 규칙을 지정합니다.

이 개념은 유추로 설명할 수 있다.X와 Y라는 두 회사가 각각 직원들에게 ID 번호를 할당한다고 상상해 보십시오.X와 Y의 ID 번호가 같은 종업원을 2명 둘 수 없습니다만, 같은 ID 번호를 양사에서 사용하는 것은 문제가 되지 않습니다.예를 들어, 빌이 X사에서 일하고 제인이 Y사에서 일한다면, 각각 123번 직원이 되는 것은 문제가 되지 않습니다.이 비유에서는 ID 번호가 식별자이며 회사가 네임스페이스 역할을 합니다.같은 식별자가 각 네임스페이스에서 다른 사람을 식별하는 데 문제가 발생하지 않습니다.

대규모 컴퓨터 프로그램이나 문서에서는 일반적으로 수백 또는 수천 개의 식별자를 가지고 있습니다.네임스페이스(또는 유사한 기법, 에뮬레이션 참조)는 로컬 식별자를 숨기기 위한 메커니즘을 제공합니다.논리적으로 관련된 식별자를 대응하는 네임스페이스로 그룹화하는 수단을 제공하여 시스템을 보다 모듈화 합니다.

데이터 저장 장치와 많은 최신 프로그래밍 언어가 네임스페이스를 지원합니다.스토리지 디바이스는 디렉토리(또는 폴더)를 네임스페이스로 사용합니다.이것에 의해, 같은 이름의 2개의 파일을 다른 디렉토리에 보존하는 한, 디바이스에 보존할 수 있습니다.일부 프로그래밍 언어(예: C++, Python)에서는 이름 공간을 명명하는 식별자 자체가 둘러싸인 네임스페이스와 연관되어 있습니다.따라서 이러한 언어에서는 네임스페이스가 네스트되어 네임스페이스 트리를 형성할 수 있습니다.이 트리의 루트에는 이름 없는 글로벌 네임스페이스가 있습니다.

일반적인 언어로 사용

C

C99 이후 C에서는 익명 구조를 네임스페이스로 사용할 수 있습니다.

// helper.c 정적인 인트 _추가(인트 a, 인트 b) {     돌아가다 a + b; }  컨스턴트 구조 {     이중으로 하다 파이;     인트 (*더하다) (인트, 인트); } 도우미 = { 3.14, _추가 };  // helper.h 컨스턴트 구조 {     이중으로 하다 파이;     인트 (*더하다) (인트, 인트); } 도우미;  // main.c #실패하다 <stdio.h> #실패하다 "그럴 수도 있어요.h"  인트 주된(){     인쇄물("3 + 2 = %d\n", 도우미.더하다(3, 2));     인쇄물("pi는 %f입니다.\n", 도우미.파이); } 
C++

C++에서는 네임스페이스가 네임스페이스 [11]블록으로 정의됩니다.

네임스페이스 abc {     인트 막대기; } 

이 블록 내에서 식별자는 선언된 대로 사용할 수 있습니다.이 블록 외부에서는 네임스페이스 지정자 앞에 접두사를 붙여야 합니다.예를 들어, 의 외부namespace abc,bar작성해야 한다abc::bar액세스 할 수 있습니다.C++는 이 장황함을 불필요하게 만드는 또 다른 구조를 포함합니다.회선을 추가함으로써

사용. 네임스페이스 abc; 

코드 조각, 접두사,abc::더 이상 필요하지 않습니다.

네임스페이스 내에서 명시적으로 선언되지 않은 식별자는 글로벌네임스페이스에 있는 것으로 간주됩니다.

인트 후우; 

이러한 식별자는 선언된 대로 사용할 수 있습니다.또는 글로벌 네임스페이스에 이름이 없기 때문에 네임스페이스 지정자::프레픽스를 붙일 수 있습니다.예를들면,foo쓸 수도 있다::foo.

C++의 네임스페이스 해상도는 계층적입니다.즉, 가상 네임스페이스 내에서food::soup, 식별자chicken을 참조하다food::soup::chicken.한다면food::soup::chicken존재하지 않는다, 그러면 그것은food::chicken둘 다 아닌 경우food::soup::chicken도 아니다food::chicken존재하다,chicken을 참조하다::chicken글로벌 네임스페이스 ID 입니다.

이름 충돌을 피하기 위해 C++의 네임스페이스가 가장 많이 사용됩니다.최근 C++ 코드에서는 네임스페이스가 광범위하게 사용되지만 이전 버전의 언어에서는 존재하지 않았기 때문에 대부분의 오래된 코드에서는 이 기능을 사용하지 않습니다.예를 들어 C++ Standard Library 전체는 다음과 같이 정의됩니다.namespace std그러나 표준화 이전에는 많은 컴포넌트가 원래 글로벌 네임스페이스에 있었습니다.프로그래머가 삽입할 수 있는 것은using네임스페이스 해결 요건을 무시하고 모든 식별자가 글로벌 네임스페이스에 있어야 하는 이전 코드와의 하위 호환성을 얻도록 지시합니다.단, 의 사용방법입니다.using역호환성(예: 편의성) 이외의 이유로 인한 지시사항은 모범적 코드 관행에 반하는 것으로 간주됩니다.

자바

Java에서 네임스페이스의 개념은 Java 패키지에 구현됩니다.패키지에 명시적으로 이름을 붙일 필요는 없지만 모든 코드가 패키지에 속합니다.다른 패키지의 코드는 적절한 식별자 앞에 패키지 이름 앞에 접두사를 붙여 액세스합니다.class Stringpackage java.lang라고 말할 수 있다java.lang.String(이것은 완전 수식 클래스명이라고 불립니다).C++와 마찬가지로 Java는 패키지 이름을 입력할 필요가 없는 구조를 제공합니다.import단, 일부 기능(리플렉션 등)에서는 프로그래머가 완전 수식 이름을 사용해야 합니다.

C++와 달리 Java의 네임스페이스는 언어의 구문에 관한 한 계층적이지 않습니다.그러나 패키지는 계층 방식으로 이름이 지정됩니다.예를 들어, 다음 문자로 시작하는 모든 패키지javaJava 플랫폼의 일부입니다.패키지java.lang언어 핵심 클래스가 포함되어 있습니다.java.lang.reflect에는 리플렉션과 관련된 핵심 클래스가 포함되어 있습니다.

Java( Ada, C# 등)에서는 네임스페이스/패키지는 코드의 의미 카테고리를 나타냅니다.예를 들어 C#에서는namespace System에는 시스템에서 제공하는 코드가 포함되어 있습니다( 참조).NET Framework).이러한 카테고리가 얼마나 구체적인지, 계층이 얼마나 깊은지는 언어마다 다릅니다.

함수 및 클래스 범위는 가시성, 접근성 및 개체 라이프타임과 밀접하게 연결된 암묵적인 네임스페이스로 볼 수 있습니다.

C#

네임스페이스는 C# 언어에서 많이 사용됩니다.모든 .NET Framework 클래스는 네임스페이스로 편성되어 보다 명확하게 사용되고 혼란을 회피합니다.게다가 커스텀 네임스페이스는 프로그래머가 작업을 정리하거나 이름 충돌을 피하기 위해 광범위하게 사용됩니다.클래스를 참조할 때는 클래스 이름 뒤에 네임스페이스가 이어지는 완전 수식 이름을 지정해야 합니다.

시스템..콘솔.기입선('헬로 월드'); 인트 i = 시스템..변환.ToInt32("123"); 

또는 using 문을 추가합니다.따라서 해당 네임스페이스 내의 모든 클래스의 완전한 이름을 언급할 필요가 없습니다.

사용. 시스템.;  콘솔.기입선('헬로 월드'); 인트 i = 변환.ToInt32("123"); 

위의 예에서 System네임스페이스이고 Console과 Convert는 System 내에서 정의된 클래스입니다.

파이썬

Python에서 네임스페이스는 개별 모듈에 의해 정의되며 모듈은 계층 패키지에 포함될 수 있으므로 네임스페이스도 계층화됩니다.[12][13]일반적으로 모듈을 Import할 때 모듈에 정의된 이름은 해당 모듈의 네임스페이스를 통해 정의되며, 완전한 수식 이름을 사용하여 호출 모듈에서 액세스됩니다.

# modulea가 2개의 함수 func1()과 func2()와 1개의 클래스 Class1을 정의한다고 가정합니다. 수입품 모듈라  모듈라.기능 1() 모듈라.기능하다() a = 모듈라.클래스 1() 

from ... import ...스테이트먼트를 사용하면, 발신측 모듈의 네임스페이스에 관련하는 이름을 직접 삽입할 수 있습니다.이러한 이름은, 수식명을 사용하지 않고, 발신측 모듈에서 액세스 할 수 있습니다.

# Modulea가 2개의 함수 func1()과 func2()와 1개의 클래스 Class1을 정의한다고 가정합니다. 부터 모듈라 수입품 기능 1  기능 1() 기능하다() # 이것은 정의되지 않은 이름으로 실패하며, 풀네임 Modulea도 실패합니다.func2() a = 클래스 1() # 이것은 정의되지 않은 이름으로 실패하며, 풀네임 Modulea도 실패합니다.클래스 1() 

이름을 직접 가져오기 때문에(수식 없이) 경고 없이 기존 이름을 덮어쓸 수 있습니다.

성명서의 특별한 형식은 다음과 같습니다.from ... import *이름 있는 패키지에 정의된 모든 이름을 호출 모듈의 네임스페이스에 직접 Import합니다.이 형식의 Import를 사용하는 것은 언어 내에서 지원되지만 일반적으로는 권장되지 않습니다.이는 발신측 모듈의 네임스페이스를 오염시키고 이름 [14]충돌 시 이미 정의된 이름이 덮어쓰기되기 때문입니다.

Python은 또한import x as y에일리어스 또는 대체 이름을 지정하는 방법으로서 다음과 같이 지정합니다.

수입품 수치 ~하듯이 np  a = np.오렌지색(1000) 
XML 네임스페이스

XML에서 XML 네임스페이스 지정은 프로그래밍 언어에서 네임스페이스의 역할과 유사하게 XML 문서의 요소 및 속성의 이름을 고유하게 만들 수 있습니다.XML 네임스페이스를 사용하여 XML 문서는 여러 XML 어휘의 요소 또는 속성 이름을 포함할 수 있습니다.

PHP

네임스페이스는 버전 5.3 이후 PHP에 도입되었습니다.클래스, 함수 및 변수의 명명 충돌을 방지할 수 있습니다.PHP에서 네임스페이스는 네임스페이스 블록으로 정의됩니다.

# 파일 phpstar/foobar.php  네임스페이스 phpstar;  학급 푸바 {     일반의 기능. 후우(): 무효     {         메아리치다 'hello world, function foo에서';     }      일반의 기능. 막대기(): 무효     {         메아리치다 '헬로 월드, 기능 바에서';     } } 

다음과 같은 다양한 방법으로 PHP 네임스페이스를 참조할 수 있습니다.

# 파일 인덱스.php  # 파일 포함 포함하다 "star/foobar.foobar.";  # 옵션 1: 클래스 이름 앞에 네임스페이스를 직접 붙입니다. $obj_foobar = 신규 \cisco star\푸바();  # 옵션 2: 네임스페이스 Import 사용하다 phpstar\푸바; $obj_foobar = 신규 푸바();  # 옵션 2a: 네임스페이스 Import 및 에일리어스 사용하다 phpstar\푸바 ~하듯이 FB; $obj_foobar = 신규 FB();  # 규칙적인 방법으로 속성 및 메서드에 액세스 $obj_foobar->후우(); $obj_foobar->막대기(); 

네임스페이스 에뮬레이트

네임스페이스에 대한 언어 지원이 없는 프로그래밍 언어에서는 식별자 명명 규칙을 사용하여 네임스페이스를 어느 정도 에뮬레이트할 수 있다.예를 들어 libpng 등의 C 라이브러리는 노출된 인터페이스의 일부인 모든 함수 및 변수에 고정 프레픽스를 사용하는 경우가 많습니다.libpng는 다음과 같은 식별자를 제공합니다.

png_create_write_module png_get_module png_read_row png_set_module

명명 규칙통해 식별자는 고유하므로 [15]명명 충돌 없이 대규모 프로그램에서 사용할 수 있습니다.마찬가지로, 원래 Fortran으로 작성된 많은 패키지(: BLAS, LAPACK)는 함수가 속한 그룹을 나타내기 위해 함수의 이름의 처음 몇 글자를 예약합니다.

이 기술에는 몇 가지 단점이 있습니다.

  • 네스트된 네임스페이스에는 잘 확장되지 않습니다.식별자의 모든 사용은 완전한 네임스페이스 수식이어야 하므로 식별자가 지나치게 길어집니다.
  • 개인 또는 조직이 일관성 없는 명명 규칙을 사용하여 원치 않는 난독화가 발생할 수 있습니다.
  • 선언된 네임스페이스에 따라 식별자 그룹에 대한 복합 또는 "쿼리 기반" 연산은 다루기 어렵거나 실행 불가능하게 됩니다.
  • 식별자 길이가 제한된 언어에서는 접두사를 사용하면 함수의 기능을 식별하기 위해 사용할 수 있는 문자 수가 제한됩니다.이것은 FORTRAN 77로 작성된 패키지의 경우 특히 문제가 됩니다.이 패키지는 식별자당 6자만 제공합니다.예를 들어 BLAS 함수의 이름DGEMM함수는 배정밀 숫자("D")와 일반 행렬("GE")에서 작동함을 나타내며, 마지막 두 문자만 행렬 행렬 곱셈(MM)의 실제 기능을 보여줍니다.

몇 가지 장점이 있습니다.

  • 소스 코드 파일에서 이름을 찾기 위해 특별한 소프트웨어 도구가 필요하지 않습니다.GREP와 같은 간단한 프로그램이면 충분하다.
  • 네임스페이스 이름 충돌이 없습니다.
  • 이름 섞기가 필요 없기 때문에 비호환성 문제가 발생하지 않습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Adya, Atul; Bolosky, William; Castro, Miguel; Cermak, Gerald; Chaiken, Ronnie; Douceur, John; Howell, Jon; Lorch, Jacob; Theimer, Marvin; Wattenhofer, Roger (2002). FARSITE: Federated, Available, and Reliable Storage for an Incompletely Trusted Environment (PDF). Proc. USENIX Symp. on Operating Systems Design and Implementation. Archived from the original (PDF) on 2010-07-28. The primary construct established by a file system is a hierarchical directory namespace, which is the logical repository for files.
  2. ^ "C# FAQ: What is a namespace". C# Online Net. Archived from the original on 2013-10-20. Retrieved 2010-02-23. A namespace is nothing but a group of assemblies, classes, or types. A namespace acts as a container—like a disk folder—for classes organized into groups usually based on functionality. C# namespace syntax allows namespaces to be nested.
  3. ^ "An overview of namespaces in PHP". PHP Manual. What are namespaces? In the broadest definition, namespaces are a way of encapsulating items. This can be seen as an abstract concept in many places. For example, in any operating system directories serve to group related files, and act as a namespace for the files within them.
  4. ^ "Creating and Using Packages". Java Documentation. Oracle. A package is a grouping of related types providing access protection and name space management. Note that types refers to classes, interfaces, enumerations, and annotation types. Enumerations and annotation types are special kinds of classes and interfaces, respectively, so types are often referred to in this lesson simply as classes and interfaces.[더 나은 소스 필요]
  5. ^ XML Core Working Group (8 December 2009). "Namespaces in XML 1.0 (Third Edition)". W3C. Retrieved 2012-03-30.
  6. ^ Moats, Ryan (May 1997). "Syntax". URN Syntax. IETF. p. 1. sec. 2. doi:10.17487/RFC2141. RFC 2141. Retrieved 2012-03-30.
  7. ^ Stephen J. Gowdy. "USB ID 목록", 2013.
  8. ^ Sollins & Masinter (December 1994). "Requirements for functional capabilities". Functional Requirements for Uniform Resource Names. IETF. p. 3. sec. 2. doi:10.17487/RFC1731. RFC 1731. Retrieved 2012-03-30.
  9. ^ "C# FAQ: What is a namespace". C# Online Net. Archived from the original on October 20, 2013. Retrieved 2010-02-23. For instance, [under Windows], to access the built-in input-output (I/O) classes and members, use the System.IO namespace. Or, to access Web-related classes and members, use the System.Web namespace.
  10. ^ "A namespace is "a logical grouping of the names used within a program."". Webopedia.com. 10 April 2002. Retrieved 2011-07-26.
  11. ^ "Namespaces allow to group entities like classes, objects and functions under a name". Cplusplus.com. Retrieved 2011-07-26.
  12. ^ "6. Modules". The Python Tutorial. Python Software Foundation. Retrieved 25 October 2010.
  13. ^ "Python Scopes and Namespaces". Docs.python.org. Retrieved 2011-07-26.
  14. ^ https://docs.python.org/3/tutorial/modules.html "일반적으로 모듈 또는 패키지에서 *을(를) Import하는 것은 불쾌합니다."
  15. ^ Danny Kalev. "Why I Hate Namespaces". Archived from the original on 2016-07-09.{{cite web}}: CS1 maint: bot: 원래 URL 상태를 알 수 없습니다(링크).