Dragon book
Compilateurs : principes, techniques et outils (en anglais Compilers: Principles, Techniques, and Tools) est un ouvrage de référence en informatique dans le domaine de la compilation, écrit par Alfred V. Aho, Ravi Sethi et Jeffrey D. Ullman. Il traite de tous les aspects scientifiques et techniques de la construction de compilateurs.
Il est connu sous le nom de Dragon book (en français Livre au dragon) en raison de l'image de couverture qui, sur toutes les éditions successives, représente un combat entre un chevalier et un dragon. Les différentes versions sont couramment identifiées par la couleur du dragon[1].
Historique et éditions successives
[modifier | modifier le code]Le Dragon book fait suite à un premier ouvrage jamais traduit en français, (en) Principles of Compiler Design, écrit par Alfred V. Aho et Jeffrey D. Ullman. Cet ouvrage, publié en 1977, comportait déjà un dragon sur sa couverture. Pour cette raison, et compte tenu de la couleur dudit dragon, il est parfois connu sous le nom de Dragon book vert en anglais : Green Dragon Book, bien qu'il ne s'agisse pas à proprement parler d'une version du Dragon book décrit ici.
La première édition du Dragon book a été publiée en anglais en 1986[2]. La version française de cette première édition[3] date de 1989. Les traducteurs en sont Pierre Boullier, Philippe Deschamp, Martin Jourdan, Bernard Lorho et Monique Mazaud. En raison de la couleur du dragon sur les versions en anglais et en français, cette première édition est parfois appelée Dragon book rouge en anglais : Red Dragon Book.
La seconde édition du Dragon book a été publiée en anglais en 2006 chez Pearson, avec Monica S. Lam comme quatrième coauteur. Elle est surnommée Dragon book pourpre (Purple Dragon Book) en raison de la couleur du dragon sur la couverture. La version française est parue en [4]. Les traducteurs en sont Philippe Deschamp, Bernard Lorho, Benoît Sagot et François Thomasset.
Contenu
[modifier | modifier le code]Les thèmes traités dès la première version du Dragon book sont les suivants :
- Structure d'un compilateur
- Analyse lexicale (y compris les expressions régulières et les automates finis)
- Analyse syntaxique (dont les grammaires non contextuelles, l'analyse LL, l'analyse ascendante et l'analyse LR et LALR)
- Traduction dirigée par la syntaxe
- Vérification de types
- Environnement d'exécution
- Génération de code
- Optimisation de code
La seconde édition est une mise à jour profonde de l'ouvrage, avec de nouveaux thèmes tels que :
- Nouvelles analyses de flots de données
- Machines parallèles
- Localité des données
- Compilation juste-à-temps
- Ramassage de miettes en anglais : garbage collection
- Pipeline logiciel
- Analyse de dépendances
- Transformations de boucles, transformations affines
- Analyse interprocédurale
- Analyse de pointeurs
- Analyse et Datalog
- Analyse et diagrammes de décisions binaires
Notes et références
[modifier | modifier le code]- Pourquoi un dragon ? L'inscription sur le torse du dragon, « Complexity of Compiler Design » (Complexité de la conception d'un compilateur) explique ce choix : pour les auteurs, un compilateur est un objet d'une complexité tellement formidable qu'on peut le considérer comme un monstre invincible si l'on n'utilise pas les bons outils, intellectuels et logiciels, exposés dans un livre comme celui-ci…
- Aho, Sethi, Ullman, Compilers: Principles, Techniques, and Tools, Addison-Wesley, 1986. (ISBN 0-201-10088-6)
- Aho, Sethi, Ullman, Compilateurs : principes, techniques et outils, InterÉditions, 1989 (ISBN 2-7296-0295-X). Réédité chez Dunod en 2000 avec le titre Compilateurs : principes, techniques et outils — Cours et exercices. (ISBN 2-100-05126-1)
- Aho, Lam, Sethi, Ullman, Compilateurs : principes, techniques et outils, 2e édition, Pearson Éducation France, 2007. (ISBN 978-2-7440-7037-2)