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

Contribuez C++ Discussion :

tutoriel sur boost.optional sur le site


Sujet :

Contribuez C++

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut tutoriel sur boost.optional sur le site
    je ne sais pas si il y a un autre endroit pour en parler.

    Le tutoriel il est pas super compliqué ? Je sais pas, si je me mets à la place d'un débutant, j'aurais bien du mal à savoir exactement comment on s'en sert.

    Je sais que la doc boost est pas forcément très beginner-friendly, et mon exemple est peut être un peu débile, mais quelque chose comme ça :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #include <iostream>
    #include <string>
    #include <boost/optional.hpp>
     
    typedef boost::optional< std::string > OptionalString;
     
    OptionalString getValue( const std::string & key )
    {
         // renvoie valeur si trouvé
         if( key == "clé" )
         {
             return "valeur";
         }
     
         // si pas de valeur
         return OptionalString();
    }
     
    int main()
    {
        OptionalString value = getValue( "fausse_clé" );
     
        if( value )
        {
            std::cout << "valeur trouvée: " << *value << std::endl;
        }    
        else
        {
            std::cout << "pas de valeur associée!" << std::endl;
        }
     
        return 0;
    }
    je connais pas la librairie en détail, mais j'imagine que c'est ce que recherche celui qui ne connait pas comment ça marche avant d'aller plus loin? ou je me trompe et je sais pas lire ?

  2. #2
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Je te rejoins totalement, ça manque vraiment d'exemple (comme sur la plupart des "tutoriaux" sur Boost du site...). Sans vouloir manquer de respect à l'auteur du tuto, qui a quand même fait du bon boulot et fais quelque chose d'hyper complet, je vois plutôt ça comme une traduction des docs imbuvables de boost...

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Il existe un tutoriel sur boost.optionnal tout juste écrit par 3DArchi.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Il existe un tutoriel sur boost.optionnal tout juste écrit par 3DArchi.
    oui c'est de ce tutorial dont je parle

    je vois plutôt ça comme une traduction des docs imbuvables de boost...
    c'est un peu ce que je me dis.. alors que dans boost il y a des bibliothèques avec de chouettes exemples dès le début, comme boost.threads ou boost.lambda, qui mettent de suite le pied à l'étrier avec envie d'aller plus loin ( et qui ne sont pas les plus faciles à apréhender! ).

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    OK, comme il n'y a avait pas de référence ...

    Sinon, je l'ai lu et j'ai au moins compris l'intérêt du machin. Après, c'est sûr que j'ai été largué mais je ne suis pas trop "template" donc j'ai un peu de mal à suivre.

    Par contre, là où je te rejoins, c'est que la doc de boost est très complexe pour une première approche mais je crois aussi que c'est dû aux concepts qui sont manipulés par boost et aussi au besoin de généricité et d'adaptabilité à tous les besoins.

    Intuitivement, je dirai qu'une solution adaptable est plus complexe car elle a beaucoup plus de paramètres pour pouvoir s'adapter.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut
    ouais, mais boost.lambda, c'est pas ce que j'appellerais une librairie simple par exemple.

    Pourtant, première page:
    http://www.boost.org/doc/libs/1_37_0...ml/lambda.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for_each(a.begin(), a.end(), std::cout << _1 << ' ');
    voilà, c'est boost.lambda.

    On a pas besoin de connaître en détail pourquoi ça marche pour l'utiliser. ( même si c'est très intéressant, mais ça vient après ! ).

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    Tout d'abord, merci pour vos réactions et remarques. C'est toujours en croisant les points de vue qu'on s'améliore

    J'entends et je comprends vos remarques. Donc, je vais préciser un peu la démarche que j'ai eu sur ce tutoriel.
    Votre critique principale, si je comprend bien, s'articule autour des deux idées suivantes qui d'ailleurs se recoupent : l'absence d'exemples et la difficulté pour un débutant.

    Partons d'abord de la seconde critique : la difficulté pour un débutant. J'aurais une réponse paradoxale. A mon sens, à quelques exceptions près (par exemple, Tribool), les bibliothèques Boost ne sont pas des bibliothèques pour de complets débutants. Elles demandent au moins de savoir manipuler les templates et souvent des concepts plus avancés du langage. La second réponse, qui peut paraître paradoxale par rapport à celle-ci, est que Boost.Optional est une des bibliothèques les plus simples de Boost. Son utilisation ne présente quasiment aucune subtilité. En ce sens, une présentation complète de la classe et de son interface m'a paru constitué une ressource intéressante en soi !

    Le premier argument était l'absence d'exemple. Je pense qu'effectivement ça peut être une lacune. Cependant, les exemples dans les tutoriels servent souvent de canevas à une utilisation dans son propre projet. Boost.Optional définit plus un type qu'un comportement ou un service. En ce sens, on peut difficilement faire un copier/coller d'un exemple pour le transposer dans son propre code. Néanmoins, je vais tirer parti de cette fin d'année pour réfléchir à l'ajout de quelques exemples d'utilisation. Cela pourra ainsi former une conclusion à l'article...

    Quelle a été la démarche de ce tutoriel ? Deux points m'ont semblé intéressants dans Boost.Optional. Le premier est le concept de variable non initialisée et d'indétermination qui en découle. Toute l'introduction souligne cet aspect et présente l'intérêt d'une telle classe.
    Ensuite, je me suis servi du détail d'implémentation qui m'ont enrichi personnellement sur la compréhension du langage C++ et/ou de Boost (notamment MPL). J'ai voulu mettre en avant ces points pour ces raisons.

    Une dernière remarque. Heureusement que Boost.Lambda commence par un exemple pour montrer la simplicité de son utilisation. Sinon, ce serait la fuite assurée dès la première ligne, les concepts derrière étant assez complexes !
    J'espère que mon tuto ne fait quand même pas fuir les lecteurs dès les premières lignes

    Cordialement,
    3DArchi.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut
    Pour moi ça ressemble plus à une feuillle de référence qu'à un tutoriel. Le titre est trompeur.

    Et j'ai déjà utilisé boost.optional et boost.lambda dans des projets pro. Et si il avait fallu expliquer à des devs C++ plus ou moins débutants la meta-prog en détail pour les utiliser... je crois que ça n'aurait pas été possible. Par contre quelques exemples et tout le monde comprend.

    Je pense que boost est là pour plus de facilité dans l'utilisation du C++, avec des bibliothèques qui sont faites surtout pour être utilisées avant d'être comprises en détail.

  9. #9
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    J'ai essayé de prendre ces différentes remarques en compte. J'ai donc rajouté deux nouvelles sections: Premier Pas et Exemples. La nouvelle version du tutoriel est disponible ici.
    Cordialement,
    3DArchi.

  10. #10
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Niquel

Discussions similaires

  1. Tutoriels sur Boost
    Par Community Management dans le forum Boost
    Réponses: 0
    Dernier message: 23/08/2007, 18h20
  2. Réponses: 3
    Dernier message: 16/02/2007, 12h35
  3. Réponses: 21
    Dernier message: 20/12/2004, 23h45

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