Introduction

Un article de SmartEiffelWiki, l'encyclopéde libre.


Sommaire

Naissance du projet SmartEiffel

Parallèlement à son travail de Thèse, Dominique Colnet, principal auteur de SmartEiffel, a découvert le langage Eiffel lors de la rédaction d'un ouvrage à vocation encyclopédique sur les langages à objets ([MNCLT 1989], [MNCLT 1991]).

Titulaire d'un poste de Maître de Conférences en informatique en 1989, son unité d'enseignement de l'époque décide, en 1990, d'utiliser le langage Eiffel pour l'initiation à l'informatique. Il est amusant de mentioner ici que Dominique Colnet était à l'époque un fervent défenseur du langage Smalltalk. Comme chacun sait, et finalement c'est une assez bonne chose, ce n'est pas un jeune Maître de Conférences qui décide du langage de programmation qu'il est bon d'utiliser. Ainsi, il est amusant de constater que c'est presque à contre cœur que Dominique Colnet est forcé d'utiliser Eiffel en 1990 !

Afin de concilier son travail d'enseignement et son travail de recherche sur la compilation des langages à objets, Dominique Colnet décide donc d'abandonner Smalltalk au profit d'Eiffel afin de faire d'une pierre deux coups : un travail de recherche intéressant et un produit gratuit, utilisable aussi pour l'enseignement.

Le projet SmartEiffel, anciennement appelé SmallEiffel à véritablement commencé durant l'été 1994 lorsque Dominique Colnet a décidé d'écrire son propre compilateur Eiffel.

Écrire un compilateur Eiffel n'est pas une mince affaire. Avant de prendre cette décision, Dominique Colnet avait simplement commencé à écrire une nouvelle bibliothèque de classes Eiffel dont l'architecture correspondait presque mot pour mot aux classes de base que l'on pouvait déjà trouver à cette époque dans la bibliothèque de Smalltalk-80 ([GR 1983], [Goldberg 1984]). C'est en raison de la très mauvaise qualité des compilateurs Eiffel alors disponibles dans le commerce que la décision fut prise d'en écrire un autre. Le nouveau compilateur fut nommé SmallEiffel pour faire référence à la fois à Smalltalk et aussi bien sûr à Eiffel ([OOSC 1988], [ETL 1992]). Une année entière fut nécessaire pour écrire la première version de SmallEiffel et ce n'est qu'en juillet 1995 que SmallEiffel réussit à s'autocompiler. Depuis cette époque, plus d'une dizaine d'années se sont écoulées et plus d'une trentaine de versions (http://smarteiffel.loria.fr/misc/HISTORY#-1.00) ont vu le jour.

Petit SmartEiffel deviendra grand ?

Simple prototype de recherche et outil d'enseignement, SmartEiffel voit ses fonctionnalités augmenter de version en version, sans discontinuer, et ceci depuis 1995.

C'est en 1998, à l'occasion d'une visite au LORIA de Richard Stallman, président fondateur de la FSF (Free Software Foundation), que le label GNU est apposé sur le projet.

À partir de 2002 et jusqu'à 2005, Dominique Colnet participe activement aux réunions ayant initialement pour objectif la normalisation du langage Eiffel (groupe de normalisation ECMA TC39-TG4, standard ECMA numéro 367). Bien entendu, cela va sans dire, toute l'équipe de SmartEiffel est associée aux âpres et longues discussions...

C'est finalement en mai 2005, que le projet SmartEiffel annonce qu'il va continuer à travailler sur le véritable langage Eiffel. En effet, le langage décrit par le groupe de travail ECMA TC39-TG4 diverge clairement de ce qu'il est convenu d'appeler Eiffel. ECMA-Eiffel est un langage très différent, et surtout, non encore expérimenté. L'équipe SmartEiffel n'implantera jamais ECMA TC39-TG4.

