I. Introduction

Visual Works est une implémentation de Smalltalk éditée et maintenue par la société Cincom Systems. Il s'agit d'un environnement de développement complet pour Smalltalk-80, et disponible sur un grand nombre de cibles (Windows, Linux, Unix, Solaris, Mac...). On parle de Visual Works Smalltalk ou Cincom Smalltalk, mais on résume plus généralement par "Visual Works", ou "VW".

Comme la plupart des implémentations Smalltalk, il existe une excellente documentation très détaillée (en anglais), qui reprend les concepts Smalltalk-80 de base et qui les relie aux implémentations VW. Cette documentation est écrite et maintenue par les ingénieurs de Cincom, et est livrée lors de l'installation du logiciel. On la trouve le plus souvent dans VW/Doc.

Tout y est décrit pour prendre en main VW, et on ne peut que conseiller de s'y référer lorsque l'on cherche quelque chose de précis, ou même de la parcourir par curiosité pour voir ce que l'environnement de développement peut proposer.

Cette documentation très riche et efficace est la raison même de l'inexistence de sources de documentation externes (tutoriels, blogs, documentation en français, etc.). En effet puisque tout est déjà décrit et expliqué par les développeurs mêmes de Cincom, et qu'une littérature abondante complètement gratuite est disponible sur le net, un Smalltalker en besoin d'informations l'utilisera plutôt que de rechercher des informations sur un moteur de recherche. Comme, en outre, il est difficile de faire mieux, personne ne prend la peine de réellement écrire une documentation, osons le dire, "alternative".

De plus, les nombreuses mailing-lists - basiquement, une pour chaque Smalltalk, plus une pour chaque gros framework comme Seaside, Aida, Iliad... - permettent de communiquer et de demander rapidement de l'aide aux autres Smalltalkers.

On a ainsi l'impression que le Smalltalk n'est pratiqué par personne, alors que des communautés soudées et très disponibles et accessibles existent - mais vivent un petit peu cachées par rapport à d'autres grands langages.

Ce phénomène se retrouve, typiquement, pour tous les Smalltalks, et presque tous les frameworks. On préférera ainsi rediriger des débutants ou des initiés sur de la documentation ou bien une mailing-list, plutôt que d'en écrire une en français (ou autre) ou bien d'écrire des tutoriels.

Ainsi, les tutoriels qui vont suivre ne seront que de courtes introductions pour les débutants n'ayant jamais ou peu abordé Smalltalk (et VW). Il ne s'agira pas de décrire précisément les mécanismes de l'EDI ou de créer des exemples trop longs ou trop précis, mais de permettre une initiation au développement Smalltalk, de pouvoir montrer ce qu'on peut faire et de savoir comment rechercher une information (dans l'environnement Smalltalk, dans la documentation).

L'objectif sera quand même de montrer quelques fonctionnalités du langage, et comment réaliser certaines des opérations les plus basiques. De même, il sera intéressant de voir la réalisation de petites applications et ainsi expliquer comment utiliser Visual Works.

Ce document et ceux qui vont suivre sont donc issus d'une volonté de faire découvrir et populariser un peu Smalltalk sur developpez.com, et aussi de fournir une "trousse de secours" à d'éventuels débutants (amateurs, étudiants, pourquoi pas des professionnels...) qui auraient besoin d'informations immédiates sur Visual Works.

II. Téléchargement et installation de Visual Works

II-A. Le site de Cincom Smalltalk

Toutes les informations relatives à VW se trouvent sur le site officiel de Cincom : http://www.cincomsmalltalk.com/main/ (le tout est en anglais).

Il est possible d'y consulter toutes les informations relatives à Visual Works, ainsi que de nombreux blogs, ressources (podcasts, screencasts...), documentations officielles et aides diverses.

Il y a aussi un panel de ressources, d'articles et de documentations commerciales, dont l'intérêt (au niveau où se place ce tutoriel) est de présenter la réussite de moyennes et grandes entreprises avec Smalltalk, et quels produits sont développés avec Visual Works. Ceci peut donner une idée de l'utilisation commerciale de Smalltalk - et ainsi contrer l'idée assez généralisée qui place Smalltalk comme un langage mort et dépassé.

Il existe également une page qui résume la plupart des fonctionnalités du produit, en anglais et accessible ici :

http://www.cincomsmalltalk.com/main/products/visualworks/overview/ .

II-B. Choisir sa version de Visual Works

Actuellement, il est possible pour le grand public de choisir entre une version commerciale et une version complètement gratuite, dite "non commerciale" ou académique.

Il s'agit de la version 7.7 de Visual Works, et elle est téléchargeable dans sa version non commerciale à cette adresse :

http://www.cincomsmalltalk.com/main/developer-community/trying-cincom-smalltalk/try-cincom-smalltalk/

Cette dernière contient exactement toutes les fonctionnalités de la version commerciale, ainsi que toutes les sources, packages, librairies et ressources diverses (documentation, images, exemples...). Les deux seules choses non disponibles sont la possibilité de créer des applications commerciales (ou de monnayer quoi que ce soit via un programme développé avec ce produit) et le support technique (réservé à certaines versions commerciales).

Vous pouvez donc librement télécharger Visual Works - Non-Commercial afin d'essayer Smalltalk et créer gratuitement vos applications non commerciales.

Note : il semblerait que le téléchargement ne soit plus disponible pour le moment, et qu'il faille en demander une copie physique via un formulaire sur la page en lien ci-dessus.

II-C. Installer Visual Works

L'installation est relativement simple, quel que soit le système d'exploitation choisi. Sous Windows, c'est un éxecutable à lancer - sous les systèmes à base d'UNIX un script à exécuter.

La configuration est immédiate sous Windows, tandis que sous les autres systèmes un petit fichier texte explique comment créer une variable d'environnement pour que VW puisse trouver les fichiers des sources Smalltalk de l'environnement.

Cette étape ne pose aucune difficulté particulière, il s'agit de suivre pas à pas les installeurs relatifs à chaque système d'exploitation.

III. Fonctionnement rapide de VW Smalltalk

III-A. L'environnement Smalltalk

Tout l'environnement Smalltalk est contenu dans une image (extension .im), où le code se trouve et est exécuté.

Lorsque VW est lancé, l'interface s'ouvre et charge l'image, qui devient donc l'environnement en cours. Toute action, addition ou suppression de code, compilation, exécution, etc. est effectuée et inscrite dans l'image (à l'instar d'un système d'exploitation).

