P
'
t
i
t
e
C
h
a
t
t
e
 
spacer~ I DON'T SUFFER FROM INSANITY, I ENJOY EVERY MINUTE OF IT Articles | Connexion
 
~Le langage Squeak

Précédent  
  Squeak  
  Suivant
 Présentation

Héritier de Smalltalk, Self et Java, le langage de programmation Squeak a fait ses premiers pas en 1996. Plus qu'un langage, Squeak constitue un véritable environnement de développement. Peu naturel de prime abord aux programmeurs classiques, Squeak possède un grand potentiel.
 Sommaire


 Introduction

Pour pénétrer dans le monde de Squeak, vous devez au préalable vous procurer l'environnement de développement éponyme. Présent sur le site officiel http://www.squeak.org, la distribution de Squeak 3.0 prend également place sur le CD-Rom compagnon de ce magazine. L'installation consiste en la simple décompression de l'archive ou sous système Unix en la compilation, très facile, des sources. En tant que produit Open Source, Squeak se voit accessible sur de nombreux systèmes : Macintosh, Solaris, Irix, GNU/Linux, Windows CE, Zaurus. Une distribution Squeak se compose de quatre fichiers majeurs : l'exécutable Squeak correspond à la machine virtuelle, Squeak3.0.image intègre l'environnement de développement et tous les objets créés en son sein, SqueakV3.sources désigne les sources du fichier précédent et Squeak3.0.changes accueille les sources de l'utilisateur ainsi que ses modifications.


 Prise en main de l'environnement

A la première exécution de la machine virtuelle, trois fenêtres s'offrent au regard de l'utilisateur. Leurs titres sont "Getting Started", "Welcome to." et "The worlds of Squeak". Il se révèle recommandé de parcourir le contenu de ces fenêtres avant de commencer toute autre opération. La troisième fenêtre propose un panel d'applications relativement imposantes développées en Squeak. Vous pourrez notamment vous initier à la programmation 3D ou encore vérifier vos talents de musicien.

L'environnement de développement de Squeak, basé sur des éléments graphiques nommés "Morphs" (en référence au langage Self de Sun Microsystems), fait un usage immodéré de la souris. Vous constaterez également que les raccourcis claviers se veulent plutôt inhabituels (ainsi les opérations de copier et de coller correspondent aux raccourcis Alt+C et Alt+V). Le bouton gauche de la souris permet de sélectionner et de valider à l'instar des interfaces graphiques les plus courantes. Un clic sur le fond de l'environnement ouvre le menu principal. Le bouton droit donne accès au menu contextue. Celui-ci contient notamment les éléments spécifiques au contexte courant. Enfin, le bouton du milieu de la souris se voit réservé au menu des fenêtres.

Procédons à présent à la création d'un nouveau projet. Pour cela, ouvrez le menu général en cliquant avec le bouton gauche sur le fond gris de l'environnement. Sélectionnez ensuite les éléments "open", puis "morphic project". Une nouvelle fenêtre "Unamed1" apparaît alors. Si vous quittez l'environnement en précisant d'enregistrer les modifications, vous retrouverez par la suite votre fenêtre au même endroit. En cliquant dans la nouvelle fenêtre, le programmeur ouvre l'espace de travail dédié à son nouveau projet. Pour accéder à la fenêtre de saisie du code, exécutez la commande "open/workspace" du menu général. Dans la nouvelle fenêtre, un appui sur Alt+D ou l'exécution de la commande "do it" du menu contextuel (bouton droit) provoque l'exécution des instructions Squeak saisies.


 Premier programme

L'affichage de l'évalutation d'une ou plusieurs instructions se voit effectué par les commandes "print it", qui place le résultat de l'exécution à côté du code, et "inspect it", qui lance l'inspecteur de résultat. Un dernier moyen existe : exécutez "open/transcript" depuis le menu général. Saisissez ensuite le code suivant dans le workspace :

