NameSpace

NameSpace

Espace de noms

Pour une explication plus détaillée sur l'utilisation du terme dans Wikipédia, voir Aide:Espace de noms.

Un espace de noms (namespace) est un ensemble de ce qui est désignable dans un contexte donné par une méthode d'accès donnée faisant usage de noms symboliques (par exemple des chaînes de caractères avec ou sans restriction d'écriture). Pour prendre un exemple simple, si vous avez sous les yeux un annuaire téléphonique, l'espace de noms associé est celui des abonnés au téléphone du département concerné (du moins ceux qui ne sont pas en liste rouge).

Sommaire

Propriétés

Un espace de noms peut être vu comme une fonction F qui à un ensemble de symboles S associe un ensemble O d'objets (à prendre au sens large). Ces objets peuvent être des entiers, des réels, des objets informatiques, des lieux, des personnes, etc.

Symbole

Selon le contexte, les symboles d'un espace de noms peuvent prendre plusieurs formes.

Dans le cas d'un réseau Ethernet, les symboles sont les adresses MAC qui sont des chaînes d'entiers de 48 bits. Dans un programme informatique, les symboles sont des chaînes de caractères de longueur variables. Dans certains langages, ils peuvent être préfixé par un $ ou d'autres symboles pour indiquer leur nature. Dans le cas d'une base de données, chaque enregistrement est représenté par une ou plusieurs clés apparaissant sous la forme d'entiers (numéro d'enregistrement) ou de chaînes de caractères.

Injection, surjection, bijection

Selon le cas, un espace de noms peut être une fonction injective seulement, surjective seulement, les deux ou ni l'un ni l'autre.

En programmation informatique, les espaces de noms sont généralement des injections seulement car s'il y a deux objets nommés distincts alors leur nom est différent et un objet nommé peut avoir plusieurs noms.

Dans le cas d'un réseau Ethernet, les espaces de noms sont des bijections car chaque carte réseau a une adresse Ethernet unique et, à partir d'une telle carte, il est possible de retrouver l'adresse Ethernet correspondante.

Enfin, s'il y a un ensemble d'écoliers dans une classe et considérons leur prénom comme ensemble de symboles, l'espace de noms est surjectif seulement. En effet, tous les écoliers ont un prénom, mais plusieurs peuvent avoir le même prénom. Ce dernier cas aussi arrive parfois en programmation dans plusieurs situations (ex. : table de hachage), ce qui produit des collisions. Pour distinguer les objets nommés, on peut étendre les noms par des préfixes (dans le cas de la programmation) ou ajouter le nom de la personne ou son adresse (dans le cas des écoliers). Dans ce cas, on parle d'extension de l'espace de noms. On peut aussi remplacer les noms ambigus par des pseudonymes ou des alias. Dans ce cas, on parle de modifier l'espace de noms.

Historique

Systèmes de fichiers, bases de données

Bien qu'il y ait toujours eu des espaces de noms sans que le concept en soit perçu, celui-ci a pris son autonomie avec la technologie FS et a été implémenté dans des machines comme l'IBM 38 et l'AS/400. Il a également été étudié de façon systématique dans le projet Gémau coordonné par Serge Guibou-Ribaud. La création des bases de données relationnelles représente une façon de gérer des données par des techniques d'espace de noms également.

Plusieurs techniques de performances pour gérer les espaces de noms étaient couvertes par des brevets qui tombèrent dans le domaine public au cours des années 2000, ce qui a permis leur utilisation par ReiserFS et WinFS.

En informatique

En informatique, un espace de noms est une notion permettant de lever une ambiguïté sur des termes qui pourraient être homonymes sans cela. Il est matérialisé par un préfixe identifiant de manière unique la signification d'un terme. Au sein d'un même espace de noms, il n'y a pas d'homonymes.

Langages de programmation

Article détaillé : espace de noms (programmation).

La notion d'espace de noms est particulièrement utilisée en programmation (Java, C#, C++), et dans les technologies XML avec en particulier RDF et ses ontologies.

Les espaces de noms aident à la construction de programmes modulaires. Par exemple, le symbole de fonction « sin » pourrait renvoyer au calcul d'une sinusoïde dans un espace de noms regroupant des fonctions mathématiques et au péché en anglais dans un autre espace de noms traitant de problèmes religieux. Cela évite les inévitables conflits entre symboles synonymes.

