Sortie de SmartEiffel 2.2

Posté par  (site web personnel) . Modéré par Mouns.
Étiquettes :
0
21
déc.
2005
Technologie
L'équipe de développement de SmartEiffel au Loria à Nancy vient de sortir la version 2.2 du logiciel. SmartEiffel est un compilateur pour le langage Eiffel disponible sous licence GNU GPL.

Au programme des nouveautés, côté organisation du projet. On a d'abord assisté à la mise en place d'un wiki, ensuite le projet est arrivé sur InriaGforge qui est la plateforme de développement collaboratif de l'INRIA.

Côté logiciel, on découvre des nouveautés et améliorations dans le changelog. La commande eiffeldoc permet de produire de la documentation à partir des classes (comme javadoc). Le système de plugins qui permet d'intégrer des bibliothèques existantes à du code Eiffel a été amélioré. Un widget gérant OpenGL est disponible dans la bibliothèque Vision. La bibliothèque réseau est maintenant entièrement compatible avec les systèmes POSIX et propose même un serveur HTTP (béta)... Le Langage Eiffel est un langage objet créé par Bertrand Meier. Il s'inspire de plusieurs langages (ALGOL68, Smalltalk...) et dispose de nombreuses fonctionnalités comme l'héritage multiple, la généricité (simple et contrainte), l'héritage de type ou d'implémentation, la programmation par contrat...

Le fait qu'Eiffel reste proche des théories initiales des langages objets a fait de lui un bon langage pédagogique pour appréhender le développement orienté objet.

Il faut cependant noter qu'en mai 2005, après de longues discussions sur la mailing-list l'équipe de SmartEiffel a décidé de ne pas suivre la norme ECMA-367 (ECMA Eiffel) qu'elle considère trop éloignée de "l'esprit initial" du langage.

