À retenir
- Le résultat dépend uniquement des arguments d'entrée.
- Appeler la fonction 100 fois avec les mêmes données donnera 100 fois le même résultat.
- Elles sont beaucoup plus faciles à tester et à déboguer que les fonctions non déterministes.
Une fonction déterministe est une instruction informatique qui produit systématiquement le même résultat dès lors qu'on lui fournit les mêmes données de départ. C'est l'équivalent d'une calculatrice standard : si vous tapez 2 + 2, vous obtiendrez toujours 4, peu importe le moment de la journée ou l'état de l'ordinateur.
Étymologie
Le mot « fonction » provient des mathématiques et de la logique. « Déterministe » est issu du concept philosophique du déterminisme, selon lequel les mêmes causes produisent nécessairement les mêmes effets. En informatique, cela désigne un code dont l'exécution est prévisible et dépourvue d'aléas.
Exemples d'usage
- Une fonction de calcul mathématique, comme
carre(x)qui multiplie un nombre par lui-même. - Un script qui transforme un texte de minuscules en majuscules.
- Une fonction de conversion de devises utilisant un taux de change fixe passé en paramètre.
Cas d'usage
Ce concept est central en programmation fonctionnelle. On l'utilise pour créer des bibliothèques de calcul, des systèmes de cryptographie (où une clé doit toujours produire le même chiffrement) ou encore pour l'optimisation des performances grâce à la mise en cache (mémorisation).
Bonnes pratiques
Pour qu'une fonction reste déterministe, elle ne doit pas dépendre d'éléments extérieurs imprévisibles comme l'heure actuelle, un nombre aléatoire, ou le contenu d'un fichier qui peut changer. Il faut aussi éviter les « effets de bord », c'est-à-dire que la fonction ne doit pas modifier de variables situées en dehors d'elle-même.
Synonymes
Antonymes
Conseil
En tant que débutant, essayez de découper votre code pour isoler la logique de calcul dans des fonctions déterministes. Laissez la gestion de l'affichage ou de l'aléatoire à part : cela rendra votre programme beaucoup plus robuste et facile à maintenir.
Questions fréquentes
Une fonction qui génère un nombre aléatoire est-elle déterministe ?
Non, car elle renvoie une valeur différente à chaque appel, même si on l'invoque exactement de la même manière.
Pourquoi privilégier le déterminisme ?
Cela rend le code plus stable et prévisible. Si un bug survient, il est facile de le reproduire puisque les mêmes entrées causent toujours la même erreur.
Est-ce la même chose qu'une fonction pure ?
Presque. Une fonction pure est obligatoirement déterministe, mais elle a une contrainte supplémentaire : elle ne doit provoquer aucun changement externe (effet de bord).