Lors d'un meetup C++, j'ai montré sans dire d'où ils venaient des codes extraits de la dernière édition de ce livre, en en proposant un revue de code. Les critiques se sont mises à pleuvoir dans tous les sens (et ce n'était pas que stylistique, certains étaient de vrais bugs), et quand à la fin j'ai indiqué que ces exemples venaient d'un livre, j'ai lu des spasmes nerveux sur les visages de ceux qui connaissaient cet auteur, et de la consternation sur ceux qui le découvraient ainsi.
Et je n'ai pas cherché longtemps ces exemples, c'étaient littéralement les premiers exemples de code que j'ai ouverts.
J'ai aussi lu un peu du contenu de ce livre (édition 8, disponible à mon travail, mais le sommaire de la 9 est identique). Dire que le livre couvre les normes récentes est à la limite de l'escroquerie. Ajouter 10 pages en fin d'un bouquin qui parle mal du C++98 n'est fera pas un bouquin à jour sur la norme C++11 ou 17...
La manière de programmer a totalement changé, et l'approche de ce bouquin ne permettra pas de devenir un bon développeur C++. Je déconseille
très fortement ce livre.
Un petit exemple, issu d'un autre livre du même auteur, mais qui je pense devrait parler même à quelqu'un ne connaissant pas encore le C++ (code consultable
là):
1 2 3 4 5 6 7 8 9 10
| #include <iostream>
using namespace std ;
main()
{
int nombre, carre ;
cout << "donnez un nombre : " ;
cin >> nombre ;
carre = 2 * nombre ;
cout << "voici son carre : " << carre ;
} |
Il s'agit du premier exemple en C++du bouquin, et on peut citer en vrac :
- Déclaration de la fonction main incorrecte (il manque un type de retour int)
- Utilisation de variable non initialisées totalement déconseillée (il aurait mieux valu écrire directement
int carre = 2 * nombre; qui initialise la variable au moment de sa déclaration)
- Confusion entre nombre*nombre et nombre*2 !
- Manque un retour charriot à la fin
Ça fait beaucoup pour un si petit programme...
Partager