Enseigner Ada, pourquoi ?, à qui ?, comment ? Choisir un langage : entre le tentant et le raisonnable !


précédentsommairesuivant

V. Les aides et les outils

A. Les compilateurs

Les compilateurs ont tous la propriété de respecter la norme (tests de validation obligatoires). Pour évidente qu'elle paraisse cette remarque n'est pas toujours valable avec les langages concurrents ! Ada est implémenté sur pratiquement tous les environnements et tous les systèmes. Citons :

GNAT (version commerciale Pro chez Ada Core Technologies) et le gratuit Object Ada (société Aonix) décliné en plusieurs versions, permet des GUI et même des applets Java !

Apex (société Rational Software)

Softech (ex Intermetrics).

et aussi : GreenHills, RR -Software et Irvine

Contrairement aux rumeurs, Ada n'est ni trop lent ni ne génère du code volumineux. Gnat (par exemple) utilise les mêmes environnements que les autres langages du GNU Compiler Collection, communément appelé GCC. Il existe aussi des directives pour obtenir l'effet souhaité (l'option -largs -s par exemple). On notera aussi comme curiosité que les 3/4 du compilateur GNAT est écrit en ... Ada !

B. Les environnements de développement (I.D.E.)

Les I.D.E. permettant de développer en Ada sont nombreux et ... de qualité. Les gratuits ont ici notre préférence.

AdaGide (exclusivement Windows) ainsi que Grasp, Glide, Emacs (disponibles aussi avec Linux), etc.

Une dernière nouveauté (disponible récemment) et à notre avis sans concurrent c'est : G.P.S. (Gnat Programing System) il inclut, entre autre, un débugger graphique (ex GVD déjà disponible) et un navigateur dans les sources ! A voir en priorité (sur tout système) !

Le graphisme et Ada

GtkAda est une bibliothèque de composants graphiques permettant de créer des interfaces utilisateur et de faire du dessin.

GtkAda est un logiciel libre, fondé sur Gtk+, et disponible sur la plupart des plate-formes.

La page principale est en http://libre.act-europe.fr/GtkAda

Cette bibliothèque permet de faire aussi bien de simples applications que des interfaces très évoluées, comme par exemple GPS, un environnement de développement écrit en Ada: http://libre.act-europe.fr/gps (voir plus haut rubrique I.D.E.)

GtkAda peut aussi être utilisé avec un générateur d'interfaces ("GUI builder") appelé "Glade", à ne pas confondre avec l'autre Glade, qui permet de faire du développement d'interfaces distribuées en Ada.

C. Internet et Ada

AWS est un serveur Web, sous forme de bibliothèques, que l'on peut embarquer dans toute application Ada. Ceci permet à l'application de communiquer avec l'extérieur en utilisant le protocole HTTP. Une utilisation courante d'AWS est d'embarquer l'interface graphique de l'application sous forme de pages Web. L'utilisateur peut alors piloter ou récupérer les données de l'application en utilisant un simple navigateur Web. Outre le protocole HTTP, AWS gère aussi HTTPS (HTTP sécurisé), LDAP, SMTP, SOAP, WSDL, ... En une dizaine de lignes de code, AWS sait aussi devenir un simple serveur de pages Web. La version A.W.S. 1.3 (dernière version distribuée lors de l'écriture de ce document) a été utilisée dans de nombreux projets et dans différentes entreprises. Bien que, lorsque l'on parle de serveur Web, on entend Apache (incontestable leader sur le marché), AWS par son approche « embarquée » a déjà séduit un ensemble d'utilisateurs. Il est aussi intéressant de mentionner que cela permet de faire une application "classique" dont l'interface utilisateur est réalisée par un browser. Exemple: un pilote de processus (ou d'expérience scientifique) que l'on peut contrôler à distance.

S'il est incontestable que Ada est, dans la plupart des esprits, associé au temps réel et aux codes à haute criticité, on voit que AWS est un bon exemple prouvant (si cela était nécessaire) qu'Ada est aussi bien adapté au monde des systèmes d'information.

D. Les Bases de Données et Ada

Voir le projet GNADE (à voir en priorité).

Si GNADE est la référence pour l'embedded SQL, il y a aussi des interfaces directes, notamment via ODBC.

E. Méthodes et Ada

Le choix d'une méthode part, à peu près, du même constat que pour les langages. En ce qui nous concerne ici, une fois le choix d'Ada fait, le développeur qui cherche ce qui le guidera vers une application bien conçue se retrouve à choisir entre du sérieux ou du tentant.

