Ocaml sous Eclipse
Eclipse est un "Integrated Development Environment" (IDE: environnement de développement intégré), c'est-à-dire un programme conçu pour aider les développeurs dans leur travail. Très utilisé par la communauté Java, et à l'origine développé pour elle, Eclipse est conçu de manière générique; ainsi, le coeur de son architecture fait abstraction du langage de programmation, qu'on peut choisir en lui ajoutant des plugins. Le mécanisme des plugins permet aussi d'ajouter des fonctionnalités à Eclipse.
Parmi les fonctionnalités importantes d'Eclipse, citons entre autres:
- l'édition de code source
- l'analyse du code à la volée (au fur et à mesure qu'on le tape), permettant
- la détection d'erreurs (de syntaxe ou de typage) en temps réel
- la complétion automatique (par exemple, eclipse peut proposer de completer un nom de fonction que le développeur est en train d'écrire à partir de ce qu'il a deja ecrit du nom et de la liste des fonctions déjà définies)
- d'aider le programmeur en lui fournissant de la documentation sur ce qui peut l'interesser, en fonction de ce qu'il est en train de faire
- une présentation automatique (indentation, coloriage) de code la plus intelligente possible
- l'utilisation de gestionnaires de projets, pour par exemple ne recompiler que le nécessaire dans des projets complexes
- l'utilisation de gestionnaires de versions de projets, permettant de travailler simultanément sur plusieurs versions du même projet, ou de revenir à une version antérieure
- la facilitation de la programmation à plusieurs
- etc.
Le plugin Eclipse que nous utilisons pour développer en ocaml se nomme OcaIDE.
Il est assez basique, mais permet:
- la présentation automatique (indentation, coloriage) du code
- la compilation lors des sauvegardes pour
- détecter des erreurs
- typer les termes
- l'évaluation de termes selectionnés dans un interprète
Contrairement à l'interprète, les termes ne sont pas évalués au fur et à mesure, de manière interactive avec le développeur. Pour que les termes soient évalués, il faut exécuter explicitement le programme en entier, ou sélectionner les termes à évaluer et demander explicitement leur évaluation.
Pour faire fonctionner OcaIDE il faut une version assez récente d'Eclipse. Les essais sont réalisés avec Eclipse Kepler (sortie juin 2013). Cette version d'Eclipse n'est pas celle qui est utilisée pour les TPs de Java. Elle doit être lancée par eclipse_OCAML &.
Avant de créer un fichier source, il faut créer un projet. Un projet est constitué d'un ensemble d'entités, dans notre cas des fichiers source, par un exemple un fichier source par TP.
Pour créer un projet: New/Ocaml Managed Project. Donner un nom au projet, par exemple MesTpsDeCaml
Pour créer un fichier source: New/Source File ou New/Module. Donner un nom au fichier source, par exemple tp1.ml.
Il faut indiquer à Eclipse la forme sous laquelle l'exécutable associé au source doit être calculée: Project/Properties et dans Targets: tp1.byte
Il suffit ensuite de taper le code source dans la vue Eclipse dont le nom est celui du fichier source. Au fur et à mesure de la frappe, Eclipse détecte de possibles erreurs, qu'il indique par du rouge. Quand l'écriture du terme est terminée, il est ajouté dans la vue "Outline" (sans type). Il n'est pas évalué ni typé, le sera uniquement lors de la sauvegarde. Le raccourci clavier (très utile) pour sauvegarder est standard: CTRL-S.
Dans la vue "Navigator" une entrée "tp1.byte" est ajoutée. Pour exécuter, il suffit de cliquer droit dessus et de selectionner "Run As", puis le mode d'exécution (dans un interprète ou comme un exécutable). Une autre solution est de selectionner tous les termes du fichier (CTRL-A) puis Ocaml/Eval in toplevel.
Note: certains TPs utilisent la bibliothèque graphique de ocaml, qui n'est pas, par défaut, incluse dans le procédé de fabrication de l'exécutable. Pour qu'elle soit prise en compte, il faut aller dans la vue "Navigator", "External files", cliquer droit sur graphics.mli, sélectionner "Properties", puis "OCaml external file" et enfin donner le chemin de graphics.cma dans le système de fichiers (typiquement /usr/lib/ocaml/graphics.cma).
Il peut être utile de demander à Eclipse de produire un exécutable à partir du fichier ML, en particulier lorsqu'on ne souhaite pas utiliser l'interprète. Il suffit, dans la vue "Navigator", de cliquer droit sur le fichier ML, aller dans "Properties" puis "OCaml module", et de cocher la case "Make executable". Alors, l'exécutable sera automatiquement généré à chaque sauvegarde du fichier ML.
Attention: les fichiers d'Eclipse, donc ceux que vous tapez, sont sauvegardés dans le workspace d'Eclipse, qui se trouve en général dans l'arborescence
~/workspace
Pour en savoir plus, le site de OcaIDE contient des tutoriaux très bien faits.
La fiche du département d'informatique du CNAM sur OcaIDA peut également être utile.