effet de bord

Une définition du Jargon Français.
Aller à : Navigation, rechercher

locution nominale, masculin.  [exécution]. Modification indirecte, lors d'un traitement, d'une entité non concernée (souvent le contenu d'une variable). Le terme désigne à la fois la cause et son résultat.

C'est une traduction mot à mot de l'expression anglaise « side effect » qui signifie en bon français « effet secondaire » (comme les effets secondaires d'un médicament) [précisions de François Crevola].

À propos de l'étymologie de la chose, en physique ou sciences expérimentales associées on parle souvent d'effet de bord pour désigner ce qui se passe quand on essaye de modéliser un truc infini par un objet fini, par exemple on veut regarder ce qui se passe sur un « plan » (infini)... mais dans le labo, le plan qu'on utilise a bêtement des bords (ceux de la table). Tant qu'on reste au milieu de la table, pas de problème. Mais si on arrive au bord, ce dernier va avoir une influence (typiquement, des objets mobiles vont en sortir...). C'est une question classique en conférence ou en congrès, qu'on pose à quelqu'un qui présente ce genre de manips : « Es-tu sûr que tes résultats ne sont pas dus à des effets de bord ? ». Donc... C'est ce qui se passe « au bord » d'un programme, qui ne surviendrait pas s'il était exécuté tout seul dans un vide infini, mais voilà, le programme s'exécute dans une mémoire, elle-même et située dans une machine où des d'autres programmes sont aussi en cours de fonctionnement, où des bidules divers (fichiers, périphériques imposent leur limites ou leurs comportements...). L'euphonie avec « effet Bohr » a sans doute joué aussi un rôle. [précisions de Jean-François Moyen].

Autres précisions, d'Olivier Vasseur : on a un effet de bord quand l'évaluation d'une expression modifie une variable. Si j'écris l'une de ces expressions:

y=x+1;
y=2*x-12;
y=-x;

Ce qui se trouve à droite du = est une expression qui est évaluée (calculée) pour obtenir une valeur. La valeur de x n'est pas modifiée. Par contre dans

y=x++;

x++ renvoie une valeur, comme une expression classique, mais modifie également la valeur de x. Cette expression dissimule une opération d'affectation, on pourrait écrire de façon plus explicite:

y=x;
x=x+1;

On a un cas similaire avec la confusion entre : if (a==0) et if (a=0). Dans les deux cas l'expression entre parenthèses est évaluée et renvoie une valeur booléenne. Dans le premier cas, == est un opérateur de comparaison et renvoie vrai (1) si a est égal à zéro. Dans le second cas, le programmeur a (involontairement) utilisé l'opérateur d'affectation et la valeur renvoyée est celle de a après affectation, c'est-à-dire zéro. Comme le zéro correspond à false en C, on obtient une erreur difficile à détecter. Tous les langages n'acceptent pas les opérations d'affectation dans les instructions en if à cause de ce type de confusion. À nouveau, on parle d'effet de bord car l'affectation est effectuée là où on s'attend à la simple évaluation d'une expression.

Enfin, le traducteur de « programming Perl, deuxième édition », aux éditions O'Reilly (en français « Programmation en Perl ») traduit par "effet secondaire" et précise en note du traducteur et non "effet de bord" (p. 71).

Voir aussi fonctionnel, stateless.