Aller plus loin

  • # Au programme des nouveautés

    Posté par  (site web personnel) . Évalué à 7.

    Deux changements majeurs accompagnent la migration sur InriaGforge :
    - d'une part, l'abandon de CVS au profit de Subversion.
    - d'autre part, et c'est sans doute le point le plus représentatif de la volonté d'ouverture du projet, la mise à disposition _totale_ des sources.

    Est ainsi rendu disponible le fameux répertoire 'work/' contenant, en autres, les germes du compilateur, divers outils et, surtout, l'ensemble des fichiers de test.

    Pour compléter :
    - le projet sur le site de l'INRIA : http://gforge.inria.fr/projects/smarteiffel/
    - la commande pour récupérer le dépôt en anonyme : svn checkout svn://scm.gforge.inria.fr/svn/smarteiffel
  • # Qu'est-ce que ça veut dire ?

    Posté par  . Évalué à 2.

    Le Langage Eiffel [...] dispose de nombreuses fonctionnalités comme [...] l'héritage de type ou d'implémentations

    Quelqu'un aurait des infos sur la signification de "héritage d'implémentations" ? Je vois pas trop ce que ça peut être...
    • [^] # Re: Qu'est-ce que ça veut dire ?

      Posté par  . Évalué à 5.

      Fais une recherche sur héritage non-conforme. En bref, l'héritage non-conforme (ou d'implémentations) te permet d'hériter des méthodes/variables du parent mais pas de son type.

      Dans le dialecte SmartEiffel (oui, il y a un fork avec Standard Eiffel), le mot-clé insert sert à ça. Si B hérite de A de façon non-conforme, alors un objet de type B pourra utiliser toutes les méthodes héritées de A mais ne pourra pas être affecté à un objet de type A. Au demeurant, toujours en SmartEiffel, il n'y a plus de classe mère de toutes les autres : ANY est "insérée" mais pas "inhéritée" par défaut.

      A+

      ZeGrunt
      • [^] # Re: Qu'est-ce que ça veut dire ?

        Posté par  (site web personnel) . Évalué à 2.

        Juste pour montrer la pertinence des choix fait à l'époque dans Sather... Il y a dans Sather la notion d'héritage d'interface et d'héritage de code (qui s'écrit par un include). Les deux notions sont dissociés (orthogonalisés). Lorsque l'on regarde un arbre de classe dans Sather, on est surpris de la simplicité de l'arbre !

        Un autre avantage est que l'on peux faire du "supertyping", c'est à dire introduire une nouvelle classe en plein milieu d'un arbre de classe déjà fait !
    • [^] # Re: Qu'est-ce que ça veut dire ?

      Posté par  . Évalué à 2.

      On appelle cela aussi de l'heritage privé: tu hérite des méthodes d'un père, mais on ne peut pas pour autant affecté à une variable du type du pere un fils, contrairement a l'heritage public.
      • [^] # Re: Qu'est-ce que ça veut dire ?

        Posté par  . Évalué à 2.

        Quel est l'interêt alors si tu peux pas profiter du polymorphisme ?
        • [^] # Re: Qu'est-ce que ça veut dire ?

          Posté par  . Évalué à 1.

          Eviter de recoder l'implementation deux fois, c'est pour ça qu'on appelle ça l'héritage d'implémentation..

          Ca c'est un truc que je n'ai pas compris avec l'héritage d'interface en Java, chaque Classe héritant d'une interface doit recoder les fonctions, ça représente un gros boulot!
          • [^] # Re: Qu'est-ce que ça veut dire ?

            Posté par  . Évalué à 4.

            L'héritage d'interface est orthogonal à l'héritage de mise en ½uvre.

            - Héritage d'interface : le type est le même mais les mises en ½uvres sont totalement indépendantes ; les classes sont conceptuellement similaires (elles rendent les mêmes services) mais, en interne, elles sont différentes (pas les mêmes attributs, pas les mêmes algorithmes...).

            - Héritage de mise en ½uvre : même mise en ½uvre mais pas le même type ; les classes n'ont pas de lien conceptuel mais le code serait du copier-coller.
  • # En évoquant Eiffel...

    Posté par  . Évalué à 7.

    A propos de SmartEiffel, il faut signaler que l'équipe qui s'en occupe a délibérément décidé d'ignorer les spécifications officielles du langage, désormais édictées par l'ECMA. A l'URL http://www.ecma-international.org/publications/files/ECMA-ST(...) on peut les trouver, et remarquer leur byzantine complication. A côté de ça le seul manque vraiment criant du langage, l'absence de spécifications sur la concurrence, n'est pas abordé.

    Le compilateur propriétaire d'Eiffel Software, fondée par Bertrand Meyer (et non Meier... Bertrand Meyer semble avoir pris de la distance par rapport à la compagnie qu'il a créée et occupe désormais une position académique en tant que président du département de Génie Logiciel de l'ETH, alias l'Ecole Polytechnique Fédérale de Zurich, dont est issu un certain Albert Einstein, mais c'est une autre histoire...) dispose d'une gestion des threads, mais celle-ci est une particularité de ce compilateur lui-même particulier, bref n'est pas issu d'une norme et n'en crée pas une.

    On peut noter que Bertrand Meyer dans Object Oriented Software Construction deuxième édition, dont on peut trouver chez Eyrolles une traduction française sous le titre Conception et Programmation Orientées Objet http://www.eyrolles.com/Informatique/Livre/9782212091113/liv(...) propose une conception de la concurrence, SCOOP (Simple Concurrent Object-Oriented Programming) d'une remarquable simplicité pour l'utilisateur. Cette simplicité est à rapprocher de la simplicité d'utilisation des autres concepts réunis dans Eiffel (héritage multiple et répété, généricité simple et contrainte, conception par contrats). Simple pour l'utilisateur, certes, une autre paire de manches quand il s'agit de construire un compilateur ! Les concepts d'Eiffel définis dès 1984 ont attendu une dizaine d'années pour voir leurs premières implémentations. Il est à craindre que l'implémentation de SCOOP dans un compilateur soit d'un ordre de difficulté encore supérieur à celui de la totalité de celle des précédents concepts. Autant dire, surtout que (malheureusement) le succès d'Eiffel n'est pas de nature à submerger le reste, ce sera probablement pour une prochaine fois et pour un autre langage. On peut cependant noter avec espoir que l'équipe de SmartEiffel continue de faire figurer l'implémentation de SCOOP dans la liste des future improvements http://smarteiffel.loria.fr/papers/future.html sur leur site.

    Il reste désormais trois compilateurs Eiffel (quatre si l'on considère à part le compilateur pour Mac d'Object Tools) : ISE Eiffel http://eiffel.com/ , SmartEiffel qui est le sujet de cette nouvelle et celui d'Object Tools, Visual Eiffel http://www.visual-eiffel.com/front_content.php qui est depuis juillet, dans l'indifférence générale, passé en GPL. Visual Eiffel a les caractéristiques suivantes : il respecte la troisième version du langage, antérieure, celle avant que soit définie la notion (mal nommée) d'agent. Il semble par contre qu'il respecte avec une grande rigueur cette spécification. La deuxième particularité est qu'il engendre directement un fichier exécutable, à la différence des deux autres qui utilisent le C comme langage intermédiaire. La troisième particularité est qu'il ne supporte que l'architecture i386, et c'est une grosse restricition.

    Pour de plus amples informations, plongez dans les liens. Je ne peux toutefois pas m'empêcher de paraphraser Frank Zappa : Eiffel is not dead, but it smells ffunny.
    • [^] # Re: En évoquant Eiffel...

      Posté par  . Évalué à 2.

      Une petite imprécision : Bertrand Meyer n'est pas président du département de Génie Logiciel mais titulaire de la chaire de Génie Logiciel de l'ETH.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.