Utilisation des continuations pour l'ingénierie d'agents conversationnels
Résumé
Continuations are a well established programming concept allowing to explicitly capture and resume the current program state. They are present in several functional programming languages (such as Scheme), in Hewitt actor model, and more recently in dynamic programming languages (such as Ruby, Smalltalk, Python, and even Javascript or Java). They have been historically applied to automaton programming, cooperative threads, compilation techniques, and have lastly raised interest for web application programming. This paper shows how this concept happens to be especially useful and elegant to program agent behaviors (or behavioral components), by increasing code readability and ease of writing. The proposed approach especially facilitates modular interaction protocol implementation, one of the main difficulties in conversational agent engineering.
Les continuations sont un concept de programmation bien établi permettant de capturer explicitement l’état du programme en cours. Elles sont présentes dans des langages de programmation fonctionnelle (par exemple Scheme), dans le modèle d’acteurs de Hewitt, et depuis peu dans des langages dynamiques (tels que Ruby, Smalltalk, Python, Javascript, Java). Elles ont été historiquement appliquées à la programmation d’automates, aux threads coopératifs, à des techniques de compilation, et ont dernièrement suscité un regain d’intérêt pour la programmation d’applications Web. Cet article montre comment ce concept s’avère particulièrement utile et élégant pour programmer le comportement d’agents (ou leurs composants comportementaux), au point d’en révolutionner l’écriture et la lisibilité. L’approche proposée facilite notamment l’implémentation modulaire de protocoles d’interactions, une des difficultés majeures de l’ingénierie d’agents conversationnels.