cours/programmation.effet de bord.md
Oscar Plaisant 602a41e7f8 update
2024-12-25 22:30:24 +01:00

48 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases:
- effet de bord
- side effect
- effets de bord
---
up:: [[programmation]]
#s/informatique
> [!definition] effet de bord
> En programmation, une [[programmation.fonction|fonction]] est dite à effet de bord si elle modifie un [[programmation.état|état]] en dehors de son environnement local.
^definition
> [!cite]- [Wikiwand - Effet de bord (informatique)](zotero://select/groups/5383243/items/92J8KRBY) - [Page ](zotero://open-pdf/groups/5383243/items/JD72IJY2?annotation=YVVTF3QP)
> En informatique, une fonction est dite à effet de bord (traduction mot à mot de l'anglais side effect, dont le sens est plus proche d'effet secondaire) si elle modifie un état en dehors de son environnement local, c'est-à-dire a une interaction observable avec le monde extérieur autre que retourner une valeur.
>
> > [!note] Notes
> > effet de bord = modification en dehors de l'environnement local
> ^YVVTF3QPaJD72IJY2g5383243
# Exemples
> [!example] Exemples d'effets de bord
> - la modification d'une variable non-locale
> - le [[programmation.passage par référence|passage par référence]] d'un [[argument d'une fonction|argument]] mutable
> - la modification d'une [[programmation.variable statique|variable statique]] locale
> - le fait d'appeler une autre fonction à effet de bord
> [!cite]- [Effet de bord (informatique)](zotero://select/groups/5383243/items/HK8W8STH) - [Page ](zotero://open-pdf/groups/5383243/items/FHGCUVX5?annotation=FRXYERKZ)
> Par exemple, les fonctions qui modifient une variable locale statique, une variable non locale ou un argument mutable passé par référence, les fonctions qui effectuent des opérations d'entrées-sorties ou les fonctions appelant d'autres fonctions à effet de bord[
> ^FRXYERKZaFHGCUVX5g5383243
# Problèmes des effets de bord
Les effets de bord posent problème pour :
- la lisibilité (l'influence d'un effet de bord n'est pas bien circonscrite)
- la réutilisabilité des [[programmation.fonction|fonctions]] / [[programmation.procédure|procédures]]
# Solutions possibles
Le langage [[haskell]] restreint les effets de bord dans le concept de [[monade]].
> [!cite]- [Effet de bord (informatique)](zotero://select/groups/5383243/items/HK8W8STH) - [Page ](zotero://open-pdf/groups/5383243/items/FHGCUVX5?annotation=LAQR2DNM)
> La programmation fonctionnelle cherche au contraire à les minimiser et les isole souvent pour cela dans des structures prévues entre autres pour cela : les monades.
>
> > [!note] Notes
> > La programmation fonctionnelle est une solution aux problèmes des effets de bord.
> ^LAQR2DNMaFHGCUVX5g5383243