Apprendre Prolog avec des Pokémon, c’est possible
Alexander Petros, qui tient le
blog Unplanned Obsolescence
, a publié un tutoriel d’environ 3 500 mots qui explique les bases de Prolog, un langage de programmation logique des années 70 très différent des langages courants comme Python ou JavaScript, en utilisant les combats Pokémon comme support pédagogique. C’est étonnamment efficace.
Pour ceux qui n’ont jamais touché Prolog, la grosse différence avec un langage classique style Python ou JavaScript, c’est qu’au lieu de dire à l’ordinateur comment résoudre un problème étape par étape, vous lui décrivez les règles du jeu et vous le laissez chercher les réponses tout seul.
Vous écrivez des faits (“Bulbizarre est un Pokémon”, “Bulbizarre est de type plante”), des règles (“un Pokémon vulnérable à X subit le double de dégâts d’une attaque de type X”), et vous posez ensuite des questions au système. Il fait le reste..
L’angle Pokémon est plutôt malin. Les combats Pokémon, c’est en fait un moteur de règles assez tordu : types, faiblesses, talents passifs, priorités d’attaques, statuts.
Bref, exactement le genre de domaine où Prolog brille et où un langage impératif transpire. Petros part de requêtes très simples (“est-ce que Carapuce est un Pokémon ?”) et finit avec des filtres complexes qui sélectionnent les équipes en fonction de leur composition. À chaque étape, l’équivalent en SQL serait dix fois plus lourd.
Le passage le plus parlant, c’est quand il ajoute le support du talent Farceur, qui donne une priorité supérieure aux attaques de statut. Implémenter cette règle a pris trois minutes : il a ajouté une seule clause logique au programme.
Faites le même boulot dans un tableur ou une base SQL, et vous repartez pour des heures. C’est exactement le genre de cas où on comprend pourquoi Prolog a une niche stable, même si personne ne s’en sert au quotidien dans l’industrie.
Côté pédagogie, le choix est bon. La plupart des tutoriels Prolog vous balancent des relations familiales du style “Marie est la fille de Pierre, qui est le mari de…”, ce qui marche mais reste relativement abstrait. Là, vous lisez le code et vous voyez immédiatement à quoi ça sert : à modéliser un combat Pokémon. Du coup les concepts d’unification, de prédicats et de négation passent presque tout seuls.
Si vous avez toujours voulu vous mettre à Prolog mais que les tutoriels classiques vous tombaient des mains,
l’article de Petros
est le point de départ qu’il vous faut.
Source :
Hackaday

Leave a Comment