logo ALDIL

Association Lyonnaise pour le Développement de l´Informatique Libre

logo ALDIL
(Answer) (Category) L'Association pour le Développement de l'informatique Libre : (Category) Le bulletin de l'ALDIL : (Category) Le Bulletin, second numéro (Décembre 1999- Janvier 2000) : (Answer) C++. Troisième édition du livre de B. Stroustrup.
No Title

Frankenstein et son monstre
ou

C++. Troisième édition du livre de B. Stroustrup.

Version française, éditions Campus Press.

Quand on sort de la librairie, on se dit tout de suite qu'on en a pour ses ronds: 249 Francs pour 994 pages, ça ne fait vraiment pas cher du gramme de papier. videmment, Stroustrup n'est pas Shakespeare et son traducteur ne pouvait pas faire du Victor Hugo, d'où une lecture souvent un peu délicate. Saluons quand même la performance de la traduction: même les exemples sont traduits, sauf peut-être quand le traducteur est un peu dépassé.

Pourquoi, me direz-vous, parler de ce livre dans un bulletin consacré au logiciel libre? tout simplement parce que sans les compilateurs libres gcc/gcs, je suis persuadé que le C++ ne se serait pas développé. Par exemple, l'absence de compilateur F90 sur les machines Linux a certainement poussé le monde du calcul scientifique à aller vers ce langage. Et puis, ce n'est pas un mince succès du logiciel libre d'avoir réussi un compilateur qui respecte maintenant la norme, et qui fonctionne fort bien.

La mise à jour de ce livre était devenue nécessaire après la définition de la norme ISO du C++ en 1998. Le langage est maintenant standardisé, et ce livre devrait avoir quelques années devant lui; notons quand même que la révision du C est commencée, et que, forcément, le C++ devra s'aligner. Il devient alors intéressant de comparer ce livre aux versions antérieures. La première édition, datant de la fin des années 80 était d'un volume guère plus gros que le Kernighan et Ritchie de C. Il est vrai qu'à l'époque, le langage était bien plus mince (sans les TEMPLATE entre autres). Donc, d'édition en édition, nous grossissons.

Template... ça, c'est le mot magique; l'évolution principale est là et 350 pages au moins ont à faire avec eux: que ce soit pour définir les modèles proprement dits ou pour décrire la bibliothèque standard (stl). On voit donc la place de plus en plus importante prise par les techniques de programmation génériques. En comparaison, la présentation des classes dérivées et des hiérarchies de classes ne prend qu'une centaine de pages.

Le problème avec ce gros bouquin est qu'on n'arrive pas bien à le situer: est ce un manuel de référence? est ce un cours? ou bien est ce que ça veut être les deux? Le coté pédagogique a été développé depuis la précédente version. J'apprécie énormément l'introduction (72 pages), claire et didactique. J'apprécie moins la suite, non pas que la démarche pédagogique soit mauvaise (on apprend ce genre de choses par l'exemple), mais je cherche désespérément des résumés précis sur les règles, ce qui est autorisé et ce qui est interdit. Si on ne trouve pas là tous ces renseignements, s'il n'y a pas de manuel de référence, où ira-t-on chercher tout ça? videmment, on peut se procurer la norme ISO. Bonne chance. Voilà un exemple: essayez de répondre à la question: peut-on spécialiser partiellement un TEMPLATE de fonction? Si c'est écrit, ce n'est pas facile à trouver.

En fait, cela tient peut être à la nature du langage: d'ajouts en ajouts, sur des fondations contestables (le C), on a fini par bâtir un machin colossal, baroque, aux limites mal définies: oui, le Docteur Stroustrup-Frankenstein a bien laissé partir son monstre.

Il y a un peu plus d'indications sur l'efficacité des codes engendrés que dans les éditions précédentes, mais pas assez à mon gré. Mes goûts de calculateur scientifique sont peut être pervers, mais je ne crois pas qu'on puisse faire l'impasse là dessus. C++ mal utilisé (ou plutôt, en utilisant les techniques les plus évidentes, celles que le langage propose spontanément) est notoirement inefficace: la surcharge d'opérateurs sans précautions, les fonctions virtuelles peuvent donner des codes 10 fois plus lents qu'en C par exemple!

Évidemment, ça n'est peut-être pas très important si vous considérez qu'un traitement de texte doit utiliser les ressources qui étaient celles d'un super calculateur il y a 5 ans; mais la programmation, c'est autre chose; en C++ on peut faire des codes redoutablement efficaces, mais en prenant plein de précautions.

Il y a des choses bien agréables à lire: par exemple les conseils en fin de chapitre sont fort intéressants. Je n'ai pas fait les exercices mais ils sont nombreux et sûrement adaptés.

De toute façon, si vous faites du C++, vous achèterez sûrement ce livre: la plupart des concurrents n'en sont que des paraphrases le plus souvent médiocres; il n'y a pas d'alternative sérieuse. Si comme moi, vous êtes plutôt allergique à ce genre de rédaction typiquement anglo saxonne, et que vous cherchez un vrai cours de C++, probablement testé sur un grand nombre de cobayes-étudiants, je ne peux que recommander l'excellent ``Teach yourself C++'' de Al. Stevens, récemment réédité; évidemment ce n'est pas un manuel complet. Après seulement, plongez-vous dans le livre de Stroustrup. Si vous êtes intéressés par les techniques qui permettent de faire des choses vraiment efficaces en C++, allez voir http://oonumerics.org/blitz/papers/, c'est intéressant et difficile.

Pour finir: je ne voudrais pas avoir l'air excessivement sévère. La bête (le monstre) ne se laisse pas décrire ni dompter facilement (les compilateurs s'y essaient) et il eut été sûrement difficile de faire beaucoup mieux: mais le plus étonnant, c'est malgré tout d'avoir l'impression d'avoir à faire à une vision personnelle du C++, plus qu'à la bible. Achetez vous plusieurs livres de C++ (et faites vous offrir plusieurs compilateurs!).

Thierry Dumont, 16 novembre 1999 .
tdumont@lan.univ-lyon1.fr



[Répondre à cette Entrée]
edegoute@lhpca.univ-lyon1.fr
Suivant : (Answer) Petite bibliographie de l'entreprise voulant migrer sous linux
Ce document est : http://vieux.aldil.org/cgi-bin/fom?file=69
[Chercher] [Modifier l'apparence]
C'est une Faq-O-Matic 2.709.

The Linux Webring: [ Previous | Next | Home | Random | List ]

Visit Linux Online