19 mar. 2014

Ouvrages et sites de référence pour le C++

Si vous avez besoin d'en apprendre davantage sur votre langage préféré (ou, au contraire, si vous avez envie de trouver des arguments pour justifier votre position anti-C++), je vous propose quelques site webs, livres et autres ressources de référence sur le sujet.

Sites web

On commence par quelques blogs (ou assimilés) très bien agencés, et proposant du contenu de haute volée[1]. En premier, l'un des plus récents : C++ Next est un blog créé par Dave Abraham et Doug Gregor, tous deux membres du comité de normalisation du langage. Malgré la relative jeunesse du site (1 an 1/2), le contenu est du niveau attendu de la part des différents auteurs. Ce site est notamment l'hôte du groupe d'étude Elements of Programming, un livre dont je vous reparle ci-dessous. Scott Meyers, auteur de nombreux ouvrages de référence (Effective C++ et ses descendants naturels), a aussi son blog.

Au niveau des célébrités, citons Andrei Alexandrescu (auteur du remarquable Modern C++ Design), Herb Sutter, Pete Becker, Alexander Stepanov (l'auteur de la STL originelle ; je suis sûr que vous vous demandiez si une telle personne avait existé), et bien entendu Bjarne Stroustrup lui-même (pouvait-on ne pas le citer ?).

Des ressources plus générales se trouvent bien évidemment sur le site de la librairie boost - la documentation de boost, en particulier, explique de manière régulière les choix d'implémentation qui ont été fait ; c'est une lecture à recommander à tout créateur de librairie.cplusplus.com est un site généraliste contenant en outre une très bonne référence de la librairie standard (une autre, multilingue dans le principe (même si tout n'est pas traduit) est disponible sur cppreference.com ; une troisième, réalisée par Dinkumware, l'un des éditeurs les plus savant sur le sujet, se trouve ici). Bien évidemment, on ne peut ne pas parler de la FAQ C++-Lite, une version abrégée du livre C++ FAQ. The C++ Source est un "magazine" en ligne édité par la société de consulting Artima qui propose de nombreux articles très pointus.

En français, notons tout de même le livre Cours de C++ de Christian Casteyde, sous licence GNU, remarquable pour les débutants. En parlant d'eux, ils trouverons de l'aide sur le forum C++ de developez.com (et avant de poster, les débutants lirons la FAQ C++ du même site, relativement complète).

Livres

Au niveau des livres, j'ai décidé de limiter la liste au maximum[2], dans l'espoir de saisir la quintessence de ce qui se fait actuellement. Étrangement, il y a peu de livres récents (sans compter les rééditions) dans cette liste - avec l'arrivée de C++1x, il y a fort à parier que de nombreux ouvrages de référence vont être publiés. En attendant, voyons ce qu'on a ici :

  • On commence bien évidemment par The C++ Programming Language de Bjarne Stroustrup, parce que ce livre est la référence sur le langage. Un autre ouvrage du même auteur : The Design and Evolution of C++.
  • Toujours sur le langage lui même, et puisque la librairie est une partie inhérente du langage, The C++ Standard Library: A Tutorial and Reference de Nicholai Josutti est d'une importance capitale. On retrouve cet auteur en collaboration avec David Vandevoorde sur le livre C++ Templates: The Complete Guide - l'un des ouvrage ayant ouvert la voie à la méta-programmation à grande échelle en C++.
  • D'autres auteurs ont marqué de leur empreinte le monde merveilleux de la programmation C++ ; grand parmi eux on trouve Andrei Alexandrescu, l'auteur du terriblement créatif (pour son époque) Modern C++ Design. Citons aussi - parce qu'il est tout aussi grand - Herb Sutter et sa série Exceptionnal C++ (plusieurs livres sont disponibles, et tous sont de qualité équivalente). Enfin, et j'en ai déjà parlé ci-dessous, Scott Meyers a écrit Effective C++ et ses dérivés - certaines pages servent de base à quelques warnings du compilateur g++.

Je n'ai pas inclus le premier des ouvrages cités dans cette liste, parce que je souhaitais le mettre à part. Elements of Programming n'est pas à proprement parler un livre sur le C++, mais l'ouvrage l'utilise comme langage de référence pour implémenter les différents concepts qui y sont présentés. C'est la nouvelle bible - le livre qu'il faudra avoir dans sa bibliothèque d'ici à quelques années. Issus des recherches d'Alexander Stepanov et Paul McJones, cet ouvrage propose une abstraction des concepts utilisés de manière courante en programmation.

A propos de C++11 et des versions à venir

Sans surprise, si vous voulez en apprendre davantage, c'est vers le site du comité de normalisation qu'il faudra vous tourner. Le dernier draft du langage y est toujours disponible. D'autre part, le comité de normalisation a décidé d'améliorer sa communication, et le site isocpp lui sert de vitrine.

On trouve d'autres informations intéressantes - par exemple Anthony Williams, CTO chez Just Software Solutions et auteur de C++ Concurrency in Action, dont le blog est très pointu. De son coté, Guillaume Belz continue de publier d'excellent articles et tutoriels sur son site web. La page C++0xCompilerSupport du wiki Apache fait la liste des fonctionnalités déjà supportées dans les compilateurs du marché. Elle n'est pas nécessairement à jour - donc autant consulter les pages à la source :

Au niveau des livres, on notera C++ Rocks! d'Alex Korban - qui tient aussi un blog sur le C++11 et son intégration dans les différents compilateurs du marché. Scott Meyers a publié (en PDF uniquement) Overview of the New C++, un résumé des formations qu'il donne. Le même auteur est en passe de publier une nouvelle itération dans sa série Effective C++ : Effective Modern C++, dont le sommaire est déjà disponible. Autre livre intéressant traitant de C++11 : C++ Primer, 5th edition de Lippman, Lajoie et Moo.

Si vous avez d'autres références, n'hésitez pas à me les faire parvenir !

Notes

[1] la plupart de ces blogs sont en anglais

[2] lorsque vous achetez ces livres à partir de ce site, en cliquant sur les liens ci-dessous, vous sauvez des bébés pucerons et vous contribuez à la vie de ce blog ; c'est important, n'est-ce pas ?

Commentaires

1. Le mardi, janvier 11 2011, 13:57 par Emmanuel Deloget

Je tenais à dire que si vous avez des liens à partager ou des livres (uniquement dédié au C++, sauf cas particulier) , n'hésitez pas à m'en faire part. Je les ajouterais après étude à cette liste, afin qu'elle soit vivante.

2. Le samedi, avril 2 2011, 16:40 par ptyxs

Bonjour
ne pensez-vous pas qu'il serait bon aussi d'ajouter à cette liste un paragraphe consacré à la littérature sur C++0x ?

3. Le dimanche, avril 3 2011, 20:51 par Emmanuel Deloget

Il n'y a pas, à ma connaissance, d'ouvrages spécifiques qui traitent du futur standard et qui méritent d'être pris en considération. A moins, bien sûr, que j'ai manqué quelque chose :) Quand aux sites web, et bien, on va dire que pour l'instant, ils se contentent (tout comme moi d'ailleurs) de décrire les principales nouveautés du langage. Lorsqu'on commencera a voir apparaître des techniques nouvelles, alors on aura matière a faire une page spéciale (et pas seulement un paragraphe) :)

Pour l'instant, je vais faire comme tu as dit : un court paragraphe, parce que ça le vaut bien !

4. Le vendredi, avril 15 2011, 14:17 par ptyxs

Merci...
Note par ailleurs que, dès la publication qui devrait intervenir cet été, le nom officiel de la nouvelle norme devrait être C++2011 et qu'en attendant, tout le monde (à commencer par Bjarne Stroustrup, Sutter, Wikipédia en anglais etc. ) continue à employer C++0x, il n'y a guère que la page francophone de Wikipédia qui a cru bon d'utiliser C++1x... exception française sans doute...

5. Le mardi, mai 14 2013, 14:15 par Troctsch

Bonjour, je vous propose une ressource web comprenant du contenu de qualité et intéressant tant au niveau C++ (98/11) que d'autre langages aussi : http://h-deb.clg.qc.ca/

6. Le mardi, mai 14 2013, 14:45 par Emmanuel Deloget

Je vais regarder ça avec attention.

Merci !

7. Le mardi, mai 14 2013, 14:46 par Emmanuel Deloget

A noter, pendant que j'y suis, que cette page va certainement être amendée sous peu : les ouvrages sur C++11 commencent à fleurir, il est peut-être temps de les citer...

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Fil des commentaires de ce billet