Liens connexes

Dépêche modérée par

: Critique de livre : le langage ADA

Posté par Fabien Penso (Jabber id, page perso, ). Modéré le 03 décembre 2002.
0
La concurrence est un des points forts du langage Ada. La lecture de l'Ada Reference Manual (ARM) permet difficilement de se faire une idée de la mise en oeuvre de cet aspect du langage. Cet ouvrage écrit par deux figures de la programmation concurrente et praticiens de ce langage devrait vous aider à faire vos premiers pas.

> Lire la suite (39 commentaires, moyenne: 1,6).   [dépêche : 12964 caractères]

Concurrency in Ada.
Auteur Alan Burns et Andy Wellings
Editeur Cambridge University press
ISBN 1-57870-190-2
Pages 390
Prix Prix Constaté 47.47 Euros
Rédacteur trollhunter
Couverture

Le premier chapitre est une présentation rapide des principaux aspects du langage. Bien que l'un des prérequis pour la lecture de cet ouvrage soit une familiarité avec un langage de type Pascal, il est tout de même préférable d'avoir programmé en Ada avant de se lancer dans l'étude de ce chapitre.
Les exemples sont bien choisis et on sent à leur lecture que les auteurs ont une grande pratique de ce language: le code est très clair, limpide aurait-on envie de dire.

Le chapitre suivant aborde la notion de programmation concurrente au travers d'un exemple simple de contrôle de la température. Bien que simple en soi, l'exemple recèle de nombreuses difficultées et leur ébauche de solution en Ada95 est magistrale: les auteurs maîtrisent parfaitement leur sujet. Dès ce chapitre deux constantes de l'ouvrage apparaissent:

Le troisième chapitre est lui consacré à la communication interprocess. Les exemples sont classiques et leur résolution permet d'introduire des concepts Ada qui seront approfondis dans les chapitres ultérieurs tels les tâches, les sémaphores et la communication par objet partagé ainsi que le Rendezvous. Si on devait résumer l'esprit de ce chapitre en une phrase, ce serait "La pratique ce n'est pas trivial !"

Les tâches font partie intégrante du langage et une petite comparaison entre les normes Ada83 et Ada95 permet de se faire une idée du chemin parcouru en une dizaine d'années.
Ce quatrième chapitre permet donc de se familiariser avec les tâches que l'on retrouvera tout au long de l'ouvrage. Dès le premier exemple oû une station service, ses pompes et le personnel sont présentés sous forme de tâches, on ne peut rester insensible à la beauté de ce langage : des déclarations à l'implémentation, tout semble se mettre en place naturellememnt. Autre exemple, le crible d'Eratosthene implémenté sous forme de tâche.
Puisque dans la station service nous avions un tableau de tâches pour représenter les pompes nous allons cette fois ci nous familiariser avec les hiérarchies de tâches.

Les deux chapitres suivants traitent du Rendezvous, mécanisme de base de communication directe entre tâches. Au cours de ces deux chapitres les auteurs au cours d'exemples de complexité croissante mettent en oeuvre ce mécanisme et vous apprendrez progressivement à contrôler ce mécanisme. Chose rare et c'est important de le signaler, les auteurs vous montrent non seulement ce qu'il faut faire mais vous montrent aussi ce qu'il ne faut pas faire en vous en expliquant pourquoi. Ceci devrait vous permettre de gagner un temps précieux, si dans vos essais vous voyez un motif à éviter émerger, vous pourrez vous arrêter à temps.

Le septième chapitre vous apprend les ficelles de la communication par objet protégé. Les auteurs commencent par le type protégé le plus simple. Puis, au fil du chapitre la complexité s'accentue. Après le problème des lecteurs écrivains, on arrive aux pragmastrès pointus Volatile, Volatile_Components, Atomic, Atomic_Components avec à chaque fois des explications détaillées et les avertissements de rigueur. Il apparaît clair que les auteurs maitrisent le sujet et qu'ils ont beaucoup pratiqué.

Le chapitre suivant passe en revue la résolution des problèmes de synchronisation à l'aide de requeue. Une fois encore, les explications théoriques et la pratique sont équilibrées avec un exemple très complet de transport ferroviaire de voyageurs dans des stations sur un parcours circulaire: c'est pire que des lemmings.

Le neuvième chapitre permet au lecteur de souffler un peu et de mettre en pratique ses connaissances fraîchement acquises concernant les objets protégés puisque ceux ci seront les briques de base des sémaphores, des signaux persistants, du pulse, des tableaux, des buffers, du broadcast et enfin des barrières. Nul doute qu'à la fin de ce chapitre vous saurez choisir et implémenter efficacement vos interactions entre les tâches.

Tout n'est pas pour le mieux dans le meilleur des mondes et de nombreuses applications doivent s'exécuter dans des environnements changeants de manière imprévisible, voir en mode dégradé. Aussi, il faut savoir gérer les exceptions. Ce n'est nullement un problème en Ada puisque c'est aussi un des très nombreux points forts de ce langage. Dans ce chapitre sont aussi traités le transfert asynchrone de contrôle et l'utilisation judicieuse de abort. C'est à l'aide d'exemples du monde réel tels le changement de mode de fonctionnement ou la reprise sur erreur. Les concepts et les solutions mis en oeuvres sont relativement simples, c'est leur combinaison qui rend les choses complexes : les auteurs arrivent à surmonter cet écueuil et à expliquer les interactions entre les différentes parties de leur solution tout en restant très simple. C'est vraiment du grand art !

