Adorons Jésus-Eucharistie! | Accueil >> Varia >> Génie logiciel
2) Commentaires généraux sur les livres d'informatique
3) Génie logiciel en général
4) Livres de C++ pour les tronches («geeks»)
5) Livres plus spécialisés
6)
Quelques mauvais livres d'informatique
Voici selon moi quelques bons livres de génie logiciel (SVP me le dire si vous en connaissez de meilleurs!). J'ai essayé de les trier grosso modo en ordre décroissant d'importance. En d'autres mots, si vous allez être perdus sur une île déserte, chargez votre radeau de sauvetage en commençant avec le haut de cette liste!
Aussi, attention aux éditions! Normalement, vous devriez acheter la plus récente. C'est aussi une raison pour éviter les traductions françaises (qui sont généralement en retard d'au moins une édition). Voir aussi la Section 3.6 de Comment choisir un bon livre pour des maisons d'édition à éviter, ainsi que la liste sus-mentionnée de mauvais livres.
Code Complete, 2nd Ed.
McCONNELL, Steve. Microsoft Press, 2004.
Excellent livre. L'auteur explique comment programmer (comment coder, commenter, débugger, comment s'améliorer en tant que programmeur, etc). C'est un livre inspirant, et son auteur a transformé et continue de transformer le paysage du Génie logiciel.
The C++ Programming Language, Special Edition
STROUSTRUP, Bjarne. Addison-Wesley, 2000.
Voilà LE livre de C++, incontestablement. De plus, l'auteur est quasiment un philosophe: il ne parle pas seulement du C++, mais aussi des relations humaines, de la conception, de la gestion de projet, les paradigmes de programmation, etc. Ce livre est gros, cher, et plus difficile à lire, mais il remplace plusieurs livres moches sur le C++ et la programmation orientée-objet (que j'ai fini par jeter). Un investissement sûr.
Object-Oriented Analysis and Design, with applications, 3rd Ed.
BOOCH, Grady, et al. Addison-Wesley, 2007.
Très bonne introduction à tout ce qui s'appelle Orienté-Objet. Son auteur est un des trois inventeurs de la notation UML, et un des inventeurs de la conception orientée-objet. L'organisation du livre en trois parties est excellente: d'abord les concepts (qu'est-ce qu'un système? un objet? etc.), ensuite la notation (UML 2.0), et enfin des EXEMPLES d'architectures.
Désavantages: Je pense que ce livre pourrait être écrit en anglais moins verbieux, avec moins de publicité extravagante pour la méthode orientée-objet.
Structured Computer Organization, 5th Ed.
TANENBAUM, Andrew S. Pearson/Prentice Hall, 2005.
Mais quel auteur agréable à lire! Il est drôle, concis, clair. Ce livre explique comment fonctionne un ordinateur, en prenant trois exemples: le Pentium, le UltraSparc II, et le PicoJava.
Operating Systems; Design and Implementation, 2nd Ed.
TANENBAUM, Andrew S. Prentice Hall, 1997. (3e éd., 2006, est disponible)
Un livre sur les systèmes d'exploitation en général, et Minix en particulier (l'ancêtre de Linux). Code source, CD-ROM, etc. La matière sur les systèmes d'exploitation semble bien correcte.
Désavantages: J'ai de sérieuses réserves sur le code source de Minix. Remarquez que je ne veux pas dénigrer cet auteur qui est très bon. C'est en fait une plainte générale contre «L'univers du C», les choses codées en C, pas orientées-objet, et pas documentées avec UML. Plusieurs personnes (et plusieurs compagnies) codent comme ça, mais c'est mal. Le même système d'exploitation bien codé en C++, avec une bonne documentation en UML serait beaucoup plus facile à comprendre. Si Linux avait été basé sur un tel «Minix-Moderne», Microsoft serait peut-être mort depuis longtemps.
Computer Networks, 4th Ed.
TANENBAUM, Andrew S. Pearson/Prentice Hall, 2003.
Excellent livre d'introduction sur les réseaux.
Software Project Survival Guide
McCONNELL, Steve. Microsoft Press, 1998.
Si vous devez n'avoir qu'un seul livre sur la gestion de projet, le voici! Court, plein de bonnes références, pratique.
Rapid Development; Taming Wild Software Schedules
McCONNELL, Steve. Microsoft Press, 1996.
Si vous êtes étudiant, vous ne comprendrez pas trop le rapport de ce livre. Si vous êtes sur le marché du travail, ce livre peut vous sauver! La vie du programmeur est une lutte perpétuelle pour ne pas manquer l'échéance. Ce livre explique comment diminuer la probabilité de retards dans l'échéancier.
Distributed Systems: Principles and Paradigms
TANENBAUM, Andrew S. Prentice Hall, 2002. (2e éd., 2006, est disponible)
Apparement, une introduction potable sur les systèmes répartis.
Professional Software Development: Shorter Schedules, Higher Quality
Products, More Successful Projects, Enhanced Careers
McCONNELL, Steve. Pearson Education, 2004.
McCONNELL défend la nécessité pour les programmeurs de mieux se former, de suivre des cours de génie logiciel (et non pas d'informatique), et d'être membre d'une association professionnelle, etc.
Modern Operating Systems, 2nd Ed.
TANENBAUM, Andrew S. Prentice Hall, 2001. (3e éd., 2007, est disponible)
Un autre livre sur les systèmes d'exploitation de Tanenbaum, mais plus théorique.
An Embedded Software Primer
Simon, David E. Addison-Wesley, 1999.
Un bon petit livre d'initiation aux systèmes embarqués. Nécessaire dans la formation d'un programmeur. Mais c'est vraiment un livre de rudiments pour les programmeurs. Si vous êtes plus une personne du côté «matériel» que «logiciel», ce livre sera trop simple pour vous.
Doing Hard Time; Developing Real-Time Systems with UML, Objects, Frameworks
and Patterns
DOUGLASS, Bruce Powel. Addison-Wesley, 1999.
Avec un titre comme ça, le livre doit être épais! Oui, il est épais, et bon! M. Douglass est drôle, compétent et il explique bien les systèmes temps réel.
Fundamentals of Database Systems, 3rd Ed.
ELMASRI, Ramez, NAVATHE, Shamkant B. Addison-Wesley, 2000 (5e éd., 2006,
est disponible)
Une brique d'introduction sur les bases de données. Un peu trop étriqué à mon goût comme présentation, mais c'est bon et complet.
Designing the User Interface, 3rd Ed.
SHNEIDERMAN, Ben. Addison-Wesley, 1998. (4e éd., 2004, est disponible)
Un livre de référence sur les interfaces usager. J'aimerais en connaître un meilleur.
Programming Pearls,
BENTLY, Jon. Addison-Wesley, 1989.
More Programming Pearls; Confessions of a coder
BENTLY, Jon. Addison-Wesley, 1990.
Deux petits livres qui rassemblent des articles écrits par M. Bently parus dans la revue «Communications of the ACM». Il est drôle, intelligent, et présente des problèmes de programmation vécus ainsi que les solutions ingénieuses. Pas essentiel, mais c'est bon pour la culture! Moi j'aime bien son chapitre sur «Bumper-Sticker Computer Science», avec des proverbes du genre «When in doubt, use brute force!» :-)
Principles of Software Engineering Management
GILB, Tom. Addison-Wesley, 1988.
Un livre un peu vieux, mais encore très bon, sur les choses essentielles pour bien gérer un projet. L'auteur est intéressant à lire, et il donne de bons conseils.
The Mythical Man-Month, Anniversary Edition
BROOKS, Frederick P. Addison-Wesley, 1995.
Pas un livre essentiel, mais si vous avez le budget, c'est intéressant. M. Brooks a dirigé le projet du OS 360 de IBM, du temps d'Abraham et de Moïse. Mais il est un penseur profond, qui en plus écrit très bien. Plusieurs de ses remarques (sur la gestion de projet et les outils de développement logiciel) sont encore valables aujourd'hui.
Object Solutions; Managing the Object-Oriented Project
BOOCH, Grady. Addison-Wesley, 1996.
Plusieurs dissertations sur la gestion de projet orientés-objet, par un gars qui en a géré de tels projets! Le livre est un peu vieillot (1995). Pas essentiel, mais bon tout de même.
The Unified Modeling Language (UML) User Guide
BOOCH, Grady, RUMBAUGH, James, JACOBSON, Ivar. Addison-Wesley, 1999. (2e éd.,
2005, est disponible et probablement nécessaire à cause des changements
entre UML 1.0 et 2.0)
The Unified Modeling Language (UML) Reference Guide
BOOCH, Grady, RUMBAUGH, James, JACOBSON, Ivar. Addison-Wesley, 1999.
(voir commentaire précédent sur nouvelle édition)
UML sert à développer des systèmes logiciels, et tout programmeur doit connaître ce langage comme le fond de sa poche. Il y a une foule de livres sur UML sur le marché. Ceux-ci sont loin d'être parfaits, mais au moins c'est écrit par les gars qui l'ont inventé.
The Unified Software Development Process
BOOCH, Grady, RUMBAUGH, James, JACOBSON, Ivar. Addison-Wesley, 1999.
La notation UML peut être utilisée avec n'importe quelle méthode de développement. Les Trois Amigos présentent leur méthode ici. Bof. Oui. Aucune méthode de développement n'est parfaite. La leur est probablement une des meilleures. Aussi connue sous le nom de RUP (Rational Unified Process)
Design Patterns; Elements of Reusable Object-Oriented Software
GAMMA, Erich, HELM, Richard, JOHNSON, Ralph, VLISSIDES, John M.
Addison-Wesley, 1994.
Je ne suis pas d'accord avec plusieurs choses dans ce livre, et les patterns présentés sont trop limités à mon goût, mais c'est le livre qui a «parti le bal» sur les patterns logiciels (des «gros morceaux de solution» qu'on peut réutiliser d'un projet à l'autre). Un programmeur devrait lire ce livre au moins une fois.
Effective C++, 2nd Ed.
MEYERS, Scott. Addison-Wesley, 1998.
More Effective C++
MEYERS, Scott. Addison-Wesley, 1996.
Deux livres que vont apprécier les «bolés» du C++. Il donne toutes sortes de trucs pour mieux coder en C++.
Large-Scale C++ Software Design
LAKOS, John. Addison-Wesley, 1996.
L'auteur explique comment développer des gros systèmes en C++, et donne plusieurs très bons conseils (et d'autres qui sont maintenant dépassés avec la version ANSI/ISO du C++). Mais sa contribution la plus remarquable est dans son explication de l'architecture physique des systèmes (l'organisation des fichiers, des modules, le processus de compilation et de testage, etc.).
The Design and Evolution of C++
STROUSTRUP, Bjarne. Addison-Wesley, 1994.
Ça se lit comme un roman! Bjarne décrit comment il a inventé ce langage important. La deuxième moitié du livre est maintenant périmée. Le livre est néanmoins important pour comprendre pourquoi le C++ est comme il est, et pourquoi Bjarne aurait pu inventer l'équivalent du Java, mais ne l'a pas fait pour de très bonnes raisons.
Artificial Intelligence, A Modern Approach, 2nd Ed.
RUSSELL, Stuart, NORVIG, Peter. Pearson Education, 2003.
Semble être un bon livre d'introduction sur ce sujet.
Numerical Recipes in C, 2nd Edition
PRESS, William H., FLANNERY, Brian P., TEUKOLSKY, Saul A., VETTERLING, William
T. 1992. (une édition C++, 2002, est disponible)
Introduction to algorithms
CORMEN, Thomas H., LEISERSON, Charles E., RIVEST, Ronald L. McGraw Hill, 1990.
(2e éd., 2001, est disponible)
J'aimerais dire que je suis capable de comprendre de tels livres!
3D Computer Graphics, 2nd Edition
WATT, Alan. Addison-Wesley, 1993.
Apparemment, une bonne introduction au sujet. Mes maths sont trop faibles pour que je comprenne vraiment.
Concepts of Programming Languages, 4th Edition
SEBESTA, Robert W. Addison-Wesley, 1999. (8e éd., 2007, est disponible)
Je le trouve peu inspiré, mais un programmeur a besoin d'au moins un livre à ce sujet.
Compilers; Principles, Techniques and Tools, 2nd Edition
AHO, Alfred V., LAM, Monica S., SETHI, Ravi, ULLMAN, Jeffrey D.
Addison-Wesley, 2006.
J'aimerais connaître un meilleur livre sur les compilateurs... (Pas seulement parce que celui-ci a beaucoup de coquilles, surtout étant donné le prix très élevé, le nombre élevé d'auteurs, et le fait que ce n'est pas une première édition.) J'aimerais avoir un livre qui:
- Explique toute la théorie essentielle (la plupart des livres existants satisfont ce critère).
- Donne tout le code source pour construire un compilateur pour un language de programmation système, un langage moderne, d'usage général (incluant la gestion des exceptions, les gabarits, la surcharge des opérateurs, les fonctions virtuelles, etc.).
- Présente du code source de bonne qualité, «Catégorie Steve McCONNELLl» (pas la cochonnerie typique qui vous ferait échouer si vous étiez un étudiant en génie logiciel de première session, première année).
- Possède une architecture orientée-objet pour le compilateur, et une documentation UML.
The Psychology of Computer Programming
WEINBERG, Gerald M. Dorset House, 1998.
Software Inspection,
GILB, Tom, GRAHAM, Dorothy. Addison-Wesley, 1993.
Applied Cryptography, 2nd Edition.
SCHNEIER, Bruce. John Wiley and Sons, 1996.
Data Mining
ADRIAANS, Pieter, ZANTINGE, Dolf. Addison-Wesley, 1996.
Compiler Design in C
HOLUB, Allen I. Prentice Hall, 1990.
Voir Section 6 de Quelques mauvais livres.
Adorons Jésus-Eucharistie! | Accueil >> Varia >> Génie logiciel