Compter à partir de zéro est une pratique très courante dans de nombreux langages informatiques, mais pourquoi? Continuez à lire pendant que nous explorons le phénomène et pourquoi il est si répandu.
La session de questions et réponses d’aujourd’hui nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement de sites Web de questions-réponses géré par la communauté.
The Question
Le lecteur SuperUser DragonLord est curieux de savoir pourquoi la plupart des systèmes d'exploitation et langages de programmation comptent à partir de zéro. Il écrit:
Les ordinateurs totalisent traditionnellement des valeurs numériques à partir de zéro. Par exemple, les tableaux dans les langages de programmation basés sur C commencent à partir de l'index zéro.
Quelles sont les raisons historiques à cela et quels avantages pratiques le comptage à partir de zéro présente-t-il par rapport au comptage à partir de un?
Pourquoi en effet? Aussi répandue que soit la pratique, il y a sûrement des raisons pratiques à sa mise en œuvre.
La réponse
Matteo, contributeur SuperUser, offre les informations suivantes:
Le comptage des tableaux à partir de 0 simplifie le calcul de l'adresse mémoire de chaque élément.
Si un tableau est stocké à une position donnée de la mémoire (on l'appelle l'adresse), la position de chaque élément peut être calculée comme
element (n) = adresse + n * size_of_the_elementSi vous considérez le premier élément comme le premier, le calcul devient
element (n) = adresse + (n-1) * size_of_the_elementPas une énorme différence mais cela ajoute une soustraction inutile pour chaque accès.
Modifié pour ajouter:
- L'utilisation de l'index de tableau comme offset n'est pas une exigence mais juste une habitude. Le décalage du premier élément peut être masqué par le système et pris en compte lors de l'allocation et du référencement de l'élément.
- Dijkstra a publié un article intitulé «Pourquoi la numérotation devrait commencer à zéro» ( pdf ) où il explique pourquoi commencer par 0 est un meilleur choix. Commencer à zéro permet une meilleure représentation des plages.
Si vous cherchez à approfondir la réponse, l'article de Dijkstra est une lecture informative.
Avez-vous quelque chose à ajouter à l'explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange férus de technologie? Consultez le fil de discussion complet ici .