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

Boost C++ Discussion :

boost phoenix vs lambda c1x


Sujet :

Boost C++

  1. #21
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Je ne vais pas dire le contraire (je suis même assez d'accord avec eux, et il y a certains composants qui ont trouvé leur chemin vers la librairie standard, ce qui démontre assez bien ce point). Mais quand je pense à boost, il y a un mot qui me vient à l'esprit : convoluted
    boost ne m'agace pas. Ce qui m'agace c'est l'attitude "hors de boost, point de salut". Et ceux qui prennent l'implementation de boost comme exemple de bon code. Les interfaces sont souvent bien, mais les implementations tiennent compte de trop de facteurs pratiques pour servir d'exemple a ceux pour qui certains des facteurs ne sont pas pertinents.

    A mon sens, le WG21 a voulu trop en faire : en déclarant que '__' et '_'+maj étaient équivalents, ils n'avaient pas forcément prévu que '__' serait utilisé de manière systématique pour définir de nouveaux token ou symboles ayant un effet global, et que '_'+maj ne serait jamais (ou très rarement ; si rarement que je ne l'ai jamais vu) utilisé que pour définir des symboles n'ayant qu'une portée locale.
    WG21?
    Citation Envoyé par ISO/IEC 9899: 1990
    — All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use.
    — All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary identifier and tag name spaces.
    Et le comite C a une forte tendance a utiliser la forme _[A-Z] pour commencer ses nouveaux keywords avec un entete definissant des macros avec des noms sans _ initial.

    (En passant si j'ai bonne memoire, le fait que _[A-Z] est reserve a ete utilise dans certains algo de manglings -- mais ca ne devrait pas te poser de problemes pour les noms de parametres templates).

  2. #22
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    boost ne m'agace pas. Ce qui m'agace c'est l'attitude "hors de boost, point de salut". Et ceux qui prennent l'implementation de boost comme exemple de bon code. Les interfaces sont souvent bien, mais les implementations tiennent compte de trop de facteurs pratiques pour servir d'exemple a ceux pour qui certains des facteurs ne sont pas pertinents.
    Aussi, oui

    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    WG21?
    Workgroup 21, le comité de normalisation du C++.

    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Et le comite C a une forte tendance a utiliser la forme _[A-Z] pour commencer ses nouveaux keywords avec un entete definissant des macros avec des noms sans _ initial.

    (En passant si j'ai bonne memoire, le fait que _[A-Z] est reserve a ete utilise dans certains algo de manglings -- mais ca ne devrait pas te poser de problemes pour les noms de parametres templates).
    Info intéressante. Il faudra que je regarde ça.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #23
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Oui. Mais on perd en perf, de manière non négligeable, si j'ai bien suivi.
    Y'a une nouvelle implémentation de boost::function dans les tubes qui explose un peu tout d'ailleurs... Mais j'ai pas suivi l'histoire de trop prêt.

  4. #24
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Workgroup 21, le comité de normalisation du C++.
    J'ai ete trop laconique. La citation qui suivait montrait que le coupable etait X3J11/WG14 que le fait avait ete accompli a un moment ou WG21 n'existait pas encore.

  5. #25
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Citation Envoyé par Goten Voir le message
    Y'a une nouvelle implémentation de boost::function dans les tubes qui explose un peu tout d'ailleurs... Mais j'ai pas suivi l'histoire de trop prêt.
    Et moi pas du tout, donc ce qui suit n'est pas un avis vraiment informé : Le fait est que les lambdas sont directement visibles, et donc aisément inlinables dans le code appelant. Les std::function ou autres variantes me semblent devoir passer quelque part par un pointeur de fonction, qui va casser les possibilités d'inlining des compilateurs courants.

    C'est ce pointeur qui fait leur force en flexibilité (modifiable au run-time), mais aussi leur faiblesse en perfs.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #26
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Les lambdas de C++1x, phoenix et autres, finalement quand on a goutté sérieusement aux vraies lambdas, et plus généralement à un langage qui aide vraiment à manipuler des fonctions comme on le veut, ça paraît fade tout ça...

    Et oui LoÏc, on ne peut pas vraiment bien inliner, ni fuser, ni rien du tout. Y'a tout un tas d'optimisations qui s'envolent

  7. #27
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Citation Envoyé par Alp Voir le message
    Les lambdas de C++1x, phoenix et autres, finalement quand on a goutté sérieusement aux vraies lambdas, et plus généralement à un langage qui aide vraiment à manipuler des fonctions comme on le veut, ça paraît fade tout ça...

    Et oui LoÏc, on ne peut pas vraiment bien inliner, ni fuser, ni rien du tout. Y'a tout un tas d'optimisations qui s'envolent
    Oh et entendez le l'autre qui fait sa propagande fonctionnelle :'.
    </sarcasm>


    Les lambdas (que ça soit phoenix ou 1x) s'inlinent très bien hein...

  8. #28
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Il parlait des std::/boost:: function.

Discussions similaires

  1. Truc bizarre avec Boost.Phoenix
    Par Mat007 dans le forum Boost
    Réponses: 2
    Dernier message: 20/07/2010, 14h57
  2. Pb avec boost::phoenix
    Par Tugdugal dans le forum Boost
    Réponses: 2
    Dernier message: 15/03/2010, 07h52
  3. boost.lambda et comparaison case insensitive
    Par nikko34 dans le forum Boost
    Réponses: 2
    Dernier message: 27/03/2008, 19h23
  4. Utilisation de Boost.Lambda
    Par Biozic dans le forum Boost
    Réponses: 9
    Dernier message: 25/02/2008, 00h10
  5. boost lambda : appels imbriqués
    Par Patriarch24 dans le forum Boost
    Réponses: 3
    Dernier message: 24/09/2007, 15h02

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