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

Affichage des résultats du sondage: Au finale, pour vous, faut-il

Votants
124. Vous ne pouvez pas participer à ce sondage.
  • séparer le C et le C++

    54 43,55%
  • les unir

    10 8,06%
  • les unir mais savoir différencier les deux "styles de programmation"

    42 33,87%
  • non mais t'as rien compris

    25 20,16%
Sondage à choix multiple
C++ Discussion :

C et C++ mythe et realité


Sujet :

C++

  1. #81
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Ce n'est pas non plus la méta-programmation qui va faire ça, c'est la partie optimiseur du compilateur.

  2. #82
    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
    Citation Envoyé par Miles
    Sauf que dans la vie réelle, tu ne connais pas la taille de ton filtre, tu dois pouvoir fournir plusieurs parcours sur ton image, ...
    C'est facile avec les templates, mais le seul intérêt à ce moment de la métaprogrammation est d'instancier automatiquement toutes les possibilités et de les enregistrer à un endroit pour y avoir accès de l'extérieur. C'est limité tout de même.
    Oui et non. Par exemple tu fait un algorithm de traitement d'image spécifique pour un projet. Au lieu de réécritures comme une brut tout le code correspodant, tu va utiliser ces concepts, et ne pas repartir de zero. La metaprog est bonne que s'il y as les grande ligne connu à la compilation.

    C'est le même problème que la STL, si tu veut.

  3. #83
    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
    Citation Envoyé par Miles
    Ce n'est pas non plus la méta-programmation qui va faire ça, c'est la partie optimiseur du compilateur.
    Ell va permetre de donner au compilot un code correspondant a ce que tu veut faire a un endroit de ton programme. Et en particulier sous une forme simple.
    Ce qui correspont bien a une utilisation pour le traitement d'image.

    Par exemple à un endroit du programme, tu veut passer un filtre sur une partie de l'image. Tu peut utiliser la metaprog pour te generer le code pour le parcoure de la partie de l'image et du noyau de calcul du filtre.

  4. #84
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Tout de même, la STL est bien plus facilement utilisable que la méta-programmation. Par exemple les ouvrages dédiés à cette méthode montrent clairement que ce n'est déjà pas accessible à tout le monde (jamais des chercheurs en TS feront l'effort de l'utiliser, c'est complexe à programmer et à débugger) et ça ne fait pas tant de choses que ça.
    En fait, je ne suis pas sûr qu'on parle exactement des mêmes outils. Par exemple, Boost propose une bibliothèque là-dessus, on va dire qu'à part travailler sur des types et des entiers, on ne peut pas faire grand chose d'autre.

  5. #85
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    J'imagine que par filtre, tu entends noyau de convolution dans l'exemple que tu as donnés.

    De toute façon, le temps de création du filtre est en général totalement négligeable par rapport au temps pour l'appliquer (d'autant plus si le noyau est gros). Donc, je ne vois pas l'interêt si ça amène une complexité importante au niveau du code
    Je ne répondrai à aucune question technique en privé

  6. #86
    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
    Citation Envoyé par millie
    J'imagine que par filtre, tu entends noyau de convolution dans l'exemple que tu as donnés.

    De toute façon, le temps de création du filtre est en général totalement négligeable par rapport au temps pour l'appliquer (d'autant plus si le noyau est gros). Donc, je ne vois pas l'interêt si ça amène une complexité importante au niveau du code
    justement çela va la simplifier
    imagine une template

    Code C++ : 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
    template<
    class _Tpixel,
    class _TPixelIterator,
    int _Hsize,
    int _Wsize,
    int _a1 =0,
    int _a2 =0,
    int _a3 =0,
    int _a4 =0,
    .
    .
    .
    int _an =0> 
    class filter
    {
    .
    .
    .
    }



    Plustôt que de re developper un code pour un filtre special, en prenant en compte tu ce que tu as besoin pour avoir accés au pixel voisin


    ton filtre devient :
    filter<RGB,2DIterator,3,3,-1 ,0,1,-1,0,1,-1,0,1> et tu n'aura pas écrit qu'une ligne de code


    Ce n'est qu'un exemple simple bien sur

  7. #87
    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
    Citation Envoyé par Miles
    Tout de même, la STL est bien plus facilement utilisable que la méta-programmation. Par exemple les ouvrages dédiés à cette méthode montrent clairement que ce n'est déjà pas accessible à tout le monde (jamais des chercheurs en TS feront l'effort de l'utiliser, c'est complexe à programmer et à débugger) et ça ne fait pas tant de choses que ça.
    En fait, je ne suis pas sûr qu'on parle exactement des mêmes outils. Par exemple, Boost propose une bibliothèque là-dessus, on va dire qu'à part travailler sur des types et des entiers, on ne peut pas faire grand chose d'autre.
    Tu peut voir la STL comme de la metaprog

  8. #88
    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
    La STL n'utilise que des notions basiques de métaprogr : les traits, principalement.

    Je te conseille le bouquin "C++ Template Metaprogramming" avant de continuer à argumenter dans le vide.

  9. #89
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Mongaulois
    justement çela va la simplifier
    imagine une template

    Ton filtre devient :
    filter<RGB,2DIterator,3,3,-1 ,0,1,-1,0,1,-1,0,1> et tu n'aura pas écrit qu'une ligne de code


    Ce n'est qu'un exemple simple bien sur
    Oui, et ce n'est que de l'utilisation classique d'un template, pas vraiment de la méta-programmation comme je l'entend.
    Il m'arrive d'utiliser des outils pour activer ou désactiver des fonctions selon le type utilisé, et je ne considère pas cela comme de la méta-programmation.
    On commence vraiment à rentrer dans la méta-programmation en automatisant des tâches telles que des hiérarchies, des expressions ou du dispatching, mais sérieusement, 99% des gens ne devraient même pas savoir que ça existe tellement c'est complexe à mettre en oeuvre, à utiliser et à débugger.

  10. #90
    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
    La vraie métaprogrammation est très rare.
    Les gens utilisant bien les templates un peu moins.

    Les bonnes docs et bons livres que tu peux lire sur le sujet seront la doc de Boost.MPL, le bouquin que j'ai cité plus haut, des bouquins et articles de Andrei Alexandrescu.

    Tu prendras alors conscience 1) de la portée de la métaprogrammation et de sa difficulté 2) des moments où l'on parle de métaprogr ainsi que ceux où l'on doit s'en servir.

  11. #91
    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
    Citation Envoyé par Alp
    La STL n'utilise que des notions basiques de métaprogr : les traits, principalement.

    Je te conseille le bouquin "C++ Template Metaprogramming" avant de continuer à argumenter dans le vide.
    J'argumente pas dans le vide et en plus tu confirme ce que je dit. J'ai pas dit que c'était de la metaprog pur.
    Toute façon c'est pas possible d'expliquer tout les concepts pour de la metaprog pour du traitement d'image en quelques lignes.
    Faudrait que j'explique l'ensemble, ce qui deviens énorme. J'essaie de faire comprendre où ce trouve l'interêt. Aprés on n'est pas obligé d'être d'accord. Et c'est vrai que je n'ai pas d'exemple concret a vous donné (lib propriétaire)

    Puis le but de ce post n'est pas de partir en troll. On peut faire un autre post sur çela si vous voulais.

  12. #92
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    On peut ouvrir un autre sujet, mais sincèrement, la seule fois que j'ai vu quelque chose qui ressemblait à de la métaprog en traitement d'image, c'était une utilisation classique des templates appliquée au conteneur qu'on utilisait (cf Vigra).

  13. #93
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par Mongaulois
    Code C++ : 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
    template<
    class _Tpixel,
    class _TPixelIterator,
    int _Hsize,
    int _Wsize,
    int _a1 =0,
    int _a2 =0,
    int _a3 =0,
    int _a4 =0,
    .
    .
    .
    int _an =0> 
    class filter
    {
    .
    .
    .
    }
    Comment on fait pour des noyaux de convolution de taille quelconque ?
    Et il faut faire attention aussi si le noyau n'est pas carré.

    Faire comme ça me semble plus simple conceptuellement http://subversion.developpez.com/pro...nel/Kernel.hpp
    Ou (lien temporaire) : http://humbert-florent.developpez.co..._1_kernel.html
    Je ne répondrai à aucune question technique en privé

  14. #94
    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
    On pourra bientôt avec les variadic templates

  15. #95
    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
    Citation Envoyé par Alp
    On pourra bientôt avec les variadic templates
    yep

    En tout cas un grand merci à tous le monde pour toute ces réponses pertinente . C'est super l'intéressante, et je comprend mieux un peu tout ce chmiblik

    Sinon, pour revenir au sujet. Es que vous pourriez m'aider à lister la ou le C et le c++ ont leurs points forts et les sépare...

    c++ :
    - POO simplifié
    - template
    - metaprog
    - flux
    - programmation de haut niveau

    C :
    - POO compliqué mais puissante (ex GLIB,GTS)
    - tous peut être (void*)
    - flux
    - programmation itératif (??)

  16. #96
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Les avantages que tu donnes au C sont aussi pour le C++, même si on peut dire que l'avantage que tout puisse être void* est surtout la preuve d'un problème de conception en C++

  17. #97
    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
    Citation Envoyé par Miles
    Les avantages que tu donnes au C sont aussi pour le C++, même si on peut dire que l'avantage que tout puisse être void* est surtout la preuve d'un problème de conception en C++
    mais je dit pas ça (j'ai pas parlé de void* avec le c++) je cherche à trouver les vrais différences (conceptuel ou autre). Je programme en C++. Mais si je ne donne pas d'exemple, qui va m'aider? Je cherche à différencier correctement ces deux languages.
    Aprés je peut écrire des erreur en C, puisse que j'ai compris que n'en faisait pas .
    Sinon on n'as qu'as dire que C++ est du C avec plus de fonctionnalité et ça résous mon problème. Mais c'est faux. Aprés çela ne tiens peut être qu'a moi de vouloir comprendre ça. SI on n'est pas capable de les différencier, on ne pas affirmer qu'ils sont différents

  18. #98
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Il y a quelques temps, le C++ était vraiment une surcouche du C car il respectait la norme C90. Maintenant, C99 est sorti, et donc il y a des nouveautés que le C++ n'a pas forcément et que le C a.
    http://nicolasj.developpez.com/articles/c99/ donne ces nouveautés

  19. #99
    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
    Citation Envoyé par Miles
    Il y a quelques temps, le C++ était vraiment une surcouche du C car il respectait la norme C90.
    Il a de tout temps existé des programmes C valides qui n'étaient pas valides en C++. Par exemple un truc genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void f(void)
    {
      int i = g();
    }
     
    int g(void)
    {
      return 42;
    }
    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.

  20. #100
    Membre éclairé Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Points : 693
    Points
    693
    Par défaut
    Le c99 ne demande t il pas aussi de déclarer les variables en début de portée?

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

Discussions similaires

  1. Mythes & Réalité
    Par philben dans le forum Contribuez
    Réponses: 6
    Dernier message: 07/07/2006, 07h05
  2. [TV] Emission Télé Réalité(encore)
    Par ArHacKnIdE dans le forum Films & TV
    Réponses: 30
    Dernier message: 31/05/2006, 11h47
  3. Liste deroulante et VALUE non conforme a la realité
    Par ahage4x4 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 27/05/2005, 13h33
  4. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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