Smalltalk: Envie d’une petite discussion ?
Ne nous méprenons pas ! Cet article ne traite pas de la méthode très populaire du Smalltalk, dîte aussi de la ‘conversation légère’. Nous aborderons, ici, les rudiments du langage de programmation qui porte le même nom, mais aussi son histoire, de sa naissance à aujourd’hui.
HISTOIRE
Vous n’avez jamais entendu parler de Smalltalk ? Je suis pourtant sûre que vous connaissez Java, Objective-C ou encore Ruby. Et bien ces trois langages ont été fortement influencés par le sujet du jour qui n’est pas si récent.
Smalltalk est d’ailleurs à l’origine de grand nombre d’innovations de l’ingénierie logicielle des années 1990, tels que les design patterns (appliqués au logiciel), l’eXtreme Programming (XP) ou encore le Refactoring.
En effet, Smalltalk a vu le jour en 1972, s’inspirant lui même de LISP et Simula, des mains expertes d’Alan Kay, Dan Ingals, Ted Kaehler et Adele Goldberg au Palo Alto Research Center de Xerox. La première version a été créée très rapidement, basée sur le pari qu’un langage de programmation fonctionnant essentiellement sur l’envoi de messages pouvait être décrit dans une spécification d’une page.
Actuellement, lorsque l’on parle de Smalltalk, il s’agit en fait de Smalltalk-80 qui n’est autre que la version développée cette même année et utilisée par un grand nombre de personnes aujourd’hui encore. La recherche est le domaine de prédilection de Smalltalk. Mais il est possible de le trouver dans des sociétés telles que Thales et AMD. C’est un langage qui a pour but de satisfaire la maxime « Faire les choses vite et bien ».
Smalltalk possède d’ailleurs son propre mantra « Tout est objet ». Mais que veut dire « objet » dans le monde du développement ? « Il s’agit d’une entité caractérisée par un état et capable de répondre à certaines commandes ou opérateurs. » ¹
FONCTIONNEMENT
Maintenant que nous connaissons tout du passé et du présent de Smalltalk, il est temps de nous intéresser à son fonctionnement.
Il faut savoir que Smalltalk est un langage simple à apprendre. Vous n’êtes pas convaincu ? Tout le monde dit la même chose concernant son langage de prédilection ? Vous en avez marre de vous arracher les cheveux sans comprendre pour autant le fonctionnement d’un programme ? Alors croyez-moi sur parole: Smalltalk est fait pour VOUS !
Première surprise de ce langage: les « if, for et while » n’existent pas ! Ces instructions sont implémentées en utilisant des objets. « ifTrue » sera envoyé à un objet Booléen qui exécutera un bout de code si celui-ci est vrai.
Il faut donc que les objets communiquent entre eux via des messages. Ce sera leur moyen de communication. A chaque message reçu, l’objet décide de son action. Il peut s’agir d’un changement d’état ou retourner une réponse qui sera elle-même un objet.
Smalltalk nécessite que l’on fasse appel à des objets qui possèdent les propriétés nécessaires à la réalisation des tâches souhaitées.
Pour définir un nouvel objet, il faut :
- Identifier, à l’aide de variables, les caractéristiques (ou « état ») de l’objet
- Définir avec des procédures (ou « méthodes ») les messages auxquels l’objet sera capable de répondre
C’est donc tout naturellement que les objets partageant les mêmes caractéristiques seront regroupés en classes. Celles-ci peuvent elles mêmes être découpées en sous-classes. La sous-classe est une sorte de spécialisation de l’objet ; Il possède donc les mêmes méthodes que ceux de sa classe supérieure ainsi que quelques fonctionnalités supplémentaires. Lorsqu’une sous-classe reçoit un message, la méthode est recherchée dans celle-ci. Si elle ne s’y trouve pas, la recherche continue en remontant dans la hiérarchie et ainsi de suite jusqu’à être trouvée pour finalement être exécutée.
Il existe également la notion d’instance. Les variables de classes sont partagées par toutes les instances d’une classe. Elles gardent la même valeur pour chaque demande. Au contraire, les variables d’instance ont une valeur différente pour chacune d’entre elles.
On peut donc dire que les instructions en Smalltalk ressemblent à une langue régit par des règles de grammaires ² :
- une phrase = un sujet, un verbe et des compléments éventuels
- une instruction = un objet, une méthode et des paramètres éventuels
Notons quelques règles à l’utilisation de Smalltalk. Le symbole ‘:’ indique que la méthode requiert des paramètres. L’affectation d’une valeur à une variable fait exception: il a été décidé de conserver la syntaxe du Pascal ‘:=’. Le ‘.’ indique la fin d’une instruction. Les commentaires se trouvent entre guillemets. Enfin, il existe des mots réservés ( nil, true, false, self, super, et Smalltalk), ou pseudovariables, qui sont en lecture seule, l’utilisateur ne peut donc pas les changer; leur valeur est définie par le système selon le contexte dans lequel s’exécute le programme.
Ainsi, nous avons vu que Smalltalk implémente des objets de base, tels que les classes ou la notion d’héritage, mais qu’il introduit d’autres concepts et notamment le principe modèle-vue-contrôleur (MVC).
Smalltalk est donc plus qu’un simple langage, c’est également un environnement de développement. Il dispose donc d’une machine virtuelle. Cela permet la création et la manipulation d’objets mais surtout la possibilité de ‘décompiler’ rapidement le code et de repérer facilement les erreurs.
¹ extrait du rapport de recherche « APPRENDRE À UTILISER L’ENVIRONNEMENT SMALLTALK-80 AU SECONDAIRE », par Michel AUBE et Danièle BRACKE
² http://www.info.univ-angers.fr/~gh/tuteurs/tutsml.htm, par Gilles HUNAULT