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 :

Utilisez-vous la métaprogrammation


Sujet :

C++

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut Utilisez-vous la métaprogrammation
    Bonjour à tous,


    Mais ne connaissant pas plus que ça la méta programmation et tout ce que l'on peut faire avec, je me suis acheté un bouquin.

    Là j'en suis qu'au début, c'est pas mal mais son utilisation ressemble plus à des trucs utilitaires (genre checker qu'une classe T hérite d'une classe donnée), j'ai du mal à vraiment savoir comment ça peu aider fortement le développeur.


    Utilisez-vous la méta programmation ? Pour faire quoi avec ?


    Merci beaucoup,

    A bientôt
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Oui j'ai vu ça,

    Si je me souvient bien, il explique comment calculer statiquement des valeurs, mais lorsque l'on a des données dynamique, on peut s'en servir également ?

    Sinon j'ai bien compris l'utilité des hiérarchie linéaires et éparpillées, mais à part ça il y a encore d'autres utilités qu'on peut en tirer ?


    Car le bouquin est super intéressant, et ils montre des exemple d'utilisation du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int i = test_metafonction<24>::value
    Où metafonction fait des trucs de dingue, mais si on ne peut utiliser que des données statiques...
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    La ou je suis, ils ont développer un lib de traitement d'image basé dessus.

    Cela permet de dérouler les boucle des filtres
    Faciliter l'écriture des parcoure dans l'images,
    ...

    Pour moi la meta prog sert à differente chose :
    1- optimization ( par exemple déroulage de boucle)
    2- pouvoir générer des résultats à partir de paramètres connue à la compilation
    3- généralisation de code comme les foncteur
    4- simplifier l'écriture de code :
    avec boost tu peut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::remove_if(vect.begin(),vect.end(), _1 != 10)
    avec std::valarray
    le calcul
    de A = B*C + D sera faite en une boucle au lieux de 3
    Il y as encore beaucoup d'exemple

    J'avais réussi à faire un truc comme cela :
    http://www.developpez.net/forums/d37...e/#post2771668

  5. #5
    Alp
    Alp est déconnecté
    Expert éminent sénior

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Personnellement, je m'en suis servi pour créer des outils similaires à ceux présentés dans ton bouquin, qui est je suppose C++ Template Metaprogramming - que j'ai lu.

    Les objectifs principaux pour moi étaient l'apprentissage et la maitrise de ces techniques, les optimisations de mes calculs (par exemple j'ai fait un programme disons "mathématique"). Dans les autres codes, il s'agissait comme le cite Mongaulois énormément de génération de code écrire peu pour disposer de beaucoup, c'était l'objectif. Le tout aggrémenté d'un design orienté politique (cf http://alp.developpez.com/tutoriels/traitspolicies/ , partie sur les Politiques)

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Merci beaucoup

    Oui c'est bien C++ Template Metaprogramming. J'ai également pris "New C++ Design" en espérant qu'il y aura des problèmes + résolutions via la méta programmation.


    J'irai voir ton lien


    A bientôt
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  7. #7
    Alp
    Alp est déconnecté
    Expert éminent sénior

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Le livre "Generative Programming" pourrait également t'intéresser.
    Voici le site : http://www.generative-programming.org/

  8. #8
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Je m'en sers assez souvent pour faire un genre de programmation par concepts.
    Je veux par exemple spécialiser une fonction pour les types qui vérifient tel ou tel prédicat.
    Boost ftw

  9. #9
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Je m'en suis servi pour que le confort de programmation ne se substitue pas à des pertes graves de performances, dans le cadre d'exportation de types C++ vers un autre langage qui possédait un garbage collector (donc en fonction des types de bases, types de taille int, types POD et les classes non triviales, le Garbage collector devait se comporter différemment).

    Je m'en suis aussi servi pour faire un moteur de particule plutôt souple, personnalisable.

  10. #10
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    chez nous, on l'utilise massivement sur un système d'évaluation d'arbres de calculs.

    en gros, on a un arbre de calcule exprimé "dynamiquement" dans un langage, et, pour l'évaluer, on le passe du monde dynamique vers le monde statique (a base de pleins de template donc). Comme ce sont souvent les même calculs qui sont réutiliser, ça nous permet de faire des optimisation plus poussée, et surtout d'avoir une vitesse d'exécution bien meilleure que si on était resté dans de l'interpreté pur.

    par exemple, niveau optimisation, comme on traite des gros lots de particules, on peut très facilement utiliser des instruction SIMD pour multiplier par 4 nos perf sur certaines parties, ce qui n'est pas possible autrement (le cout de présentation des données etant trop important autrement)
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Ok super,

    Bé j'vais m'appliquer alors

    Merci pour vos réponses
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Templates] Quel système utilisez-vous ? Pourquoi ?
    Par narmataru dans le forum Bibliothèques et frameworks
    Réponses: 270
    Dernier message: 26/03/2011, 00h15
  2. Quels serveurs de messagerie/courriels utilisez-vous ?
    Par jmmolina dans le forum Développement
    Réponses: 2
    Dernier message: 28/10/2003, 00h57
  3. Réponses: 10
    Dernier message: 15/01/2003, 01h06
  4. Utilisez vous la base de registres ?
    Par gRRosminet dans le forum C++Builder
    Réponses: 8
    Dernier message: 04/06/2002, 13h55

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