Même en langage de haut niveau, on s'attend à ce que les opérations réalisées correspondent à ce qui a été écrit dans le code, ne serait-ce que parce que cette façon de faire garantit, du point de vue du développeur, le résultat que ce dernier souhaite obtenir.
Dans le meilleur des mondes, on ne devrait pas s'inquiéter du fait que le déroulement du programme puisse être remanié afin d'aboutir au même résultat en utilisant des moyens différents mais meilleurs selon certains critères (code exécutable plus compact, plus rapide, utilisant mieux les ressources, etc.).
Mais dans la vrai vie, il existe des limitations d'ordre matériel qui imposent parfois de préciser les moyens en question et de s'y tenir, faut de quoi le résultat attendu risque de ne pas être obtenu dans certaines situations, car le compilateur n'est pas capable de détecter ces cas particuliers et de leur apporter une réponse spécifique adaptée.
Le plantage du code de la fonction Python cumsum après seulement quelques centaines d'itérations en est un exemple simple, très certainement inattendu pour les néophytes. Mais il en existe bien d'autres, en Python et dans d'autres langages de haut niveau. Par exemple, contre toute attente, on trouve que le calcul math.floor(math.log(1000,10)) (qui doit donner le nombre de zéros du nombre 1000) retourne 2 au lieu de 3.
-----