* Agence Drupal Besancon
Agence Drupal Besancon
Article:
En vue de gagner un temps de recherche idéal dans chaque dictionnaire de variables,celui-ci est défini en général par une table de hachage (le temps de recherche devient pratiquement autonome du nombre de variables enregistrées dans le dictionnaire). Pour cela, le nom de la variable est convertie en une clé de recherche numérique dont tous les bits d'information sont équidisés grace à une fonction de hachage; cette clé numérique est donc infériorisée à l'intervalle de la taille de la table de hachage, afin d' obtenir l'emplacement où la variable est stockée. Puisque des chocs sont possibles, la table de hachage compte à chaque emplacement utilisé à la fois une entrée pour le nom de la variable (afin de pouvoir controler par égalité que la bonne variable est stockée à cet emplacement). Il existe alors de nombreux manoeuvres pour résoudre le choc de variables démembrant la même clé affectée : Renforcer la taille de la table de hachage et répertorier toutes les variables qui y sont déjà stockées. Cette manoeuvre est coûteuse lors de l'adjonction de variable mais permet de diminuer le nombre de chocs. Organiser dans une liste les variables partageant le même endroit dans la table de hachage. La liste de collision peut être externe à la table, ou bien détenir des endroits choisis aléatoirement parmi les endroits libres dans la table de hachage. Stocker à la position déterminée par la clé de hachage commune, une autre variable telle qu'une référence à une autre table de hachage (contenant toutes les variables partageant la même clé dans la première table), la seconde table employant une fonction de hachage distincte (dans ce cas le temps de recherche devient partiellement logarithmique en rapport avec le nombre total de variables, et non partiellement linéaire). L'originalité de PostScript et Forth de tous les dictionnaires (référencés dans la pile de portée) sont eux-mêmes des variables que l'on peut nommer, que l'on peut soit employer directement soit rechercher par leur nom recherché lui aussi dans la pile de portée, avant d'en obtenir la référence, qu'on peut alors empiler dans la pile de portée. Il n'y a donc dans ces langages aucun nom de variable réservé, tous les noms d'objets prédéfinis étant en fait référencé dans une pile de portée qui n'est jamais vide mais référence au minimum un premier dictionnaire "système" de portée contenant sa propre référence et son propre nom. Encore il est possible d'enlever sélectivement certaines variables de toutes les résolutions ultérieures de portée, en résiliant leur référence dans un des dictionnaires référencés dans la pile de portée (ceci permet de camoufler certaines variables d'un niveau de porté donné pour utiliser par la suite la variable définie dans un niveau de portée inférieur).