Le tentant c'est ce qui est en vogue. En effet, en faisant ce que fait tout le monde on risque moins d'être vu comme un « extra terrestre » et moins critiqué si l'on a des difficultés. Dans ce cas le choix actuel c'est UML, langage supporté par un rouleau compresseur médiatique (l'université étant loin, d'ailleurs, d'y être étrangère car la course aux publications pousse à s'intéresser au plus récent). Si nous avons qualifié UML de langage et non de méthode c'est qu'UML ne véhicule pas de démarche à proprement parler. Il faut donc que chacun trouve sa propre démarche pour la formaliser grâce à la notation qui, elle, est formalisée.

Le sérieux (sous ce vocable nous entendons par là : éprouvé, solide, et efficace) c'est HOOD :

éprouvé : car l'industrie aérospatiale a développé suffisamment d'applications de grande envergure avec cette méthode pour que l'on ait un retour d'expérience conséquent (Ariane, Colombus, Eurocopter et bien d'autres),solide : car ce retour d'expérience a démontré la qualité induite par la méthode et la robustesse du logiciel en découlant,efficace : parce que terriblement bien inscrite dans le cycle de vie du logiciel. Méthode idéale pour le partage industriel (la démarche « top down », qui formalise les interfaces avant partage, a prouvé son efficacité) elle est, à l'autre bout de la chaîne idéale pour la maintenance du code. En effet la qualité de la génération de code (facilitée par la parfaite bijection entre les concepts HOOD et les concepts Ada) permet (chose rare) de pouvoir non seulement produire mais aussi maintenir le code à travers l'outil de conception. Et encore cette totale adéquation est-elle très sous-employée (qui a utilisé de façon opérationnelle le concept de nœuds virtuels de HOOD qui permet la seule vraie répartition reconfigurable ?).

On peut, pour essayer de gagner sur (presque) tous les tableaux, faire du HOOD en notation UML. Si l'on concilie ainsi la rigueur et la « persuasion », on en perd un peu les facilités de génération de code Ada (puisque on fera ça avec des outils UML et non pas des outils HOOD).

Le débat entre courant principal et courant d'excellence est difficile à mener dans l'industrie car il faut souvent plus convaincre politiquement que techniquement. Dans l'enseignement cette question devrait être moins cruciale et il est de la responsabilité des enseignants de donner aux étudiants toutes les armes pour choisir en toute connaissance de cause. Ils seront bien, assez tôt amenés, à choisir en prenant en compte ces contraintes politiques. Un étudiant capable de comprendre une spécification exprimée en UML (sans rivale à ce niveau), de concevoir en HOOD le logiciel qui répondra à ces spécifications et de générer l'application Ada (avec, par exemple, une répartition reconfigurable grâce à l'annexe Ada 95) sera bien armé pour aborder sa première application industrielle.

F. Des bibliothèques

Les bibliothèques Ada sont nombreuses et variées.

Les bibliothèques officielles (obligatoires avec le compilateur du langage) :1) annexe A (manipulations des caractères, des strings, des numériques, des fonctions mathématiques, des fichiers (textes, directs, séquentiels, flots).

2) annexe B (interfaçages)

3) gestion du temps, types contrôlés, gestion des exceptions, système, etc.

Les bibliothèques supplémentaires (pratiquement proposées gratuitement avec tous les compilateurs Ada) :

1) programmation système (annexe C) gestions d'interruptions, attribut de tâches2) temps réel (annexe D) gestions des files d'attentes et ordonnancement, délais, priorités, tâches synchrone et asynchrone.

3) systèmes distribués et applications réparties (annexe E) partitions, appels distants, objet distribué.

4) numériques (annexe G) nombres complexes, attributs.

5) systèmes d'information (annexe F) arithmétique décimale, picture à la Cobol.

6) sûreté et sécurité (annexe H) exigences, pragmas de sécurité.

Les bibliothèques Ada libres sur le Net voir ci dessous.

G. Interfaçage avec d'autres langages

Ada (et cela peut surprendre) permet, souvent, de faire ce qui est réalisable dans un langage de bas niveau comme le C (on va en voir un exemple). Par contre, le compilateur Ada (pour faire du bas niveau) obligera le programmeur à préciser explicitement les opérations dangereuses (du genre Unchecked). En C le mode dangereux est le mode par défaut totalement antinomique avec Ada qui demande beaucoup plus d'efforts (prix à payer pour du code plus fiable).