De nombreux langages offrent un espace de noms commun pour les identificateurs de variables, de fonctions et d'opérateurs spéciaux et n'offrent pas la possibilité de manipuler de nouveaux espaces de noms. Des conventions sur les noms des identificateurs doivent alors être adoptées par les programmeurs.

Certains langages offrent les espaces de noms : namespace en C++, packages en Java ou modules en Python). Common Lisp fournit des packages, qui sont des collections de symboles, en plus de la dizaine d'espaces de noms fournis en standard par le langage. En Ada, le paquetage est un module qui permet de définir un espace de noms assorti d'une encapsulation rigoureuse.

Langage de balisage

Les technologies XML font un usage intensif des espaces de noms, car les documents XML doivent avoir la capacité de mélanger sans ambiguïté plusieurs ontologies, c’est-à-dire plusieurs vocabulaires distincts qui peuvent contenir des homonymes.

Article détaillé : Espace de noms XML.

Exemple

 "Bonjour, how are you?"

Cette phrase n’a de sens que si vous devinez quelle est la langue utilisée pour chacune de ses parties. Si vous ne pouvez déterminer la langue utilisée et donc vers quel dictionnaire vous devez vous diriger, il serait peut être bon d'offrir plus d'informations :

 "FR:Bonjour, EN:how are you?"

Nous avons maintenant identifié chacune des entités d'information comme étant différentes ; elles n'appartiennent pas au même espace de noms. Il nous reste maintenant à définir cet espace.

 FR -→ Dictionnaire français
 EN -→ Dictionnaire anglais

En XML, cela se formalisera par exemple de la manière suivante :

 <phrase xmlns:fr="http://example.net/francais" xmlns:en="http://example.net/anglais">
   <fr:bonjour/>
   <en:how-are-you/>
 </phrase>

Liens externes

Ce document provient de « Espace de noms ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article NameSpace de Wikipédia en français (auteurs)

Игры ⚽ Нужна курсовая?

Regardez d'autres dictionnaires:

  • Namespace — This article is about namespaces in general. For their use in computing, see Namespace (computer science). For their use in Wikipedia, see Wikipedia:Namespace. In general, a namespace is a container that provides context for the identifiers… …   Wikipedia

  • Namespace — Namensraum (englisch namespace) ist ein Begriff aus der Informatik. Ein Name identifiziert ein Objekt. Zur eindeutigen Zuordnung ist jedoch der entsprechende Kontext – eben der Namensraum zu beachten. Die Beschreibung geschieht üblicherweise… …   Deutsch Wikipedia

  • namespace —    In Microsoft Active Directory, a collection of unique domain names. A namespace can be contiguous or disjointed. In a contiguous namespace, a child domain always contains the name of the parent, for example, accounting.sybex .com as a… …   Dictionary of networking

  • Namespace — Espace de noms Pour une explication plus détaillée sur l utilisation du terme dans Wikipédia, voir Aide:Espace de noms. Un espace de noms (namespace) est un ensemble de ce qui est désignable dans un contexte donné par une méthode d accès donnée… …   Wikipédia en Français

  • namespace — 1. noun A conceptual space that groups classes, identifiers, etc. to avoid conflicts with items in unrelated code that have the same names. 2. verb To categorize by placing into a namespace. Something I havent captured in this schema is that the… …   Wiktionary

  • Namespace-based Validation Dispatching Language — (NVDL) is an XML schema language for validating XML documents that integrate with multiple namespaces. It is an ISO/IEC standard, and it is Part 4 of the DSDL schema specification. Much of the work on NVDL is based on the older Namespace Routing… …   Wikipedia

  • Namespace (computer science) — For namespaces in general, see Namespace. A namespace (sometimes also called a name scope) is an abstract container or environment created to hold a logical grouping of unique identifiers or symbols (i.e., names). An identifier defined in a… …   Wikipedia

  • Namespace-based Validation Dispatching Language — Die Namespace based Validation Dispatching Language (NVDL) ist eine XML Schemasprache zum Validieren von XML Dokumenten, deren Struktur mit verschiedenen Schemasprachen und in unterschiedlichen Namensräumen definiert wurde. NVDL ist ein ISO/IEC… …   Deutsch Wikipedia

  • Namespace Routing Language — In its simplest form, a Namespace Routing Language (NRL) schema consists of a mapping from namespace URIs to schema URIs. An NRL schema is written in XML. DSDL Part 4 (ISO/IEC 19757 4), NVDL is based on NRL. External links NRL home page NVDL… …   Wikipedia

  • Namespace — …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”