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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Avis sur vieux livres C++ offerts


Sujet :

C++

  1. #1
    Invité de passage
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2026
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2026
    Messages : 3
    Par défaut Avis sur vieux livres C++ offerts
    Bonjour à tous,
    Un voisin qui déménage m'a offert sa collection de livres d'informatiques. Comme j'ai un projet personnel en C++ cette année, je souhaite votre avis sur la pertinence des ces ouvrages pas particulièrement récents :

    • C++ en action de D. Ryan Stephens (2006)
    • Professional Multicore Programming: Design and Implementation for C++ Developers (2008)
    • C++ Template Metaprogramming de David Abrahams (2004)
    • Beyond the C++ Standard Library: An Introduction to Boost (2005)
    • undle of Algorithms in C++, Parts 1-5: Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms (2002)
    • Modern C++ Design: Generic Programming and Design Patterns Applied (2001)
    • Secure Programming Cookbook for C and C++ (2003)
    • The Boost Graph Library: User Guide and Reference Manual (2002)
    • La programmation orientée de Hugues Bersini (2008)
    • Standards de programmation en C++ de Herb SUTTER et Andrei ALEXANDRESCU

    J'ai un peu étudié le C++ il y a longtemps, je ne sais pas si les librairies, et la pratique du C++ ont tellement évoluées que ces livres sont périmés ou à éviter. Par contre pour mon projet j'aurai à travailler sur des graphes.
    Votre avis ?

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 568
    Par défaut
    Bonjour,

    Je n'ai pas lu ces livres mais ils ont tous un point commun : ils sont largement antérieurs à 2011, et donc aucun ne traite de C++11, qui est un peu considérée comme l'acte de naissance du C++ « moderne ». En conséquence, si c'est pour un apprentissage ab inito, je te recommande plutôt de t'appuyer sur un ouvrage récent.

    Ceux qui traitent d'une certaine bibliothèque en particulier (comme Boost) doivent sans doute être obsolète ne serait-ce que parce que l'API a évolué au fil des versions majeures, dont les exemples risquent de ne pas compiler en l'état. Ceux sur les algos doivent probablement être encore valables.

  3. #3
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 783
    Par défaut
    Bonjour,

    Dans cette liste, il y en a un sur les algorithmes dont les graphes. Les algorithmes évoluent très lentement, ils sont donc plus pérennes que les langages. L'implémentation C++ sera peut-être à mettre au goût du jour, mais vraisemblablement seulement pour prendre en compte des warnings du compilateur, car la rétro-compatibilité devrait éviter d'avoir des erreurs de compilation bloquantes.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  4. #4
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 595
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 595
    Par défaut
    Citation Envoyé par Quami Voir le message
    Votre avis ?
    je pense qu'ils sont tous bons à prendre.
    Surtout si votre voisin vous les donne.
    Le plus important c'est de commencer doucement par ceux qui semblent didactiques donc faut éviter dans un premier temps d'embrayer sur les design patterns sans rien y comprendre.
    Parce que le langage C++ c'est pas simple à apprendre.
    Après une fois que vous maitrisez la programmation C++ vous pouvez revendre ceux qui semblent les moins pertinents.

  5. #5
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 7 445
    Par défaut
    Salut à tous.

    Tout au contraire, ce sont par les vieux bouquins sur le langage C++ qui vous apprendrez le mieux.
    La progression se fera par l'assimilation des concepts de base du langage C++.
    Comme l'indique Obsidian, ils sont tous antérieurs à 2011 et depuis, il y a eu beaucoup de changement.
    Il faudra se procurer un ouvrage bien plus récent pour les concepts plus moderne du C++.
    Ce n'est pas si compliqué que ça, le C++. C'est juste déroutant quand on vient du C.

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 773
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Tout au contraire, ce sont par les vieux bouquins sur le langage C++ qui vous apprendrez le mieux.
    Il faudrait arrêter de dire n'importe quoi. Les pratiques et le langage ont énormément évolués en plus de 10 ans. Un livre pour apprendre le langage ou les bonnes pratiques avant C++11 (version de 2011) est simplement bon à jeter. Les approches sont tellement différentes que ça ne vaut pas le coup, c'est se compliquer la vie pour rien.

    "C++ Template Metaprogramming" reste intéressant, mais la méta-programmation ayant beaucoup évoluée et s'étant beaucoup simplifiée, ce n'est généralement pas l'approche présentée qui est utilisée. La méta-programmation à base de spécialisation de classe devient marginale. Les fonctions constexpr sont beaucoup plus faciles à utiliser et les concepts simplifient le dispatch, la lisibilité et la qualité des erreurs. Je dirais que c'est à lire après avoir vu ce qui se fait maintenant. De plus, le livre parle de boost, mais les traits que j'ai vus passé sont dans le standard depuis C++11.

    J'ai regardé vite fait "Secure Programming Cookbook for C and C++ (2003)", c'est finalement plutôt sur du bas niveau (proche des APIs systèmes et de l'OS en général, aux FS, etc) et des concepts généraux dans divers domaines, pas forcément sur des éléments liés au langage. Mais en plus de 20 ans, les APIs et pratiques ont changées, tout n'est pas d'actualité.

    Du coup, je donne le même conseil que Obsidian: prendre un ouvrage récent pour ce qui concerne l'apprentissage. En dehors des livres, il y a les cours de Kate Gregory (peut-être qu'elle fait aussi des livres, je ne sais pas) ou le cours en ligne de zeste de savoir.

    Il vaut mieux commencer par des pratiques récentes et acquérir les bons réflexes dès le début plutôt que d'apprendre des choses obsolètes ou à risque puis peiner lorsqu'il faut changer ses mauvaises habitudes.

  7. #7
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 7 445
    Par défaut
    @ jo_link_noir : pour un débutant, tu conseilles de rentrer dans l'apprentissage du C++ en commençant par le plus compliqué ?
    Je ne suis pas certain que cela soit la bonne façon de faire.

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 620
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 620
    Par défaut
    @ jo_link_noir : pour un débutant, tu conseilles de rentrer dans l'apprentissage du C++ en commençant par le plus compliqué ?
    Plus compliqué ?
    C'est pas sûr.
    Avoir plus de notion à appréhender, A LA FIN, probablement.
    Commencer par le C++ historique, c'est comme demander à un enfant de 2 ans en France d'apprendre d'abord le Latin de Cicéron avant le français du XXIème siècle.
    (Et Cicéron, c'est pas le latin le plus simple, c'est fait pour le pignolage des profs de latin, pas pour résoudre les problèmes/défis actuels.)

  9. #9
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 783
    Par défaut
    Bonjour,

    Il serait peut-être utile de proposer des lectures contemporaines, la solution internet conduit à une approche analytique très utile pour résoudre une question pointue, mais n'offrant pas un cadre de synthèse permettant de construire une vue d'ensemble efficace.

    Bien sûr, avec beaucoup de pratique, d'erreurs et de temps, nombre de développeurs feront leur propre synthèse. Mais cela ne me semble pas une réponse pour les non professionnels.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  10. #10
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 773
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    @ jo_link_noir : pour un débutant, tu conseilles de rentrer dans l'apprentissage du C++ en commençant par le plus compliqué ?
    Non, le plus simple. Le langage contient plus de chose, mais il n'est pas nécessaire de tout voir pour l'apprendre. Par contre, il y a plein de petite chose qui le simplifie.

    Il suffit d'avoir un exemple simpliste pour s'en rendre compte. Les 2 codes qui suivent font exactement la même chose: mettre 3 éléments dans un vector et une boucle pour les afficher.

    Le code C++03
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    std::vector<std::pair<int,int> > v;
    v.push_back(std::pair<int,int>(1,2));
    v.push_back(std::pair<int,int>(27,32));
    v.push_back(std::pair<int,int>(34,2));
     
    std::vector<std::pair<int,int> >::iterator it = v.begin();
    std::vector<std::pair<int,int> >::iterator last = v.end();
     
    for (; it != last; ++it) {
      std::cout << '{' << it->first << ", " << it->second << "}\n";
    }
    - Très lourd visuellement avec beaucoup de répétition. Je pourrais réduire un peu avec un alias, mais il faut quand même répéter le type à chaque fois.
    - Un espace obligatoire pour > > parce qu'il y a confusion avec l'opérateur >>...
    - Une itération verbeuse à base d'itérateurs et donc un concept à apprendre. C'est d'ailleurs pourquoi beaucoup montrent les boucles avec des indices à la place. Ce qui n'est pas générique.

    La version C++11 maintenant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    std::vector<std::pair<int,int>> v;
    v.push_back({1,2});
    v.push_back({27,32});
    v.push_back({34,2});
     
    for (auto & pair : v) {
      std::cout << '{' << pair.first << ", " << pair.second << "}\n";
    }
    Beaucoup plus lisible ; avec une boucle qui itère sur toute la séquence comme on le fait 99% du temps sans passer par la lourdeur des itérateurs.

    Quand les itérateurs sont un passage obligé, je ne connais personne qui n'utiliserait pas auto à la place de taper les 2 immondes lignes qu'il y a dans le premier exemple.
    Au final, on peut reléguer les itérateurs à plus tard, parce que finalement c'est un concept avancé, ce qui simplifie d'autant l'apprentissage.

    Un cours fait des choix sur ce qui est présenté ou non de manière progressif ; le C++ de maintenant permet cela plus facilement.

  11. #11
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 318
    Par défaut
    Les livres de l'époque publiés chez Addisson-Wesley sont très bien.

    3 attirent mon attention:
    - Celui de David Abrahams. Il y a des choses qui resteront valides et beaucoup qui se sont simplifiées au fil des ans
    - Modern C++ Design. Juste une révolution. Plein de choses toujours intéressantes sur des idées de conception (-> les Politiques). Mais plein de simplifications aussi.
    - C++ Coding Style de H.Sutter et A.Alexandrescu. Très bien aussi. Mais tout son contenu pertinent à l'heure actuelle sera dans les C++CoreGuidelines

    Mais si c'est pour se mettre au C++, tous sont à oublier. Le big tuto de Zeste de Savoir sera bien mieux.

    C++11, qui est un peu considérée comme l'acte de naissance du C++ « moderne »
    Pas d'accord. On parlait de "C++ moderne" dès le début des années 2000. L'acte de naissance c'est "Mais use the F***ing RAII". https://www.artima.com/articles/modern-c-style

    Le C++11 a permis de rebrander "C++ moderne" et de mieux vendre la migration au RAII, aux vecteurs et aux strings. Certes unique_ptr c'est mieux foutu que std::auto_ptr, boost::shared_ptr et boost::ptr_vector, mais ces derniers existaient bel et bien.

    @ jo_link_noir : pour un débutant, tu conseilles de rentrer dans l'apprentissage du C++ en commençant par le plus compliqué ?
    jo_link_noir a conseillé le cours de Kate Gregory et le big tuto de Zeste de Savoir -- ou ai-je raté une phrase?.
    Ces cours sont certainement moins compliqués que tous les vieux bouquins cités ou des anciennes approches historiques (C avant C++) sur le plan pédagogique. Accelerated C++ aurait été un bon cours, mais il aurait manqué des chapitres à jour.

    Pour le dernier exemple, j'aurai dit initializer_list pour encore plus simplifier l'initialisation du vecteur. Et même structured-binding pour extraire les 2 éléments de la paire dans le for.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  12. #12
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 574
    Par défaut
    Hello,

    Les gros problème des vieux livres:
    - Une tendance à faire apprendre du "C with class".
    - Apprentissage tardif de la librairie standard.
    - Les pointeurs nu et gestion manuelle de la mémoire.
    - Apprentissage tardif des exceptions.

    Illustration avec ces 2 codes qui font également la même chose (l'un est plus compliqué que l'autre):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // Avant C++1
    #include <iostream>
    #include <stdexcept>
     
    void main()
    {
        try
        {
            int* number = new int;
            *number = 5;
            std::cout << *number;
            delete number;
        }
        catch(std::exception& e)
        {
            std::cerr << e.what();
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Après C++11
    #include <iostream>
    #include <memory>
     
    void main()
    {
        std::unique_ptr<int> number{ std::make_unique<int>() };
        *number = 5;
        std::cout << *number;
    }

  13. #13
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 568
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Plus Commencer par le C++ historique, c'est comme demander à un enfant de 2 ans en France d'apprendre d'abord le Latin de Cicéron avant le français du XXIème siècle.
    Pas sûr que le « français du XXI siècle » soit le plus à recommander…

    Au pire, je lui recommanderais de se positionner 50-60 ans en arrière.

  14. #14
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 620
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 620
    Par défaut
    Au pire, je lui recommanderais de se positionner 50-60 ans en arrière.
    “Fichtre !” / “Bigre !”

    Le temps, lui, fait son taf… pendant que les Djadja racontent des cracks tellement gros que même les pookie prennent des notes.
    (Merci ChatGPT)
    Et des djadja sous une certaine coupole, il y en a pas mal.

Discussions similaires

  1. [AJAX] votre avis sur les livres sur Ajax
    Par gtraxx dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/11/2006, 17h15
  2. Avis sur un livre
    Par germanium dans le forum OpenGL
    Réponses: 6
    Dernier message: 23/03/2006, 10h02
  3. [debutant][STRUTS] avis sur un livre sur struts
    Par Snivel dans le forum Struts 1
    Réponses: 5
    Dernier message: 04/03/2006, 12h11
  4. Votre avis sur 1 livre SVP
    Par cab dans le forum DirectX
    Réponses: 4
    Dernier message: 17/09/2003, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo