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

Livres C++ Discussion :

Livre "Coder efficacement - Bonnes pratiques et erreurs à éviter (en C++)" par koala01


Sujet :

Livres C++

  1. #1
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut Livre "Coder efficacement - Bonnes pratiques et erreurs à éviter (en C++)" par koala01
    [Discussion issue de http://www.developpez.net/forums/d68...s-livres-cpp/]

    Salut,
    Citation Envoyé par germinolegrand Voir le message
    Il y a celui de Philippe Dunski (koala01 ) qui devrait paraître dans quelques choses si je ne dis pas de bêtises (Coder efficacement - Bonnes pratiques et erreurs à éviter (en C++))
    Citation Envoyé par Luc Hermitte Voir le message
    Après, il y a effectivement des bouts de C++11 là où c'est opportun dans le livre de Philippe (qui devrait sortir le 17 je crois), mais ce n'est pas le sujet du livre pour autant.
    Je confirme qu'il sortira bien le 17

    Et je confirme qu'il contient bien un peu de C++11, mais que ce n'est pas vraiment le sujet principal

    Pour cela, l'expérience m'a incité à ressortir un autre projet de mes cartons, mais il faudra attendre un peu, parce que je m'attaque à un "gros morceau"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Je confirme qu'il sortira bien le 17
    On ne peut pas le pré-commander?

    Citation Envoyé par koala01 Voir le message
    Et je confirme qu'il contient bien un peu de C++11, mais que ce n'est pas vraiment le sujet principal
    Est-ce que tu traites de la classification des classes selon leur sémantique (entité/valeur)?
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par r0d Voir le message
    Est-ce que tu traites de la classification des classes selon leur sémantique (entité/valeur)?
    À ce sujet, je peux répondre -> Oui.
    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...

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par r0d Voir le message
    On ne peut pas le pré-commander?
    Voilà une question qu'elle est bonne

    Je sais qu'il est déjà au catalogue de plusieurs sites de vente par correspondance ou non.

    Tu le verras apparaitre plusieurs fois (même si ce n'est parfois qu'au travers d'un ticket de blog) grâce à une recherche sur les termes "coder efficacement".

    Il semblerait que "furet.com"et decitre permettent la pré-commande. Pour les autres sites, je n'ai pas fouillé très loin

    Mais je n'ai pas été beaucoup plus loin que la deuxième page de résultat
    Citation Envoyé par Luc Hermitte Voir le message
    À ce sujet, je peux répondre -> Oui.
    Héhé. Et il sait de quoi il parle : il m'a fait l'amitié de s'occuper de la relecture technique et de la préface . J'en profite pour l'en remercier une fois encore, publiquement cette fois

    Mais donc, oui, bien sur! Tu sais quand meme que c'est un de mes chevaux de bataille, avec SOLID et Déméter Et le titre complet semble assez explicite sur les buts poursuivis par ce bouquin Je ne pouvais décemment pas passer ces points sous silence
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Et le titre complet semble assez explicite sur les buts poursuivis par ce bouquin Je ne pouvais décemment pas passer ces points sous silence
    Ok, je suis impatient de lire tout ça. Comme tu le sais, cette classification valeur/entité ne me convainc pas. Je trouve que la sémantique de valeur est une notion importante. Mais après, celle de sémantique d'entité me semble au mieux inutile, et surtout, la distinction entre les deux, la ligne de séparation ne me parait pas pertinente. Enfin bref, je suis hors-sujet, pardon. Et puis je vais attendre de te lire avant de revenir à la charge
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par r0d Voir le message
    Ok, je suis impatient de lire tout ça. Comme tu le sais, cette classification valeur/entité ne me convainc pas. Je trouve que la sémantique de valeur est une notion importante. Mais après, celle de sémantique d'entité me semble au mieux inutile, et surtout, la distinction entre les deux, la ligne de séparation ne me parait pas pertinente. Enfin bref, je suis hors-sujet, pardon. Et puis je vais attendre de te lire avant de revenir à la charge
    En fait, la classification permet de définir rapidement ce que tu peux faire avec tes différentes classe, et elle est en cela parfaite.

    La question à se poser pour déterminer la sémantique d'une classe est finalement très simple : peut on décemment envisager de disposer, à un instant T, de deux objets présentant exactement les même valeurs sans que cela ne mène à des catastrophes On pourrait aussi se poser la question inverse : Est-ce que chaque instance de la classe doit être identifiable de manière unique et non ambiguë

    Si on peut disposer à un instant T de deux objets présentant exactement les même valeurs, ou si chaque instance de la classe ne doit pas être identifiable de manière unique et non ambiguë (mais ce n'est jamais que deux manières différentes d'exprimer la même chose ), tu as affaire à une classe ayant sémantique de valeur. Dans le cas contraire, c'est une classe à sémantique d'entité.

    A partir de là, il faut juste arriver à "percuter" sur le fait que la sémantique d'entité est -- sauf exception (et je ne vois que l'utilisation de shared_ptr comme exception) -- contaminante : une classe qui aurait "normalement" sémantique de valeur, comme une collection quelconque, se transforme forcément en une classe ayant sémantique d'entité si elle manipule -- de manière directe ou indirecte -- une classe qui a sémantique d'entité.

    C'est sans doute ce point particulier qui pose le plus problème, et j'avoue que c'est sans doute contre intuitif. Mais, d'une certaine manière, le compilateur sera là pour te rappeler à l'ordre

    Note d'ailleurs que, si shared_ptr est l'exception qui permet de récupérer une sémantique de valeur, unique_ptr aurait plutôt l'effet inverse : de forcer la sémantique d'entité pour une classe qui, s'il n'avait pas été utilisé, aurait parfaitement pu avoir une sémantique de valeur
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    [Si un modo peut nous forker. Merci]
    Entité Vs Valeur, c'est une histoire de recettes de cuisine. Oui c'est artificiel, mais grâce à ça, on dispose malgré tout d'une heuristique qui nous permet de savoir s'il sert à quelque chose ou pas de supporter la duplication sur des objets.

    C'est tout. C'est peu, et pourtant, il y a 15 ans si cette notion m'avait été inculquée, je n'aurais pas perdu un mois à essayer de supporter la copie d'un conteneur aux noeuds fortement tissés (Un réseau de neurones que j'avais modélisé avec chaque neurone ayant un pointeur vers ses précédents et suivants. Je ne te dis pas l'horreur pour garder le tissage valide après duplication en profondeur). J'avais fini par arriver à quelque chose qui marche, mais à quel prix ? 1 mois tout même! Est-ce que cela m'a un jour servi ? Ja-mais! Pas une seule fois je n'ai dupliqué mes RdN (sans parler qu'en cours de route j'ai changé l'architecture interne).

    Pourquoi je ne les ai jamais dupliqués ? Parce que le besoin n'existe pas. Qu'est-ce qui m'aurait permis de m'en rendre compte plus tôt ? De voir que les RdN sont des entités. A la place, j'avais appliqué de façon robotique ce que je croyais être la forme canonique orthodoxe de coplien : qu'il fallait définir le quatuor pour chaque classe qui demande à définir l'un des 4 (avec tous ces pointeurs, j'avais le destructeur à définir)
    Je ne connaissais rien de ces notions d'entités, et de fait je ne savais pas que la FCOC ne s'applique que sur les classes à sémantique de valeur.

    Comment distinguer les classes d'une famille ou de l'autre ? En gros, je me dis :
    - que tout objet mathématique est une valeur (car on aime bien les dupliquer et les comparer -- NB: une mesure identifiée (ex: précipitations à Trifouilli-les-oies le 12 novembre 2005) n'est pas une valeur, mais dispose d'un état qui lui a/est une valeur),
    - que tout ce qui est voué à être dérivé publiquement est une entité
    - que tout ce qui aurait une clé primaire en BD est très certainement entité.
    Et il y a tous les cas entre. Des classes un peu bâtardes qui voguent entre les deux. Tant qu'elles n'ont pas de ressource(s) brute(s) à gérer, elles sont valeur par défaut car le compilo me le permet. Dès qu'il y a une ressource brute, par défaut j'ai une entité. Et après, j'avise si un jour le besoin de copier apparait.

    Dans tout ça, je n'ai pas encore intégré le "copiez tout entre threads" que le monde fonctionnel nous enseigne. Ni la sémantique de déplacement.
    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...

  8. #8
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut Vu que la discussion existe
    Je viens de recevoir la photo du BAT (Bon A Tiré ()) du livre. Et je la trouve tellement belle que je ne résiste pas à l'envie de vous la faire partager "en primeure".

    Plus qu'une petite semaine, et ils sera dans les librairies
    Images attachées Images attachées  
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  9. #9
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Beau boulot

    J'en aurai bien pris une version pour ma boite, mais je suis le seul dev francophone ici :s
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    - que tout ce qui est voué à être dérivé publiquement est une entité
    J'espère que le bouquin de koala01 explique bien ce point, car c'est le seul qui n'est pas immédiat.

    Au fait, koala01, félicitations pour la sortie de ton livre. Il est bon que tu sois un peu rémunéré pour tes efforts pédagogiques.

  11. #11
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par oodini Voir le message
    J'espère que le bouquin de koala01 explique bien ce point, car c'est le seul qui n'est pas immédiat.
    Voyons, tu commences pourtant à me connaitre

    Crois tu réellement que je n'aurais pas abordé ce qui est un de mes chevaux de bataille
    Au fait, koala01, félicitations pour la sortie de ton livre. Il est bon que tu sois un peu rémunéré pour tes efforts pédagogiques.
    Merci
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/08/2013, 13h14

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