48 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| 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 |