Pourquoi les ordinateurs comptent-ils de zéro?
Compter à partir de zéro est une pratique très courante dans de nombreux langages informatiques, mais pourquoi? Continuez à lire alors que nous explorons le phénomène et pourquoi il est si répandu.
La séance de questions et réponses d'aujourd'hui nous est offerte par SuperUser, une sous-division de Stack Exchange, un groupe de sites Web de questions-réponses dirigé par la communauté..
La question
Lecteur superutilisateur DragonLord est curieux de savoir pourquoi la plupart des systèmes d'exploitation et des langages de programmation comptent à partir de zéro. Il écrit:
Les ordinateurs totalisent traditionnellement les 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 sont les avantages pratiques de compter à partir de zéro??
Pourquoi vraiment? Aussi répandue que la pratique soit, il y a sûrement des raisons pratiques pour sa mise en œuvre.
La réponse
Le contributeur de SuperUser, Matteo, offre les informations suivantes:
Compter les 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 en mémoire (on l’appelle adresse), la position de chaque élément peut être calculée comme suit:
élément (n) = adresse + n * taille_de_l'élément
Si vous considérez le premier élément comme le premier, le calcul devient
élément (n) = adresse + (n-1) * taille_de_l'élément
Pas une différence énorme mais cela ajoute une soustraction inutile pour chaque accès.
Édité pour ajouter:
- L'utilisation de l'index de tableau en tant que décalage n'est pas une exigence, mais simplement 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 d'un élément..
- Dijkstra a publié un article «Pourquoi la numérotation devrait commencer à zéro» (pdf), où il explique pourquoi commencer par 0 est un meilleur choix. Partir de zéro permet une meilleure représentation des plages.
Si vous cherchez à approfondir la réponse, le papier de Dijkstra est une lecture informative.
Avez-vous quelque chose à ajouter à l'explication? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.