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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 573
    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 573
    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 793
    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 793
    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 600
    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 600
    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 459
    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 459
    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 459
    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 459
    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 631
    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 631
    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
    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.

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