Martin McClure et Travis Griggs organise prochainement un workshop à OOPSLA’08 sur les “super-pouvoirs de Smalltalk”. En effet Smalltalk (mais également d’autres langages dynamiques comme Ruby, Python ou encore CLOS) offre des fonctionnalités en dehors des pratiques habituelles des langages de programmation orienté-objet usuels : pouvoir ajouter ou d’enlever des méthodes d’une classe à l’exécution, changer la classe d’un objet, …
La méthode #doesNotUnderstand:, qui a donné son nom à ce blog, en fait parti. Les classes Smalltalk peuvent redéfinir cette méthode. Lorsqu’un message destiné à un objet n’est implémenté par aucunes des super-classes de cet objet, un message #doesNotUnderstand: avec comme paramètre le message original est renvoyé à l’objet. En redéfinissant cette méthode, on la possibilité de récupérer n’importe quelles messages et ainsi de définir des mécanismes réflexifs ou distribués. On se reportera à la page 108 du livre Squeak par l’exemple pour une explication détaillée de ce mécanisme.
Ces fonctionnalités font la puissance de Smalltalk mais également sont la source de nombreux problèmes (des super-pouvoir pour les super-villains) : sécurité, mauvaise conception, … Le workshop se propose de faire le point sur les avantages et les inconvénients de ces super-pouvoirs.
Et vous lecteurs de ce blog, utilisez vous les super-pouvoirs de Smalltalk ? Quelles expériences heureuses ou malheureuses pouvez vous nous faire partager ?
Dessin de Ray J.A. Mouëza