IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

Les meilleurs livres en informatique générale - Informatique théorique

Dernière mise à jour : 13/05/2011


precedent    sommaire    suivant



couverture du livre 'Compilateurs'

Note 4.5

Compilateurs

de Dick Grune, Henri E. Bal, Ceriel J. H. Jacobs, Koen G. Langendoen
Public visé : intermédiaire à avancé

Résumé de l'éditeur

Un compilateur est l'une des parties les plus vitales d'un système informatique. Il permet de traduire un programme écrit en langage évolué (comme Pascal, Ada, C++ ou Java) en un langage simplifié que la machine est capable de comprendre et d'exécuter. Cet ouvrage décrit des techniques de compilation adaptées à tous les langages, logiques, distribués, fonctionnels et orientés objets.

Des techniques d'optimisation et des outils de compilation automatique sont aussi présentés. Des exercices corrigés complètent le cours.

Critique du livre par la rédaction (Florent Humbert)
Cet ouvrage de près de 800 pages très complet traite de tous les outils permettant la conception et la réalisation d'un compilateur. Même si la difficulté est progressive, le livre reste assez délicat à appréhender, mais la réalisation d'un compilateur est de toute manière quelque chose de très difficile.

Le cours traite d'abord des outils théoriques utilisés dans la réalisation d'un compilateur : analyseur lexicale, analyseur syntaxique et analyseur sémantique. Les notions de bases en théorie du langage sont également revues : langage, grammaire, automate, automate à pile... De nombreux détails sont donnés, notamment au niveau des optimisations possibles.

Les auteurs ont donné de nombreux exemples pour permettre de créer un analyseur lexical et un analyseur syntaxique. Soit directement, soit en utilisant un outil externe comme Lex et Yacc (exemples en langage C).

J'ai particulièrement apprécié certains chapitres, notamment l'introduction à des théories un peu à part tel que la gestion de l'allocation dynamique (comment éviter la fragmentation de la mémoire...) et la création d'un ramasse-miette (souvent appelé Garbage Collector).

Ce livre ne s'arrête pas à l'explication de la compilation d'un langage impératif de haut niveau vers un langage impératif de bas-niveau, ce qui est souvent le cas avec ce type de cours, mais explique en détails les techniques de compilation pour des langages fonctionnels, objets et logique, tout en détaillant de nombreuses optimisations possibles. Un chapitre introduit même des outils pour permettre de paralléliser ou de distribuer des algorithmes simples.

Pour finir, le cours donne un exemple complet de réalisation d'un compilateur en Java.

Pour résumer, ce cours est très complet et touche à tous les domaines de la compilation. Des exercices sont proposés à chaque fin de chapitre et de nombreux exemples pratiques sont donnés. Si le lecteur souhaite en savoir d'avantage, la bibliographie est recapitulé pour chaque chapitre, ce qui permet de rapidement s'y retrouver.

Critique du livre par la rédaction (Miles)
On ne parle pas ici des dernières techniques d'optimisation, mais bien de l'architecture et du design d'un compilateur, les fameux front-ends et back-ends. On ne parle pas non plus des techniques utilisées apr les compilateurs les plus récents qui sont cités tout au plus.

En revanche, les différentes étapes de transformation d'un programme sont exposées de manière plus ou moins claire. Il est dommage de connaître un peu les parseurs pour comprendre le chaître qui leur est consacré, tellement les explications sont succintes et donc le chapitre est un peu obscure - on n'explique pas clairement ce qu'est un parseur LL(n) ou LR(n) et leur dérivés, on doit trouver l'explication en inférant sur les éléments donnés -. en revanche, on comprend mieux au fur et à mesure, l'habitude du livre, sans doute.

Contrairement à d'autres livres dont j'ai pu regarder la table des matières, ce livre prend beaucoup de temps pour exposer les spécificités des langages qu'on utilise plus ou moins couremment. Par exemple pour les langages logiques, on n'utilisera pas les mêmes systèmes d'optimisation et de création que pour un langage impératif. On parle toujours de transformer ces langages en C ou C++ qui sera lui utilisé par un compilateur standard.

Dans l'ensemble, un très bon livre plutôt orienté vers les débutants en programmation de compilateurs et les gens désireux d'apprendr eun peu plus sur les compilateurs, même si les premiers devront définitivement compléter leur lecture par des ouvrages spécifiques à chaque sous-partie.

Sommaire

  • Introduction
  • Du texte du programme à l'arbre abstrait
  • Décoration de l'arbre abstrait : le contexte
  • Traitement du code intermédiaire
  • Gestion de la mémoire
  • Programmes impératifs et orientés objet
  • Programmes fonctionnels
  • Programmes logiques
  • Programmes parallèles et distribués
  • Un compilateur/interprète orienté objet simple

800 pages, 1re édition, 2002 Éditions Dunod, ISBN10 : 2-10-005887-8
Commandez sur www.amazon.fr :
56.91 EUR TTC seulement (au lieu de 59.9 EUR TTC : prix éditeur) - Livraison Gratuite !

precedent    sommaire    suivant

Voir également :

Tous les livres de DVP

Valid XHTML 1.0 TransitionalValid CSS!

Copyright © 2005-2011 Developpez LLC Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.