Transcript show: 'Hello World !'
       
      
JextCopier dans Jext | Jext | Plugin Codegeek
Appuyez sur Alt+D et contrôlez l'affichage dans la fenêtre transcript. Le code précédent a pour effet d'émettre le message show: avec le paramètre àl'objet Transcript. Le caractère deux-points, nécessairement accolé au nom de méthode, précise un passage de paramètres à une méthode. Les apostrophes définissent une chaîne de caractère, contrairement aux guillemets faisant office de délimiteurs de commentaires. Considérons à présent les éléments syntaxiques de Squeak. L'encadré numéro un présent les quelques mot-clé du langage. Une affectation en Squake se réalise comme en Pascal :

x := 90
       
      
JextCopier dans Jext
De ce fait, l'opérateur = permet de comparr la valeur de deux objets tandis que l'opérateur == permet la comparaison de deux références. Le retour d'une valeur au sein d'une méthode nécessite l'emploi de l'accent circonflexe. Ainsi, ^x renvoie la valeur de x. Si cet élément est absent, self est renvoyé. Le point permet de séparer des expressions comme ici :

x := 90. y:= 180
       
      
JextCopier dans Jext
Le programmeur a le loisir de transmettre plusieurs messages en cascade au même objet.

Transcript show: "Hello " ; show: "World !" ; clear.
       
      
JextCopier dans Jext
La ligne de code présentée affiche successivement les termes "Hello" puis "World" avant d'effacer la fenêtre. Pour déclarer des variables locales dans une méthode, un bloc, etc. nous devons employer les barres verticales (par exemple |a b| a:= true b:= false). La barre verticale simple se retrouve parfois dans les déclarations de bloc. Un bloc s'entoure de crochet et permet une exécution différée. Le calcul du cosinus de 90 se fera par exemple ainsi avec un bloc :

[ :x | x cos] value: 90
       
      
JextCopier dans Jext
La barre verticale dans le bloc marque la fin des declarations de parameters tandis que le deux-points préfixé désignent un argument de la méthode. Pour marquer un caractère Squeak a recours au caractère dièse. La définition du caractère 'j' dans le code se réalise avec l'instruction #j. Enfin, un dièse suivi de parenthèses garantit la création d'un tableau :

tableau := #($h, $e, $l, $l, $o)
       
      
JextCopier dans Jext
Nous possédons ici un tableau de cinq caractères.


 Développer en Squeak

Pour aider le développeur dans sa tâche, les concepteurs de l'environnement Squeak ont introduit un outil très performant simplement intitulé "browser". Accessible par l'intermédiaire du menu "open/browser" ou de la combinaison de touches Alt+B, ce navigateur offre une vue d'ensemble des classes existantes dans l'envionnement. Les classes du système se trouvent rangées par catégories logiques, dont l'ordre a été décidé par les auteurs. Chaque catégorie accueille un ensemble de classe possédant chacune des catégories propres. Les catégories des classes regroupent les méthodes et propriétés inhérentes à la classe considérée. Une fois une méthode sélectionnée, son code apparaît en bas de la fenêtre. De nombreux autres outils intéressants se trouvent dans l'environnement. Les barres présentes sur les côtés de l'interface, Squeak, Tools et Supplies donnent accès à ces outils. Le premier menu, Squeak, sert à manipuler l'environnement : mises à jour, modification des préférences, sauvegarde du statut. Le deuxième menu, Supplies, recèle des éléments graphiques et une palette de dessin. Le troisième et dernier menu, Tools, contient des applications utilitaires telles qu'un explorateur de fichiers, un enregistreur de sons, l'accès au Workspace.

En patientant, vous pouvez essayer les nombreuses démos offertes par Squeak, telle que ce superbe blob :

(blob := BlobMorph new) openInWorld
       
      
JextCopier dans Jext | Jext | Plugin Codegeek
Et pour entamer notre véritable initiation, nous étendrons le mois prochain les possibilités de la classe ClockMorph qui constitue une horloge numérique graphique.

Note 1
  • self : objet exécutant la méthode
  • super : objet parent de l'objet exécutant la méthode
  • true et false : valeurs logiques, instance de True et False, qui dérivent de Boolean
  • nil : représente l'objet nul
  • thisContext : désigne le contexte courant d'exécution de la méthode



    par Romain Guy
    romain.guy@jext.org
    http://www.jext.org
    Dernière mise à jour : 14/10/2006


    Précédent  
      Squeak  
      Suivant

     
    #ProgX©2005 Mathieu GINOD - Romain GUY - Erik LOUISE