À retenir
- C'est une capture de l'état d'un calcul pour une exécution future.
- Elle permet de suspendre et de reprendre un programme à volonté.
- C'est le concept théorique derrière la programmation asynchrone moderne.
En informatique, une continuation représente le « futur » d'un programme à un instant T. Imaginez que vous mettiez un film en pause : la continuation est l'ensemble des informations qui permettent de reprendre la lecture exactement là où vous vous étiez arrêté, en sachant tout ce qui doit se passer ensuite.
Étymologie
Issu du latin continuatio (action de suivre sans interruption). Dans le domaine du développement, le concept a été formalisé dans les années 1960 et 1970, notamment avec le langage Scheme, pour décrire mathématiquement comment un programme passe d'une étape à la suivante.
Exemples d'usage
- En JavaScript, lorsqu'on utilise une fonction de rappel (callback) après une opération longue, cette fonction est une forme de continuation.
- Le mécanisme de
async/awaitdans les langages modernes permet de mettre en pause une fonction et de la reprendre plus tard grâce aux continuations gérées par le système.
Cas d'usage
Les continuations sont essentielles pour gérer l'asynchronisme (attendre une réponse réseau sans bloquer tout le programme), implémenter des coroutines (fonctions qui peuvent se rendre la main mutuellement) ou créer des systèmes de gestion d'erreurs complexes.
Bonnes pratiques
Pour les développeurs débutants, il est préférable d'utiliser les structures de haut niveau (comme les Promesses ou async/await) plutôt que de manipuler manuellement les continuations, ce qui peut rendre le code illisible, un phénomène souvent appelé le « callback hell ».
Synonymes
Antonymes
Conseil
Considérez la continuation comme un « marque-page » dynamique. Si vous apprenez la programmation fonctionnelle, le terme 'CPS' (Continuation-Passing Style) reviendra souvent : c'est simplement une façon d'écrire du code où chaque fonction dit explicitement ce qu'il faut faire ensuite.
Questions fréquentes
Est-ce que c'est la même chose qu'une fonction ?
Pas tout à fait. Une fonction définit une tâche, tandis qu'une continuation représente tout ce qu'il reste à faire dans le programme après un certain point.
Pourquoi en parle-t-on peu en développement web classique ?
Parce que la plupart des langages modernes cachent ce concept complexe derrière des mots-clés plus simples comme 'yield' ou 'await'.