Espace de noms (informatique)


Espace de noms (informatique)
Page d'aide sur l'homonymie Ne doit pas être confondu avec Espace de noms.

En programmation, 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é (le mot anglais sin en est une traduction) dans un autre espace de nom traitant de problèmes religieux. Cela évite les inévitables conflits entre symboles synonymes.

Ce concept ne concerne pas seulement la programmation. Par exemple, les sockets du domaine UNIX utilisent le système de fichiers comme adresse d'espace de noms.

Sommaire

Espaces de noms explicites

Absence de possibilité de manipuler les espaces de nommage

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


Par exemple, l'API C de GTK+ est orientée objet, bien que le C ne soit pas un langage orienté objet. Pour parvenir à ce résultat, les noms des fonctions de GTK suivent une convention de nommage. En voici un échantillon[1]:

void        gtk_window_set_destroy_with_parent  (GtkWindow *window, gboolean setting);
void        gtk_container_add                   (GtkContainer *container,
void        gtk_container_add_with_properties   (GtkContainer *container, GtkWidget *widget, const gchar *first_prop_name, ...);
void        gtk_widget_show                     (GtkWidget *widget);
void        gtk_widget_show_now                 (GtkWidget *widget);
void        gtk_widget_show_all                 (GtkWidget *widget);

Le nom d'une fonction se décompose comme suit:

  1. Le premier terme, désigne la bibliothèque à laquelle la fonction appartient (ex: gtk)
  2. le deuxième terme, désigne la classe des objets sur lequel la fonction peut agir (ex: window, signal, widget, etc.)
  3. Le troisième terme est un verbe d'action qui décrit l'opération effectuée (ex: set, add, show, etc.)
  4. Enfin, d'autres termes peuvent être ajoutés optionnellement pour mieux spécifier ce que fait la fonction.

L'inconvénient principal est que les noms de fonctions peuvent devenir très longs. C'est pourquoi certains langages offrent des espaces de nommage permettant au développeur d'éviter les collisions de noms facilement et permettent donc d'utiliser des noms de fonctions plus courts.

Manipulation des espaces de nommage

Certains langages offrent les espaces de nom au programmeur. Ils s'appellent: namespace pour le C++ et Microsoft .NET, package pour Java et Common Lisp ou module pour Python.

Common Lisp fournit également des packages, qui sont des collections de symboles, en plus de la dizaine d'espaces de noms fournis en standard par le langage.

Espaces de noms implicites

Dans certains cas, la grammaire du langage permet de définir des espaces de noms implicites. Par exemple dans le langage C, le code suivant est valide :

struct adress {
    int         number;
    const char* road;
};
 
struct phone {
    const char*  number;
    const char*  prefix;
};
 
struct adress  myadress;
struct phone   myphone;
 
myadress.number = 23;
myphone.number  = "67 45 00 23";

Le compilateur possède en effet suffisamment d'informations pour résoudre l'homonymie du symbole number.

Espaces de noms locaux

Les langages de programmation modernes créent un espace de nom dédié pour chaque appel de fonction. Ils supportent donc l'usage de variable locale qui permettent l'implémentation d'algorithmes récursifs. Cette notion est appelée la fermeture d'un identificateur, on parle aussi de visibilité ou de portée.

De nombreux langages permettent un contrôle plus complexe des fermetures: les variables globales sont visibles dans l'ensemble du programme, on peut également trouver des variables qui sont limitées au fichier courant ou à un bloc arbitraire (par exemple en C à l'aide des symboles accolades ).

La méthode utilisée pour résoudre les problèmes d'homonymie parmi les différents espaces de nom revient à ordonner ces différents espaces de noms locaux pour choisir le premier qui contient le symbole recherché. On distingue généralement deux grandes méthodes de classement: la portée lexicale, utilisée dans un langage comme le C et la portée dynamique utilisée par exemple en Perl.

Voir aussi

Liens internes

Références



Wikimedia Foundation. 2010.

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

Regardez d'autres dictionnaires:

  • 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 …   Wikipédia en Français

  • Espace De Noms (Programmation) —  Ne doit pas être confondu avec Espace de noms. En programmation, 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… …   Wikipédia en Français

  • Espace de noms (programmation) —  Ne doit pas être confondu avec Espace de noms. En programmation, 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… …   Wikipédia en Français

  • Espace de noms — Pour une explication plus détaillée sur l utilisation du terme dans Wikipédia, voir Aide:Espace de noms. Le terme espace de noms (namespace) désigne en informatique un lieu abstrait conçu pour accueillir des ensembles de termes appartenant à un… …   Wikipédia en Français

  • Espace de noms XML — Un espace de noms XML est une recommandation du W3C qui permet d employer des éléments et des attributs nommés dans une instance XML. Une instance XML peut contenir des noms d éléments ou d attributs de plus d un vocabulaire XML. Si on attribue à …   Wikipédia en Français

  • Espace de nom — 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

  • Espace de nommage — 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

  • espace de nommage — ● loc. m. ►XML Collection de noms, identifiés par un URI, qui sont utilisé dans des documents XML comme types d éléments et noms d attributs. Les espaces de nommage spécifiques à XML ont une structure interne, contrairement aux espaces de nommage …   Dictionnaire d'informatique francophone

  • Espace colorimétrique — Un espace colorimétrique ou espace de couleur associe des nombres aux couleurs visibles. Compte tenu des limites de la vision humaine, ces nombres se présentent généralement sous la forme de triplets. Chaque couleur de lumière peut donc être… …   Wikipédia en Français

  • Noms — Nom Pour les articles homonymes, voir Nom (homonymie). En grammaire, le nom est une classe de mots servant à nommer, c est à dire à désigner, les catégories d êtres, de choses et les concepts. Stricto sensu, et pour reprendre la classification du …   Wikipédia en Français