Une nouvelle catégorie voit le jour sur mon blogue : Squeakeries. Pour ce premier billet officiel (j'ai déplacé trois anciens billets où je mentionnais Squeak vers cette nouvelle catégorie) je vais relater mon expérience d'appropriation de cet univers.

Premier contact

C'est un collègue qui m'a suggéré fortement de regarder Squeak. Ce que je n'ai pas fait immédiatement. Mais après avoir lu quelques messages de l'AFUL, je me suis livré à une très courte recherche sur le web. Je suis alors tombé sur cette merveilleuse vidéo où l'auteur introduit Etoys en programmant une bibite sortant d'elle-même d'un labyrinthe . Je n'ai su que bien plus tard que cet exemple était classique et faisait partie d'une première approche très connue d'Etoys. Toujours est-il que cette vidéo a eu un effet monstre chez moi car j'ai immédiatement compris tout le potentiel pédagogique d'un tel outil. Mes lecteurs savent déjà que je crois qu'il faut absolument que les enfants apprennent à programmer, tout au moins minimalement, un ordinateur. Je crois que programmer permet, entre autres, d'actualiser et d'ancrer sa pensée dans la réalité.

Se faire une webidée

Lorsque je désire en apprendre un peu plus sur un sujet, je commence toujours par m'en faire une webidée. Cela consiste à taper un mot dans Google et, partant du résultat, naviguer assez rapidement (surfer) sur les sites. Ce faisant, j'ai commencé à me faire un certain portrait de ce qu'était Squeak. Mais ce portrait était très flou, comme une photo qu'on capture en tremblant. Je discernais plusieurs mots/concepts que j'avais peine à comprendre : Smalltalk, Seaside, les Images, la version française, le greffon (plugin), les morphs, etc. Bref, j'étais complètement perdu. Après m'être calmé, j'ai décidé d'installer le logiciel sur mon portable Linux.

L'installation

Décrite ici, l'installation n'est pas évidente. Qu'est-ce que VM? Image? Source? Que faut-il faire avec tout ça? La page en question n'est vraiment pas claire. Je me suis donc battu un peu avec ma première installation jusqu'à ce que je tombe sur ce petit bijou. (Si vous êtes sous Windows, l'équivalent se trouve ici. Sous Mac, c'est .)

Premier lancement

Squeak, c'est un langage de programmation. Mais au premier lancement, on est tout de suite dépaysé. Tellement, que je me suis inscrit à la liste de discussion francophone de Squeak et sur un commentaire d'un fil, j'ai laissé ceci :
Je suis très novice dans Squeak. Je programme énormément en PHP et en javascript. Je connais en amateur éclairé JAVA), mais l'environnement Squeak est tellement... déstabilisant. (Dans Java, on écrit le source, on compile, et on regarde ce que ça donne...)
Hilaire Fernandes, père de DrGeo a alors pris le temps d'écrire une jolie réponse dont voici un extrait :
[...] programmer dans un environnement Smalltalk vous change la vision que vous pouvez avoir sur la programmation. J'ai pratiqué quelque autres langages, surtout C++ mais aussi un peu Python, Java.
Avec Smalltalk, on change de plan conceptuel, non que les choses soient plus difficiles, mais simplement la vision de ce que doit être le langage et son environnement de développement est totalement différente. Ce qui explique que tu te sens déstabilisé.
Une fois que l'on maîtrise les deux approches, la traditionnelle (que tu décris très bien par: on écrit le source, on compile, et on regarde ce que ça donne...) et celle de Smalltalk (que j'ai envie d'appeler celle des petits pas), la 2e apparaît de loin comme très supérieure.
De la première approche j'en ai été gavé pendant des années. La deuxième, je la pratique depuis peu, mais j'ai découvert que cette dernière me permettait d'aller beaucoup plus vite, d'avoir une approche du développement plus en continuité, moins brutale dans les transitions entre les moments forts du développement: édition de code, compilation, test, débogage. Avec Smalltalk le passage d'un de ces moments à l'autre se fait par epsilon alors que dans l'autre approche c'est à coup de ruptures brutales, mentalement déstabilisantes et stressantes pour le programmeur.
Vous pouvez lire le fil complet de la discussion. Encouragé par les paroles de M. Fernandes, j'ai poursuivi ma webexploration ce qui m'a permis de situer quelques concepts clés.
  • Squeak, c'est du Smalltalk libre. Smalltalk? C'est un vieux langage (années 70) de programmation inventé par Alan Kay. Smalltalk se voulait assimilable même par des enfants. Si vous lisez un livre sur Smalltalk, vous pourrez quasi directement appliquer son contenu à Squeak. Donc, conceptuellement et pratiquement parlant, Squeak et Smalltalk, c'est la même chose. Et puisque Smalltalk n'est pas très jeune, les ressources sur le web sont immenses.
  • On ne sauvegarde pas vraiment des fichiers dans Squeak: on enregistre plutôt l'image qui contient toutes les classes et les objets. Ces images sont entièrement portables d'un ordinateur à l'autre.
  • Dans Squeak, tout est objet.
  • Morph est un ensemble de classes permettant de programmer dans un environnement graphique.
  • Une Image de base contient plus de 1500 classes !

Comment coder

J'avais beau explorer les onglets qui entourent la fenêtre Squeak, j'avais beaucoup de difficultés à voir comment on pouvait coder un simple Hello world ! Et là, mes weblectures (voir plus bas) m'ont amené à comprendre le Browser, la fenêtre Transcript et la fenêtre Workspace. Pour accélerer un peu votre apprentissage de Squeak, je vous suggère l'étude de textes suivants :
Toutes ces références ne représentent qu'une partie de mes pérégrinations Squeak-Web, mais, à mon avis, vous saurez fort bien vous débrouiller à partir de là !

Et la pédagogie ?

Je reviendrai sur l'aspect pédagogique de Squeak. J'aimerais cependant vous conseiller fortement le livre Squeak : Learn Programming with Robots du brillant Stéphane Ducasse. M Ducasse est français mais son livre n'est disponible qu'en anglais. Dans sa préface, il nous dit « My ultimate goal is to teach you object-oriented programming, because this particular paradigm provides an excellent metaphor for teaching programming. » Sur le site consacré à BotsInc, il écrit « I wrote this book for my wife, who is a physics and mathematics teacher in a French school where the students are between eleven and fifteen years old. She had to teach computer sciences and I decided to help her understanding key concepts in programming and teaching them. As a computer scientist, I was aware of work on the programming language Logo and that the programming language Smalltalk had been influenced by the ideas of Logo. I discovered that Smalltalk is a powerful language and has a simple syntax that mimics natural language and that it had originated from research on teaching programming to children. » Ce livre fait vraiment un bon boulot : l'enseignement du langage-objet à l'aide de petits robots dans l'univers de Squeak.

N'hésitez pas à vous lancer dans le merveilleux apprentissage du monde de Squeak. Je n'en suis qu'au début mais déjà je ressens une belle jouissance intellectuelle à son contact.