Pour en savoir plus
Bien qu'en programmation graphique et événementielle, le style de
programmation soit impératif, il est non seulement possible, mais
bien souvent utile, d'introduire des opérateurs plus fonctionnels de
manipulation d'objets graphiques. Un bon exemple vient de
l'utilisation de la bibliothèque MLgraph,
Lien
http://www.pps.jussieu.fr/~cousinea/MLgraph/mlgraph.html
qui implante le modèle graphique de PostScript, et propose des
opérateurs fonctionnels de manipulation des images. Elle est décrite
dans [CCS96] et utilisée
abondamment dans [CM95] pour le placement optimisé
des arbres et pour la construction de dessins dans le style d'Escher.
Une caractéristique intéressante de la bibliothèque Graphics
est d'être portable pour les interfaces graphiques des systèmes
Windows, MacOS et Unix. Cette notion de bitmap virtuel se retrouve dans
plusieurs langages comme Le_Lisp ou plus récemment en
Java. Malheureusement en Objective CAML la bibliothèque Graphics ne
possède pas de composant interactif pour la construction
d'interfaces. Une des applications décrites dans la partie II de ce
livre contient les premières briques de la bibliothèque Upi.
Celle-ci s'inspire de l'Abstract Windowing Toolkit des premières
versions de Java. On s'aperçoit qu'il est relativement aisé d'étendre
des fonctionnalités de cette bibliothèque grâce aux valeurs
fonctionnelles du langage. Le chapitre 16
compare d'ailleurs l'adaptation de la programmation objet et de la
programmation fonctionnelle et modulaire pour la construction
d'interfaces graphiques. L'exemple d'Upi est fonctionnel et
impératif, mais il est aussi possible de n'utiliser que le style
fonctionnel. C'est typiquement le cas pour les langages fonctionnels
purs. On peut citer les systèmes Fran et Fudget,
développés en Haskell et dérivés. Le système Fran permet de
construire des animations 2D, 3D interactives, c'est-à-dire avec
événements entre objets animés ou utilisateurs.
Lien
http://www.research.microsoft.com/~conal/fran/
La bibliothèque Fudget est une bibliothèque pour la
construction d'interfaces graphiques.
Lien
http://www.cs.chalmers.se/ComputingScience/Research/Functional/Fudgets/
Une des difficultés, quand on veut programmer une interface graphique
pour son application, est de savoir laquelle choisir parmi les nombreux
outils existants. Il ne suffit pas de déterminer le langage et le
système pour fixer le choix de l'outil. Pour Objective CAML, il en
existe plusieurs plus ou moins finalisés :
-
l'encapsulation de la libX, pour X-Windows;
- la librt, une bibliothèque pour X-Windows;
- ocamltk, adaptation de Tcl/Tk, portable;
- mlgtk, adaptation de Gtk, portable.
On trouve les liens vers ces développements à la << bosse du chameau >> :
Lien
http://caml.inria.fr/hump.html
Enfin nous avons parlé uniquement de la programmation en 2D. La
tendance est à l'augmentation d'une dimension. Que cela soit le modèle
VRML, ou l'extension Java-3D, les langages fonctionnels doivent aussi
répondre à cette nécessité. En fonctionnel pur, le système Fran
offre des possibilités intéressantes d'interaction entre
sprites. Plus proche d'Objective CAML on peut utiliser la bibliothèque
VRcaML ou l'environnement de développement SCOL.
À la manière de MLgraph a été développée la bibliothèque
VRcaML qui intègre une partie du modèle graphique de VRML
à Objective CAML.
Lien
http://www.pps.jussieu.fr/~emmanuel/Public/enseignement/VRcaML
On peut donc construire une scène 3D animée. Le résultat produit alors
un fichier VRML directement visualisable.
Toujours dans la lignée de Caml, le langage SCOL, est un langage
fonctionnel de communication muni d'importantes bibliothèques de
manipulation 2D et 3D agrémenté d'un environnement de développement
pour le non-informaticien.
Lien
http://www.cryo-networks.com
L'intérêt du langage SCOL et de son environnement de développement est
de pouvoir réaliser des applications réparties, en client-serveur,
facilitant la fabrication de sites Internet. On présente la
programmation distribuée en Objective CAML au chapitre 20.