Une des nombreuses annexes du langage la "Systems Programming" est mise en oeuvre dans le onzième chapitre qui se propose de vous montrer les interactions entre les tâches et la programmation système. A la fin de ce chapitre vous aurez une bonne idée de la façon dont sont écrits les gestionnaires de périphériques en Ada.

Ada est aussi bien entendu un langage temps réel. Ce chapitre se propose de vous donner un petit aperçu de ses possibilitées et des interactions entre les annnexes "Systems Programming" et "Real-Time Systems". Vous saurez gérer les priorités dynamiquement avec l'écriture d'un petit ordonanceur. Le profil Ravenscar (Pour plus d'informations consultez la note en fin de cette critique) est survolé avec la liste de ses pragmas.

C'est un fait peu connu mais le premier langage objet standardisé est Ada. Après un rapide survol de l'Objet en Ada les auteurs réimplémentent les buffers et tableaux vus au chapitre 9 sous forme objet. Puis c'est l'interaction des tâches et du modèle objet qui est examinée.

Le quatorzième et avant dernier chapitre fait le point sur un domaine oû de nombreux problémes de concurrence se manifestent : les systèmes répartis. En effet, Ada avec l'annexe "Distributed Systems" gère aussi très bien la programmation distribuée. Encore faut-il savoir la mettre en oeuvre. C'est justement le but de ce chapitre oû une fois encore la théorie et la pratique s'équilibrent. Après un rapide rappel du répartit en Ada le crible d'Eratosthene fait un retour inattendu : c'est vraiment très beau. Puisque l'objet a été abordé dans le chapitre précédent ce chapitre se termine par les objets distribués.

Un dernier chapitre vient conclure cet ouvrage en résumant ce qui a été vu précédemment. Tout en fournissant une ouverture sur un avenir potentiel d'Ada.

Cet ouvrage réussit à présenter les différents problèmes de la programmation concurrente et leurs solutions possibles en Ada95 tout en préservant un juste équilibre entre théorie et pratique. Trop souvent les exemples trouvés dans les livres sont du type "hello world" et s'avèrent inadaptables au monde reel. C'est un eccueil que cet ouvrage a su éviter puisque les exemples sont bien choisis, assez simples sans être simplistes.
Le style des auteurs est clair, ils vont à l'essentiel et savent justifier leurs choix. Les concepts et les chapitres ne se suivent pas au hasard ; on sent que le livre suit un plan qui est m$ûrement réfléchit : c'est un ouvrage qui a demandé beaucoup de travail et ça se voit.
Autre point positif de cet ouvrage ; c'est un livre qui se lit aussi avec le clavier c'est à dire qu'au fil des pages on se retrouve tout naturellement en train de taper les exemples et de les modifier histoire de voir ce qui se passe : un vrai plaisir.

Au chapitre des regrets, les auteurs sont quelques peu optimistes lorsque dans les prérequis ils citent une connaissance d'un langage de la famille Pascal. En effet, contrairement à ce que sa syntaxe peut laisser penser, Ada n'est pas un autre Pascal. Car si l'on peut effectivement faire quelque chose ressemblant à du Pascal en Ada ; ce ne sera pas de l'Ada et ce n'est pas avec le premier chapitre que l'on pourra acquérir une pratique du langage suffisante pour pouvoir retirer le plein potentiel de cet ouvrage. Mais la liste des références fournies en fin de critique devrait vous permettre d'acquérir cette dernière.

Même si l'on ne connaissait pas Ada avant, au fur et à mesure des pages on en vient à se dire que c'est vraiment un très beau langage, très bien conçu et pour peu que l'on s'informe un minimum on se rend compte qu'il a vraiment fait ses preuves et ce depuis de nombreuses années.

Le prix de cet ouvrage est d'autant plus raisonable qu'il est concu pour durer. La seconde édition présentement passée en revue date de 1998 et est toujours d'actualité. En outre, alors que nombres d'ouvrages récents sont physiquement fragiles et trop grands ou trop petits, ce livre est solide et possède juste les bonnes dimensions pour être utilisé au bureau ou dans les transports.
En conclusion, si la programmation concurrente vous intéresse, c'est vraiment l'ouvrage à posséder.


Table des matières

Références

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

Re: Critique de livre : le langage ADA

Posté par Harry Cover () le 03/12/2002 à 15:28. (lien). Évalué à 0.

Article très sympa, peut-être à la rigueur manque-t-il le petit logo "publi-information" en petit caractère en bas à gauche, et un lien direct sur amazon pour acheter le livre en 1-click.

Sinon au lien de proposer des bouquins propriétaires, peut-être eut-il été pertinent de mettre des liens vers des ouvrages gratuits ? Par exemple http://www.vaxxine.com/pegasoft/homes/book.html(...) ou http://www.adahome.com/Tutorials/(...) ?

Re: Critique de livre : le langage ADA

Posté par kesako () le 03/12/2002 à 15:41. (lien). Évalué à 1.

qui utilise ada en france et pourquoi ?

Re: Critique de livre : le langage ADA

Posté par Benoît Bailleux (Jabber id, ) le 04/12/2002 à 07:18. (lien). Évalué à 1.

C'est pas pour jouer les rabat-joie, mais une fois de plus, il y a un scrouitch dans la traduction : Concurrent ne se traduit pas par concurrent, mais plutôt, au choix, par concourant, concomitant ou simultané.
En aucun cas les processus ne cherchent à se concurrencer, mais juste à s'exécuter simultanément et proprement ...

--
BB

Revenir en haut de page