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 :

Le C++ se compile-t-il trop lentement ? Oui répond Walter Bright, un développeur de compilateur


Sujet :

C++

  1. #61
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2011
    Messages : 62
    Points : 123
    Points
    123
    Par défaut
    (juste en trois mots : en fait, pour Gödel, je l'avais un peu mis de côté parce que les probabilités ne sont pas gênées apparemment si au lieu de prendre des tribus (sigma-algèbres) on ne prend que des sigma-anneaux : la différence entre les deux, c'est qu'on ne suppose plus cet ensemble stable par passage au complémentaire, mais juste par différence entre ensembles, c-à-d. A \ B si A et B sont supposés dans le sigma-anneau. Et pour construire les énoncés qui posent problème avec Gödel, il faut supposer que les ensembles de propositions manipulés sont stables par la négation.

    Mais regarder "sous le capot" de toutes ces théories pour vérifier, c'est un peu "gros" pour moi. Je garde juste un oeil attentif au cas où je croiserais un contre-exemple un jour... )

    ps : merci pour les liens.

  2. #62
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    A propos de l'unity build, un article expliquant tous les problèmes liés et aussi pourquoi c'est une solution au mauvais problème : http://altdevblogaday.com/2011/08/14...-unity-builds/

  3. #63
    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
    Il me semble que cela n'a pas déjà été dit, mais de nombreux compilateurs détectent déjà les fichiers dont le pattern est ifndef define ... endif et les gèrent comme des includes symboliques pour accélérer la compilation.
    Boost ftw

  4. #64
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par kaymak Voir le message
    Je ne suis pas un spécialiste barbu du c++, juste un nouvel utilisateur depuis peu, quelques heures à mon actif.

    Et je dois bien dire que les include sont infâmes. D'ailleurs je ne comprend pas pourquoi il faut que j'indique l'usage de la classe <machin>, c'est écris dans le code, le compilo n'à qu'à lire pour le déterminer, rien de bien sorcier.

    Les seules raisons qui devraient me pousser à faire cette définition explicite seraient de vouloir forcer une version, mais d'autres mécanismes doivent déjà exister.

    d'utiliser des types "dynamique", mais est ce qu'on s'en sert si souvent ? Et est ce que lorsqu'on s'en sert ce n'est pas au développeur de l'indiquer explicitement.

    Par ailleurs, au sein d'un même projet genre gui, pas trop gros cela va de soit, on pourrait avoir un seul include sa éviterait les duplications...

    De la même manière le compilateur n'émet pas de message lorsque une librairie est chargée inutilement.

    Enfin je ne comprend pas pourquoi ce genre d'update devrait attendre une dizaine d'années.... C'est pas une tâche du compilateur sa ? Suffit pas de faire un patch?....

    De mon oeil de novice qui n'y connait pas grand chose, tout cela me laisse un goût de jm'en foutisme, particulièrement lorsque je lis ceci :


    a plus
    C'est original comme message.

    Bon, point par point :

    Citation Envoyé par kaymak Voir le message
    Je ne suis pas un spécialiste barbu du c++, juste un nouvel utilisateur depuis peu, quelques heures à mon actif.
    Du coup, moins qualifié que d'autre pour parler des forces et faiblesses du langage. Le système de compilation du C++ est lent, on ne peut pas le nier, mais cette lenteur est en grande partie due aux forces intrinsèques du langage - template, etc. Du coup, ne pas connaître le langage rends l'appréciation de ses limites et des conséquences sur le modèle de compilation hasardeuse. Mais oublions ce point, car il n'a que peu d'intérêt.

    Et je dois bien dire que les include sont infâmes. D'ailleurs je ne comprend pas pourquoi il faut que j'indique l'usage de la classe <machin>, c'est écris dans le code, le compilo n'à qu'à lire pour le déterminer, rien de bien sorcier.
    Impossible au vu du modèle de compilation. Un élément qui n'est pas déclarer avant d'être utilisé est impossible à identifier correctement avant la phase de lien, ce qui n'est pas une bonne chose (ça reviendrais à compiler systématiquement tout le projet avant de pouvoir détecter 90% des erreurs). Ce n'est pas acceptable - d'où la présence des headers (qui ne contiennent pas que des classes, et qui peuvent contenir plusieurs classes si nécessaire ; de plus, la classe machin n'est pas nécessairement définie dans <machin>).

    Les seules raisons qui devraient me pousser à faire cette définition explicite seraient de vouloir forcer une version, mais d'autres mécanismes doivent déjà exister.
    Nope. La raison est la validation syntaxique du code. Deux problèmes sont à résoudre : la grammaire ambigüe du C++ fait que des expressions semblables peuvent avoir un traitement fort différent selon le type des symboles utilisé, ou que certaines expressions n'ont pas de sens.

    identifier1 identifier2;

    est une déclaration de variable si identifier1 est un type, sinon une erreur de syntaxe doit être générée. Et comment savoir si identifier1 est un type ou non sans connaître le symbole ?

    Le second problème est lié à la surcharge des fonctions (et des opérateurs).

    c = a + b;

    Peut faire intervenir deux surcharges (operator=, operator+) ainsi que des conversions implicite de type qui peuvent elles aussi être surchargées.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    std::string s1, s2("yy"); 
    const char* s2 = "xx";
     
    s1 = s2 + s3;
    // s1 == "yyxx"
    Comment le compilateur peut-il savoir s'il doit générer du code pour une addition (opcode assembleur ADD ou assimilé) ou s'il doit appeler une fonction (CALL) ? S'il veut pouvoir faire le choix, il lui faut connaître le détail des types utilisé. Sans header, cela reviendrait à réécrire le header de manière systématique dans tous les fichiers qui l'utilise.

    d'utiliser des types "dynamique", mais est ce qu'on s'en sert si souvent ? Et est ce que lorsqu'on s'en sert ce n'est pas au développeur de l'indiquer explicitement.

    Par ailleurs, au sein d'un même projet genre gui, pas trop gros cela va de soit, on pourrait avoir un seul include sa éviterait les duplications...
    Je ne comprends pas ce que tu veux dire.

    De la même manière le compilateur n'émet pas de message lorsque une librairie est chargée inutilement.
    Pour la simple et bonne raison que c'est au linker de le faire, et pas au compilateur. Ca ne fait pas partie du langage. Le compilateur a simplement pour but d'interpréter correctement le programme, et de générer une sortie qui sera comprise par le linker. Le reste est du ressort d'autres outils de la chaine qui n'ont rien à voir avec le C++ (le linker GNU (ld) est utilisé par d'autres toolchain : C, fortran, pascal,...).

    Enfin je ne comprend pas pourquoi ce genre d'update devrait attendre une dizaine d'années.... C'est pas une tâche du compilateur sa ? Suffit pas de faire un patch?....
    Euh... J'ai du mal à comprendre ce passage. La mise à jour de la norme C++ est suffisamment importante pour avoir nécessité des années de travail. Sans cette norme, aucun compilateur ne fonctionnerait de la même manière et les programmes C++ ne seraient pas portables d'un compilateur à l'autre. Ce n'est pas à un vendeur de compilateur de dicter sa loi sur le marché, surtout lorsque le langage ne lui appartient pas (il peut le faire s'il veut, mais il va développer son produit en pure perte : personne de censé ne l’achètera).

    Et faire un patch à quoi ? Au compilateur ? Lequel ? Celui d'Intel, celui de GNU, celui de Microsoft, le front end de EGC, celui de Commeau, celui de Digital Mars, celui de Codeplay, etc... ?

    Ca va faire un gros patch, avec beaucoup de binaire dedans...

    De mon oeil de novice qui n'y connait pas grand chose, tout cela me laisse un goût de jm'en foutisme, particulièrement lorsque je lis ceci :
    Le fait que les plus grand experts du monde se soient penchés pendant 10 ans sur le problème de le mise à jour du standard du C++ te laisse un goût de "jm'en foutisme"? Il faudrait peut être que tu ailles les aider alors, parce que ça, ça me laisse sans voix.
    [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.

  5. #65
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    C'est original comme message.

    Du coup, moins qualifié que d'autre pour parler des forces et faiblesses du langage. Le système de compilation du C++ est lent, on ne peut pas le nier, mais cette lenteur est en grande partie due aux forces intrinsèques du langage - template, etc. Du coup, ne pas connaître le langage rends l'appréciation de ses limites et des conséquences sur le modèle de compilation hasardeuse. Mais oublions ce point, car il n'a que peu d'intérêt.
    Il faut pas exagérer et justifier un archaïsme hérité ( le système de compilation) par un ajout "récent" du langage.

    Le système de compilation du C++ et la syntaxe ambiguë sont les deux faiblesses du langage. Ils rendent moins attractifs certaines forces du langage, comme les templates. Quant je vois que certains de nos projets c# font massivement appel aux generics, alors que l'utilisation des templates est toujours fortement encadrée sur les projets C++, que certains bibliothèques de Boost (MPL,etc...) sont interdites, alors qu'elles serait la solution localement sur certains composants.

    Il ne faut pas chercher bien loin le coupable.

  6. #66
    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 PhilIvey Voir le message
    Il faut pas exagérer et justifier un archaïsme hérité ( le système de compilation) par un ajout "récent" du langage.

    Le système de compilation du C++ et la syntaxe ambiguë sont les deux faiblesses du langage. Ils rendent moins attractifs certaines forces du langage, comme les templates. Quant je vois que certains de nos projets c# font massivement appel aux generics, alors que l'utilisation des templates est toujours fortement encadrée sur les projets C++, que certains bibliothèques de Boost (MPL,etc...) sont interdites, alors qu'elles serait la solution localement sur certains composants.

    Il ne faut pas chercher bien loin le coupable.
    Là, c'est toi qui exagère en rendant le langage responsable des faiblesses de certains utilisateurs en termes de conception...

    Je suis tout à fait d'accord que C++ est lent à la compilation et que c'est un langage qui, revers des libertés qu'il offre, nécessite un respect plus stricte des principes de programmation, d'encapsulation et de POO...

    Je travaille personnellement sur un projet important, on ne peut plus pro, mais dans une équipe (un minimum en tout cas) compétante, et on bouffe massivement des template et du boost à foison!!!

    Avant d'en arriver à rendre le langage ou les bibliothèques responsables de certaines restrictions imposées dans un projet particulier, commence peut être par t'interroger sur les faiblesses et la (l'in) compétence des responsables de projet et / ou des développeurs de l'équipe
    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. #67
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Là, c'est toi qui exagère en rendant le langage responsable des faiblesses de certains utilisateurs en termes de conception...

    Je suis tout à fait d'accord que C++ est lent à la compilation et que c'est un langage qui, revers des libertés qu'il offre, nécessite un respect plus stricte des principes de programmation, d'encapsulation et de POO...

    Je travaille personnellement sur un projet important, on ne peut plus pro, mais dans une équipe (un minimum en tout cas) compétante, et on bouffe massivement des template et du boost à foison!!!
    Si tu relis bien mon post, je ne parle que du système de compilation, et de la syntaxe ambiguë.Si tu trouves des bénéfices au système de compilation et à la lenteur que ça induit, je serai heureux de les connaitre.

    Tout ce que je dis , c'est que c'est un frein à la généralisation de certaines best practices, à l'utilisation massive des templates. Dis moi, si je me trompe , mais tu dois passer un temps certain à faire de l'optimisation de temps de compilation( pch,pre-instantation,etc..). Un système de modules ferait un bien fou au langage, sans perdre en puissance

    Notre projet principal, utilise plusieurs centaines de développeurs, répartis aux quatres coins du monde; tu as besoin de règles plus strictes,pour gérer l’hétérogénéité des développeurs,et maitriser le projet.

    Le pragmatisme c'est aussi une forme de compétence technique.....

  8. #68
    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 : 49
    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
    Points : 16 213
    Points
    16 213
    Par défaut
    Je suis d'accord que le système de compilation n'est pas bon (performances, apprentissage, encapsulation...), je pense même que c'est ce qu'il faudrait améliorer en priorité en C++.

    Néanmoins j'ai du mal à voir le lien entre ce système et une limitation de l'utilisation des templates. Là où j'ai vu des règles sur les templates, les raisons étaient plus liées à un mauvais support par certains compilateurs (parfois des compilaeur plus utilisés dans le projet depuis 10ans...) et/ou à un manque de formation qu'à quoi que ce soit lié à la chaîne de compilation. Pourrais-tu développer ?
    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.

  9. #69
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Je suis d'accord que le système de compilation n'est pas bon (performances, apprentissage, encapsulation...), je pense même que c'est ce qu'il faudrait améliorer en priorité en C++.

    Néanmoins j'ai du mal à voir le lien entre ce système et une limitation de l'utilisation des templates. Là où j'ai vu des règles sur les templates, les raisons étaient plus liées à un mauvais support par certains compilateurs (parfois des compilaeur plus utilisés dans le projet depuis 10ans...) et/ou à un manque de formation qu'à quoi que ce soit lié à la chaîne de compilation. Pourrais-tu développer ?
    Sur un gros (gros) projet, une utilisation abusive des templates peut très nettement malmener le temps de compilation. Je pense que c'est à _a qu'il fait référence.
    [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.

  10. #70
    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
    Il est vrai que l'on utilise la compilation partagée, et que cela réduit considérablement les temps de compilation (qui seraient horribles autrement).

    Mais je voulais surtout mettre en évidence le fait que, bien que le processus de compilation soit très lent -- chose qu'il est d'ailleurs possible de contourner -- les premières raisons invoquées pour éviter les template et boost auront souvent trait au manque de maitrise dont fait preuve celui qui les donne
    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

  11. #71
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Mais je voulais surtout mettre en évidence le fait que, bien que le processus de compilation soit très lent -- chose qu'il est d'ailleurs possible de contourner -- les premières raisons invoquées pour éviter les template et boost auront souvent trait au manque de maitrise dont fait preuve celui qui les donne
    Koala,

    Comme l'a compris E. Deloget
    Je dis juste ,qu'une utilisation intensive des templates peut avoir un effet désastreux sur les temps de compilation,

    Si tu lis encore une fois mon post initial, je ne dis que que les templates ou Boost sont interdits, mais
    que l'utilisation est encadrée, et que certaines librairies Boost sont interdites...

    Notre code de base est ancien,( fin des années 90), et nous avons entrepris il y a quelques années, de nettoyer certaines parties,
    et de rendre l'architecture plus flexible aux modifications.

    Une des solutions se basait sur Boost MPL,boost::enable_if , pour certaines factories, et Boost Fusion pour génériser les traitements en sortie de parsing.

    C’était la solution la plus concise et élégante, et celle qui permettait le maximum de vérification statique du code mais l'impact sur les temps de compilation a été proprement calamiteux.

    Pour te donner un indicateur très imparfait, le soft installé sur le poste client peut atteindre 10 Go...
    Tout n'est pas bien sur en C++.... .
    Tu te doutes bien que nous utilisons une solution de compilation partagée.
    Boost est bien sur très présent; dans des biens des cas c'est strictement équivalent à un simple include.

    Si tu utilises d'autres languages ( c# ou D) , tu as du te rendre compte, que programmation générique et metaprog n’équivalaient pas à temps de compilation longs...

  12. #72
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par PhilIvey Voir le message
    Si tu utilises d'autres languages ( c# ou D) , tu as du te rendre compte, que programmation générique et metaprog n’équivalaient pas à temps de compilation longs...

    métaprogrammation intégré au langage en C#

    ok pour D (qui a "appris" des défauts de C++ ^^)
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  13. #73
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    métaprogrammation intégré au langage en C#

    ok pour D (qui a "appris" des défauts de C++ ^^)
    Tout depend de ta definition de la metaprogrammation , qui est possible
    en C++ et D par le biais des templates.

    La reflection, qui fonctionne aussi avec les generics, c'est une forme de metaprogrammation.

  14. #74
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par PhilIvey Voir le message
    Tout depend de ta definition de la metaprogrammation
    [...]
    La reflection, qui fonctionne aussi avec les generics, c'est une forme de metaprogrammation.

    forcément si chacun peut définir comme il le souhaite les notions qui l'arrangent

    en C#, la "reflexion" est surtout limitée à l'introspection non ?
    hors, il faut aussi intercession de SmallTalk pour réellement pouvoir faire de la méta-programmation, si mes "définitions théoriques" sont correctes
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  15. #75
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    forcément si chacun peut définir comme il le souhaite les notions qui l'arrangent

    en C#, la "reflexion" est surtout limitée à l'introspection non ?
    hors, il faut aussi intercession de SmallTalk pour réellement pouvoir faire de la méta-programmation, si mes "définitions théoriques" sont correctes

    Il existe d'autres formes de metaprogrammation , que le template metaprogramming du c++ ( statique et compile-time)!!!

    Tu as bien sur de l'introspection, mais tu peux ajouter des champs,propriétés, instancier des types génériques, des fonctions génériques, filtrer des types....

  16. #76
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par PhilIvey Voir le message

    Il existe d'autres formes de metaprogrammation , que le template metaprogramming du c++ ( statique et compile-time)!!!
    ça fait assez peur de voir que tu ne m'as pas lu...


    Citation Envoyé par PhilIvey Voir le message
    Tu as bien sur de l'introspection, mais tu peux ajouter des champs,propriétés, instancier des types génériques, des fonctions génériques, filtrer des types....

    montres-moi en quoi C# est capable d'une intercession proche de SmallTalk ou Scheme, histoire que je vois ce que tu mets derrière la possibilité réelle de faire de la métaprogrammation en C#

    tu parles d'une utilisation poussée du DLR ?
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  17. #77
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    montres-moi en quoi C# est capable d'une intercession proche de SmallTalk ou Scheme, histoire que je vois ce que tu mets derrière la possibilité réelle de faire de la métaprogrammation en C#

    tu parles d'une utilisation poussée du DLR ?
    Moi et la terminologie C#, ça fait 2. C'est quoi, DLR ?

    Indépendamment, je pense qu'il parle surtout de la possibilité de caractériser et/ou définir du code au runtime, ce qui est possible dans une certaine mesure en C# (et en java) grâce a la réflexion. Lambda et réflexion sont capable de grandes chose .

    On est effectivement loin du mécanisme des templates du C++, mais ça reste de la métaprog (puisque le principe de la métaprog, c'est le fait d'écrire du code qui va générer du code).
    [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.

  18. #78
    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 gorgonite Voir le message
    forcément si chacun peut définir comme il le souhaite les notions qui l'arrangent

    en C#, la "reflexion" est surtout limitée à l'introspection non ?
    Apparemment, Wikipedia classe bien la réflexion dans les techniques de métaprogrammation (voir arborescence à droite) :

    http://en.wikipedia.org/wiki/Reflect...ter_science%29

  19. #79
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 264
    Points : 725
    Points
    725
    Par défaut
    Moi et la terminologie C#, ça fait 2. C'est quoi, DLR ?
    Dynamic Language Runtime, la couche d'interopérabilité avec les langages dynamiques rajoutée dans .Net 4.0 : http://fr.wikipedia.org/wiki/Dynamic_Language_Runtime
    "By and large I'm trying to minimize mentions of D in C++ contexts because it's as unfair as bringing a machine gun to a knife fight." - Andrei Alexandrescu

  20. #80
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par oodini Voir le message
    Apparemment, Wikipedia classe bien la réflexion dans les techniques de métaprogrammation (voir arborescence à droite) :

    http://en.wikipedia.org/wiki/Reflect...ter_science%29


    déjà wikipedia n'est pas une source toujours fiable (mais il ne tient qu'à nous de l'améliorer ^^)

    ensuite, la reflexion contient l'introspection et l'intercession, et avec juste l'introspection on est loin de la meta-programmation ^^
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

Discussions similaires

  1. [VB.NET]Mes controles graphiques se redessinent trop lentement
    Par noogatix dans le forum Windows Forms
    Réponses: 34
    Dernier message: 04/10/2012, 20h11
  2. Réponses: 60
    Dernier message: 15/04/2011, 06h44
  3. Erreur compilation: fichiers Include trop nombreux
    Par Pierrick584 dans le forum C++
    Réponses: 5
    Dernier message: 21/10/2006, 00h24
  4. [DOS] le texte s'affiche trop lentement
    Par maxonman dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 09/12/2005, 14h53
  5. Réponses: 8
    Dernier message: 20/05/2005, 20h37

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