Cet environnement est écrit en Smalltalk (c'est-à-dire en lui-même !) et tourne sur une machine virtuelle. L'utilisateur a alors accès à la totalité du code source de l'environnement Smalltalk (l'image), et développe donc au sein de ce dernier - un peu comme si VW se comportait comme un système d'exploitation et que le développeur venait rajouter ses propres extensions à celui-ci.

Smalltalk est un langage à typage fort et dynamique, dans lequel tout est objet. Cela signifie qu'une classe est un objet (et non un fichier), et définir une classe revient à créer un objet dans le système Smalltalk (grossièrement, il s'agit de l'image).

De même, toutes les méthodes sont des messages, et appeler la méthode d'une classe revient à envoyer le message à l'objet correspondant (une classe ou l'instance d'une classe).

Lorsque le système est coupé, tous les changements sont sauvegardés et seront retrouvés à la prochaine utilisation de l'environnement.

III-B. Compilation et exécution du code

Lors de sa compilation, le Smalltalk est transformé en un bytecode qui est ensuite interprété par la machine virtuelle lors de l'exécution réelle du code (compilation "Just-in-Time").

Ainsi, il n'est pas nécessaire de recompiler à chaque fois un code, ce dernier pouvant être lancé n'importe quand - et de n'importe où dans l'environnement Smalltalk (puisque VW constitue un socle "indépendant" du système d'exploitation, il n'est pas nécessaire d'utiliser des points d'entrée spécifiques, comme un "main").

Produire des exécutables est également possible, mais dans ce cas la machine virtuelle devra être encapsulée dans ces derniers. Ceci induit une surcharge de quelques mégaoctets de l'application finale (environ quinze), mais tout l'environnement n'est pas embarqué avec l'application (possibilité de sélectionner quels éléments du système seront inclus dans l'exécutable).

IV. Description rapide de l'EDI

IV-A. Petit tour de l'interface et des différentes fenêtres

Ce paragraphe expose les fenêtres principales de Visual Works et explicite leurs rôles. Il s'agit d'un panorama très rapide et non exhaustif.

IV-A-1. Le Transcript

C'est la console principale de Visual Works, qui contient l'interface principale de l'environnement (ouvertures des autres fenêtres, connexions aux bases de données et aux repositories, sauvegarde/récupération de l'image...). On peut écrire et exécuter du code dans le transcript, qui sert alors de fenêtre de sortie.

Image non disponible
Transcript

IV-A-2. Le Workspace