Au début de l'été 2005 donc, à l'heure où nous écrivons ces lignes, après plus de 10 années de travail sur le compilateur mais aussi sur le langage Eiffel lui-même, nous, projet SmartEiffel, considérons que le langage Eiffel tel que nous le connaissons aujourdhui, dispose presque de tous les ingrédients souhaitables. Ainsi, la version 2.2 de SmartEiffel marque donc le début d'une ère de stabilité et correspond à ce que nous pensons être le véritable langage Eiffel.

Objectifs du projet SmartEiffel

Le langage entre dans une période de stabilité. En effet, dans la version 2.2, le seul manque important qui demeure est la programmation distribuée, c'est à dire le mécanisme SCOOP. Il va sans dire que l'implantation de SCOOP ne se fera pas au détriment de l'existant. Selon nous, il est évident que l'on doit vraiment aller vers un langage stable et validé expérimentalement sur une large palette de programmes.

Nous prévoyons à court terme un effort important qui a commencé dans la version 2.2 concernant l'implantation de bibliothèques. Nous allons également continuer à ouvrir plus largement le projet afin d'augmenter la dynamique autour de SmartEiffel : ouverture d'un Wiki pour toute la partie documentation et augmentation du nombre de personnes autorisées à écrire dans les sources du projet.

Sans modifier le langage, nous travaillons sur des outils novateurs dans le domaine de la prédiction de types et sur la validation statique des assertions. En effet, nous pensons que le langage Eiffel doit rester simple. Les outils que nous allons intégrer vont, sans rien changer au langage, se focaliser sur les objectifs suivants :

  • mieux prédire les types dynamiques et obtenir les meilleures performances à l'exécution,
  • valider statiquement les assertions et également les appels sans objet cible (appels sur Void),
  • résoudre statiquement tous les problèmes de typage liés à la covariance et aux changement de statut d'exportation (CATCALLs).

Une autre facon de décrire les objectifs du projet SmartEiffel consiste à donner ici le point de vue qui est le nôtre sur Eiffel, où plus exactement l'esprit Eiffel.

Eiffel, l'esprit Eiffel ou la méthode Eiffel ?

À strictement parler, Eiffel est un langage est non pas véritablement une méthode. Ceci étant dit, après plus de dix ans de travail en Eiffel et pour Eiffel, force est de constater qu'Eiffel véhicule bien une façon de penser ainsi qu'une facon de travailler très particulière.
Nous ne pensons pas être contredits en affirmant ici qu'Eiffel est très probablement le meilleur langage actuel permettant de mettre en œuvre ce qui est communément appelé génie logiciel.
Ceci n'est finalement pas une surprise quand on sait que le génie logiciel est notre guide principal dès qu'il s'agit de faire un choix concernant le langage Eiffel.

Avant de présenter les autres aspects que nous prenons en compte lors de chaque évolution du langage, il est bon de garder en tête que le langage informatique universel et parfait pour toutes les sortes d'applications n'existe pas et n'existera probablement jamais.
Aujourd'hui et probablement encore pour un certain temps, la conception d'un langage informatique reste empirique et un langage donné n'est efficace que pour un spectre donné d'applications.
Nous essayons de donner dans la suite les guides principaux qui influent sur nos choix.

Le génie logiciel doit rester le guide essentiel dans la conception et les choix concernant le langage Eiffel.
Il en découle les points fondamentaux suivants :

  • Eiffel est prévu en priorité pour les gros ou même les très gros programmes,
  • Eiffel doit faciliter le travail en équipe, la communication et la documentation,
  • Eiffel doit faciliter la maintenance et le test des composants logiciels.

Bien entendu, l'aspect sécurité est lui aussi au premier plan de nos préoccupations. En plus de l'aspect génie logiciel, nous nous proposons de placer la barre encore plus haut : proposer un langage capable d'exploiter pleinement toutes les ressources de la machine, un langage et des outils véritablement prévus pour obtenir des programmes très performants.

Outils personels
Autres langues