Wed Jan 6 11:25:53 CET 2010

Le pattern frigo.

Désolé pour le ton un peu con, ceci est un recyclage d'un mail auquel on ne m'a jamais répondu. :)

Imaginez deux programmeurs affamés, assoifés, luisant de sueur, ayant fini leur dernier paquet de Duo Keks. Il est 2h30 du matin, ils viennent de se réveiller, la nuit va être longue. Pour survivre à cette épreuve, ils décident de lever une assemblée générale !

Ils ont un problème à résoudre, et ne peuvent le résoudre qu'ensemble. L'un est expert en droites, l'autre en assemblage de traits. Ils se retrouvent donc devant un frigo, armés de l'instrument le plus adéquat qui soit : un marqueur, et ont besoin de dessiner un carré. Ils se retrouvent obligés de collaborer pour réussir, tout ça.

Ils viennent d'inventer le pattern frigo ! Dans la littérature ça s'appelle une "blackboard architecture". Le principe est d'avoir un certain nombre d'entités travailler sur un même espace de travaille. La plupart des entités voient des demandes, regardent comment elles peuvent découper le travail, puis écrivent d'autres demandes sur l'espace de travail.

Par exemple, vous pouvez avoir dix soldats, deux chefs d'équipes, un colonel. Chacune de ces entités est experte dans son domaine, et résoud les problèmes qu'on lui donne efficacement (tuer, communiquer, trouver une stratégie). Les chefs d'équipes vont suivre la stratégie du colonel, et les soldats vont écouter leur chef d'équipe. Dans un jeu vidéo, on a différents sous-systèmes, l'intelligence artificielle, le système de navigation, le moteur physique, etc. Chaque système va demander des choses sous formes d'assertions, et les autres vont remplacer par d'autres assertions jusqu'à répondre.

Attention, ce n'est pas de la logique des prédicats avec résolution SLD (enfin du prolog quoi) ! C'est beaucoup plus extensible et permissif (et moins formel aussi). Les experts peuvent être des threads indépendants qui vivent leur vie avant d'aller voir l'espace de travail, on peut aller en avant, en arrière, et on peut avoir plusieurs stratégies possibles en même temps. C'est suffisament intéressant et extensible pour jouer avec dans un certain nombre de situations.

Posted by cygal | Permanent link