Cependant, Ada permet d'utiliser des composants écrits dans d'autres langages : C, Fortran ou Cobol (et même dans les deux sens) grâce à des paquetages (fils de Interfaces) et des pragmas (directive pour le compilateur) assez simples à mettre en œuvre.

Pour interfacer Ada avec un autre langage (normalisé !) il faut que Ada manipule des types qui soient « homogènes » avec leur équivalent dans l'autre langage. Par exemple pour interfacer le C on dispose en Ada du paquetage Interfaces.C qui déclare de nouveaux types Ada mais possédant une structure compatible avec les types équivalents en C. En effet si en C l'implémentation des types prédéfinis est précisée par la norme en Ada l'implémentation est laissée au compilateur. Pour en savoir plus.

On notera donc que si certains modules écrits en C sont intéressants Ada peut les intégrer. Mais C n'est pas incontournable pour accéder au bas niveau car rien n'empêche de programmer, en Ada, des applications de bas niveau. A titre d'exemple on peut consulter un petit bout de code Ada permettant de travailler au niveau du bit (sans masque et autre xor) mais surtout en gardant une vision de haut niveau. Ce bout de code montre une manipulation que le C est incapable de réaliser sans un masque xor, démarche peu lisible et sujette à erreur d'interprétation notamment lors d'une maintenance. Dans cet exemple (comme dans d'autres), Ada est mieux adapté à la programmation de bas niveau que le C.

On peut aussi citer les interfaçages avec Tcl/TK, Python, Java, C#, et Lua

H. Traducteurs avec d'autres langages

Acceptent en entrée du codage en C, Pascal ou Fortran pour produire en sortie du code Ada

C : appelé C2Ada voir l'adresse pour en savoir plus

Pascal : appelé P2Ada chez G. de Montmollin

Fortran : appelé F2Ada.

I. Livres, cours, didacticiel

Les livres de cours Ada (en français) sont peu nombreux : Programmer en Ada95 de Barnes (traduit), Programmation séquentielle avec Ada95 ainsi que Programmation concurrente et temps réel avec Ada95 de P. Breguet et L. Zaffalon.

D'autres livres incontournables associant génie logiciel et Ada : Ingénierie du logiciel avec Ada de Grady Booch (antérieur à Ada95) et Méthodes de génie logiciel avec Ada95 de J.P. Rosen (également traducteur du livre précédent). Ce dernier livre (sûrement victime de son succès) est épuisé ! Mais l'auteur se propose, à terme, de le mettre en "libre" sur le Net (Adalog à suivre).

Un cours Ada95 (avec des TD et des TP) au format PDF (1 Mo) de D. Feneuille téléchargeables sur Internet voir l'adresse http://libre.act-europe.fr/french_courses

Un cours complet et détaillé avec exercices format PDF de G. Coray (EPFL) http://lithwww.epfl.ch/teaching/cmp/polycop.html

Des cours et des exercices divers et variés (notamment systèmes et temps réel avec Ada) au CNAM :http://deptinfo.cnam.fr/Enseignement/CycleA/APA/200x/INDEX/APA_HTO.htmlhttp://deptinfo.cnam.fr/Enseignement/CycleA/SD/<link href="http://deptinfo.cnam.fr/Enseignement/CycleProbatoire/Vari/">http://deptinfo.cnam.fr/Enseignement/CycleProbatoire/SRI/Systemeshttp://deptinfo.cnam.fr/Enseignement/CycleSpecialisation/ACCOV.

Un article assez récent dans "le monde informatique" (exemples intéressants d'applications industrielles développées en Ada)

Un didacticiel, (le seul !), complet (mais hélas en anglais) de l'E.P.F.L. : Lovelace.

D'autres ouvrages où Ada est bien illustré :

1) Algorithmes et structures de données avec Ada, C++ et Java, A. Guerid, P. Breguet, H.Roethlisberger, PPUR, 2002

2) Structures de données en Java, C++ et Ada 95, Ch. Carrez, InterEditions (1997)3) Initiation et auto-formation à la programmation informatique, Canesi et Suc, Ellipses. 4) Vers Ada 95 par l'exemple, Fayard et Rousseau, De Boeck Larcierles titres des deux premiers ouvrages parlent d'eux mêmes (on verra avec intérêt une comparaison entre les trois langages)

le troisième est un livre dédié aux vrais débutants en programmation où les premiers concepts sont illustrés avec Ada.

le quatrième permet de découvrir le langage avec des exemples simples pour un premier contact.

5) Orientation objet, structures de données et algorithmes (Ada95) de Philippe Gabrini. (ISBN : 2-7613-1028-0)


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2003 Daniel Feneuille Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.