human
Pourquoi les tableaux/listes dans les langages de programmation commencent-ils à 0 ? Je connais suffisamment la théorie des nombres pour reconnaître la nature quelque peu arbitraire du comptage des nombres. Cependant , puisque beaucoup de choses courantes dans les langages de programmation utilisent des nombres comptés , pourquoi les listes / tableaux sont - ils l' exception ? Explique comme si j'avais cinq ans.
gpt
La réponse la plus basique est que c'est parce que les ordinateurs numériques commencent nativement à compter à 0 . Puisque dans l'informatique numérique nous utilisons le binaire pour représenter les nombres, ne pas utiliser zéro conduirait à une certaine inefficacité, en particulier dans l'arithmétique entière, qui est souvent utilisée dans les listes/tableaux. Considérez un ordinateur à deux bits. Il peut représenter quatre nombres entiers , ainsi : 00 01 10 11 Maintenant , nous pourrions les appeler n'importe quoi , mais pour les humains , il est plus facile de les traduire par 0,1,2 et 3 . Et si nous n'utilisions pas 00 (zéro), nous abandonnerions l'utilisation d'une de ces entrées. Cela compte beaucoup pour un ordinateur 2 bits , mais ce n'est pas si grave pour un ordinateur 32 bits ou 64 bits . Mais , lorsque vous faites des circuits pour rechercher rapidement des comparaisons , comparer avec " 00 " ou " 0000000000000000000000000000000 " est vraiment facile à faire rapidement et efficacement . Historiquement, effectuer une comparaison dans un microprocesseur pour déterminer si un registre est égal à zéro est câblé en tant qu'instruction rapide séparée. ( Certaines instructions ne prennent que quelques cycles d' horloge pour se terminer , d' autres peuvent en prendre plusieurs . La comparaison avec zéro prend souvent le minimum , 1 cycle . ) Donc , si vous écrivez une boucle de code et que vous voulez faire une comparaison dans chaque boucle pour voir si vous sont terminés, la comparaison avec zéro utilisera le moins de cycles d'horloge. Étant donné que vous pouvez parcourir la boucle plusieurs fois, il est logique de rendre cette comparaison aussi efficace que possible. Ce même raisonnement vaut pour les listes et les tableaux, car lorsque vous devez les remplir/vider dans l'ordre, vous devez vous assurer que vous n'avez pas atteint la fin.