Un workspace (il est possible d'en ouvrir/sauvegarder/charger plusieurs) est un éditeur interne qui permet de développer des petits scripts ou de tester très rapidement du code.

Image non disponible
Un workspace avec un petit code


Sur sélection du code et clic bouton droit, un menu d'options et de commandes apparaît. Il est possible d'exécuter directement le code sélectionné, d'imprimer le résultat, d'inspecter le résultat ou encore de le déverminer.

Image non disponible
Menu contextuel sur un clic du bouton droit


Image non disponible
Résultat d'un doIt sur le code précédent, dans le Transcript

IV-A-3. Le Browser de classes

C'est dans le Class Browser que se passe la quasi-intégralité d'un développement. Les classes y sont définies, les méthodes, variables partagées, packages y sont créés.

Le browser permet d'avoir accès à l'intégralité du système, de le modifier, le compléter, et d'y ajouter ses propres classes et modules.

Image non disponible
Un Class Browser

IV-A-4. Le Dévermineur

Lorsqu'une erreur apparaît à l'exécution, celle-ci est rattrapée par le dévermineur qui indique qu'une exception est survenue. Il est alors possible de la corriger en cours d'exécution du programme.

Image non disponible
Une exception soulevée sur une erreur


Lorsque l'on choisit de déverminer le code incriminé, une nouvelle fenêtre apparaît et propose une visualisation de tout le contexte en cours (variables, objets, méthodes...) et il est possible de tout inspecter.

Puis, après correction, il suffit d'appuyer sur "play" pour relancer l'exécution avec le code corrigé. De même, un mode "pas à pas" permet d'exécuter le dévermineur instruction par instruction, ou bien de manière plus fine en choisissant dans quelle méthode rentrer pour inspecter l'évolution du programme au cas par cas.

Image non disponible
Le dévermineur

IV-B. Le Parcel Manager

Le parcel manager permet de charger les librairies annexes non intégrées dans Visual Works, appelées des parcelles (format d'enregistrement des packages sur le disque).

Un large panel d'extensions sont alors installables et configurables très simplement, en quelques clics. On peut citer, par exemple, les frameworks pour CORBA (Distributed Smalltalk ou OpenTalk), les améliorations de l'éditeur (coloration de syntaxe, autocomplétion), les améliorations de frameworks de tests unitaires (Sunit), ou bien des solutions de remplacement du framework natif, etc.

Image non disponible
Le Parcel Manager

IV-C. L'aide de Visual Works

Très précieuse, l'aide interne fournit des exemples entiers de code et des explications complètes sur ces derniers, ainsi que sur la plupart des éléments de Visual Works (Smalltalk, librairies de base et avancées, frameworks, etc.).

Au même titre que la documentation papier, il ne faut pas hésiter à la consulter.

Image non disponible
L'aide interne de Visual Works

V. La documentation

Toute la documentation (en anglais) est disponible dans les répertoires d'installation de Visual Works, sous le dossier "doc". Cette dernière est très complète et très utile.

Les documents "AppDevGuide" (500 pages) et "BasicLibrairies" (250 pages) sont particulièrement pratiques pour prendre en main le développement Smalltalk dans VW, ainsi que pour rechercher des informations précises.

C'est également une bonne manière de se former à Smalltalk, en suivant les tutoriels et en s'inspirant des explications et codes proposés dans ces documentations.

Image non disponible
La documentation de Visual Works Smalltalk (7.7)


Image non disponible
L'application Developer's Guide (1)


Image non disponible
L'application Developer's Guide (2)

VI. Liens et références

VI-A. Les mailing lists

Il existe de nombreuses mailing lists pour tous les Smalltalks et pour la plupart des gros frameworks (qui sont généralement portés sur tous les Smalltalks, dont Visual Works).

Voici où trouver des informations sur les mailing lists relatives à Visual Works en version non commerciale :

http://www.cincomsmalltalk.com/userblogs/cincom/blogView?content=ncVersions

La mailing list de l'ESUG : voir plus bas.

VI-B. Les sites web sur Smalltalk

De même que pour les mailing lists, il existe une pléthore de sites sur Smalltalk, à commencer par Smalltalk.org : http://www.smalltalk.org/main/

Il y en a basiquement un ou plusieurs pour chaque Smalltalk, nous avons cité au début de cet article le site de Cincom : http://www.cincomsmalltalk.com/main/products/visualworks/

VI-C. L'ESUG

L'European Smalltalk User Group est une association internationale regroupant les utilisateurs de Smalltalk à travers le monde. Tous les ans, un cycle de conférences est organisé où de nombreux Smalltalkers se réunissent pour parler de l'actualité et des dernières innovations Smalltalk.

Le site de l'ESUG : http://www.esug.org/wiki/

La mailing list : http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org

VII. Remerciements

Merci à Vicnet, Youenn C. et à Alcatîz pour la relecture technique.

Merci à ClaudeLELOUP pour la relecture orthographique et sa réactivité pour corriger l'article.