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. #161
    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 dj.motte Voir le message
    Salut,
    Souvent C++ est très obscur, pour faire des choses assez simples notamment dans les fameux flux.
    pas plus que C# ou java, non? Sauf pour les flux peut être.

    Citation Envoyé par dj.motte Voir le message
    Le C++ c'est aussi la STL. Plus boost, plus blitz, plus etc... tout un assemblage de librairies qui pour faire des choses assez simples vont vous prendre la tête.
    ? Tu connait un language qui fait tout sans lib externe????

    Citation Envoyé par dj.motte Voir le message
    Un ingénieur certifié conforme écrit qu'une chaîne de caractères se manipule ainsi, et les voici tous plongés derrière le clavier, pour faire comme le chef.
    Un ingénieur ou un commercial pourquoi pas, un vrai ingénieur je ne pense pas. On sait bien que les chefs on toujours tort . Je trouve que c'est un peu simpliste ce que tu dit, cela ne donne pas envie d'être programmeur.

    Citation Envoyé par dj.motte Voir le message
    Concernant les applications le C++ n'est qu'un langage parmi les autres qu'il faut savoir choisir à bon escient.
    Se borner à un seul langage que l'on sacralise, c'est bon pour les novices de l'informatique...
    C'est vrai, mais avec le C++, tu peut tous faire (je ne vois pas de contre exemple). Aprés, je pense que le c++ est un trés bon language pour comprendre les différents concept de programmation. Et si tu as bien tout assimiler, passer à un autre langage est plus simple.

  2. #162
    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
    Envoyé par BS
    Please note that these papers were written in late 2001 and early 2002 when it was still possible to imagine coordinated action by the C and C++ standards committees leading to practical results by the end of the decade. This didn't happen.
    ok. merci pour cette précisions.
    La FAQ est a jour : "Modified April 10, 2007", donc toujours d'actualité (je pense).
    Même si les "C and C++ standards committees" ne l'on pas fait et ne le feront pas, cela ne change pas ce que je pense .

  3. #163
    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
    Tu connait un language qui fait tout sans lib externe?
    On ne peut pas nier que la "bibliothèque standard" du java (peut être celle du c# aussi, je ne la connais pas) est bien plus fourni que celle du c++.

  4. #164
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    voici un article plus qu'intéressant:

    Citation Envoyé par Luc Hermitte Voir le message
    Plus sérieux, je suis tombé sur cet article d'il y a quelques mois. Stroustrup y parle du C++ depuis sa génèse jusqu'au C++0x. En lui-même l'article est intéressant.
    Relativement au sujet de ce troll interminable, il y a une mini comparaison au Java qui traite aussi d'aspects non évoqués dans ces 40 pages si je me souviens bien.

    Bref, c'est par là, je vous laisse vous faire votre propre opinion, bonne lecture.
    http://www.research.att.com/~bs/hopl-almost-final.pdf

  5. #165
    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 screetch Voir le message
    Tu peux tout faire mais peu de chances que ce soit le meilleur outil pour tout.
    Une webapp est mieux ecrite en Java qu'en C++.

    Pour les interfaces graphiques, C# montre clairement sa superiorité.

    C'est justement de cela dont parlais dj.motte, et j'aime beaucoup cette remarque : Se borner à un seul langage que l'on sacralise, c'est bon pour les novices de l'informatique...

    Connaitre plus de concepts est important, y'a pas que la POO dans la vie!
    Je suis tout a fait d'accord avec toi . Et je n'ai pas dit le contraire. Le sujet de ce poste est le C et le C++. Je voulais juste dire que dans le C++ tu retrouve tout les concepts de programmation , plus ou moins bien fait bien sur. Et ainsi passer du C++ a n'importe quel autre langage, est bien plus facile que l'inverse.
    D'où vive le C++.

  6. #166
    screetch
    Invité(e)
    Par défaut
    non! ^^

    - le C++ ne possede pas le garbage collector natif (comme en java) et la gestion de la memoire est a la charge du developpeur.
    - le C++ ne permet pas l'introspection (le RTTI) qui est un ajout de C#

    C++ permet d'emuler ces choses au mieux.


    En revanche le C++ possede tous les concepts du C et en ajoute d'autre. Mis a part quelques cas speciaux il est possible de se passer du C.

  7. #167
    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
    C'est justement de cela dont parlais dj.motte, et j'aime beaucoup cette remarque : Se borner à un seul langage que l'on sacralise, c'est bon pour les novices de l'informatique...
    Souvent je remarque que les gens qui disent ça au final ne maîtrisent rien réellement, et de plus ne connaissent en fait que des langages extrêmement similaires. (en général exclusivement des langages dynamiques impératifs/objet)
    Si on maîtrise le C++, on maîtrise tous les langages sans difficulté (statiques, dynamiques, orientés objet, fonctionnels, génériques), sauf les langages concurrents. Tout simplement parce que C++ couvre tous les domaines.
    Boost ftw

  8. #168
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Citation Envoyé par loufoque Voir le message
    on maîtrise tous les langages sans difficulté
    J'aurais plutôt tendance à dire on se débrouille.

  9. #169
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Si on maîtrise le C++, on maîtrise tous les langages sans difficulté (statiques, dynamiques, orientés objet, fonctionnels, génériques), sauf les langages concurrents.
    Connaitre le C++ n'aide en rien a maitriser des langages types dynamiquement, ni a maitriser des langages fonctionnels sans parler des langages "logiques".
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  10. #170
    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
    Connaitre le C++ n'aide en rien a maitriser des langages types dynamiquement
    Le typage dynamique objet se fait fort aisément en C++, même si nativement on doit faire face à des problèmes de gestion mémoire si on veut l'utiliser directement.
    Le duck typing dynamique est aussi possible, mais c'est plus compliqué à utiliser.

    ni a maitriser des langages fonctionnels
    C++ supporte parfaitement le paradigme fonctionnel par l'utilisation des foncteurs avec des templates ou par l'utilisation des foncteurs polymorphes.

    sans parler des langages "logiques"
    La programmation logique est un domaine très spécifique. Un framework de programmation logique peut néanmoins être écrit en C++ à l'aide de méta-programmation, qui permet de créer un langage de domaine spécifique à l'intérieur même de C++.
    Boost ftw

  11. #171
    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
    Citation Envoyé par loufoque Voir le message
    C++ supporte parfaitement le paradigme fonctionnel par l'utilisation des foncteurs avec des templates ou par l'utilisation des foncteurs polymorphes.
    Pour la programmation événementielle, c'est super pratique.

    Disons qu'après, on est pas forcément incité à programmer par récursion, à curryfier à tout va, à programmer sans utiliser d'effets de bords (même si la RVO et la NRVO existent, et bientôt autre chose)...

    Ensuite, utiliser for_each avec un foncteur anonyme, ça reste un peu acrobatique avec boost.lambda quand on veut manipuler des structures ou objets.

  12. #172
    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 loufoque Voir le message
    C++ supporte parfaitement le paradigme fonctionnel par l'utilisation des foncteurs avec des templates ou par l'utilisation des foncteurs polymorphes.

    Je ne comprend pas bien pourquoi tu dis cela. Dans des cas simple de récursivité terminal, on attend au minimum d'un compilateur de langage fonctionnel qu'il optimise le code au niveau de la gestion des appels.

    Ce que ne fais aucun compilateur C++ à ma connaissance.

    Par exemple, une simple fonction du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int somme(int n) {
     somme(n, 0);
    }
     
    int somme(int n, int acc) {
     if(n==0)
      return acc;
     else
      return somme(n-1, acc+1);
    }
    Ne bénéficiera pas d'optimisation au niveau de la gestion de la pile.
    Je ne répondrai à aucune question technique en privé

  13. #173
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Le typage dynamique objet se fait fort aisément en C++, même si nativement on doit faire face à des problèmes de gestion mémoire si on veut l'utiliser directement.
    Le duck typing dynamique est aussi possible, mais c'est plus compliqué à utiliser.


    C++ supporte parfaitement le paradigme fonctionnel par l'utilisation des foncteurs avec des templates ou par l'utilisation des foncteurs polymorphes.


    La programmation logique est un domaine très spécifique. Un framework de programmation logique peut néanmoins être écrit en C++ à l'aide de méta-programmation, qui permet de créer un langage de domaine spécifique à l'intérieur même de C++.
    Dans les 3 cas le support du C++ correspond au support du C pour la programmation OO et la programmation generique: rien. On peut se batir quelque chose de plus ou moins utilisable -- moins utilisable que certains frameworks OO pour le C que j'ai vu mais plus utilisable que tous les framework generiques pour le C que je connais -- mais beaucoup plus contraignant que ce que permet un langage avec un support direct.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  14. #174
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par millie Voir le message
    Je ne comprend pas bien pourquoi tu dis cela. Dans des cas simple de récursivité terminal, on attend au minimum d'un compilateur de langage fonctionnel qu'il optimise le code au niveau de la gestion des appels.

    Ce que ne fais aucun compilateur C++ à ma connaissance.
    g++ le fait. (Le probleme en C++ c'est que les appels terminaux sont souvent a des destructeurs d'objets locaux).
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  15. #175
    screetch
    Invité(e)
    Par défaut
    Salut,

    voila le code produit par VC++ en optim pour ton code!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int somme(int n, int acc) {
    // if(n==0)
    00401000  test        ecx,ecx 
    00401002  je          somme+6 (401006h) 
    00401004  add         eax,ecx 
    //  return acc;
    // else
    //  return somme(n-1, acc+1);
    }
    00401006  ret
    comme on peut le voir il y a un petit probleme c'est que visual a compris ce que tu voulais faire et il calcule direct n+acc.

    je voulais montrer un truc mais c'est rate ^^

    mais je voulais dire que les compilos C/C++ connaissent la tail call optimisation. Faut pas les prendre pour des cons, d'ailleurs je viens de prendre le compilo Visual C++ pour un con et il m'a condense un appel recursif en 3 lignes ASM, le bougre m'a bien demasqué

  16. #176
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    +1 pour ton post.
    j'ai pas pu empecher d'eclater de rire

  17. #177
    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 screetch Voir le message
    Salut,

    voila le code produit par VC++ en optim pour ton code!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int somme(int n, int acc) {
    // if(n==0)
    00401000  test        ecx,ecx 
    00401002  je          somme+6 (401006h) 
    00401004  add         eax,ecx 
    //  return acc;
    // else
    //  return somme(n-1, acc+1);
    }
    00401006  ret
    comme on peut le voir il y a un petit probleme c'est que visual a compris ce que tu voulais faire et il calcule direct n+acc.

    je voulais montrer un truc mais c'est rate ^^

    mais je voulais dire que les compilos C/C++ connaissent la tail call optimisation. Faut pas les prendre pour des cons, d'ailleurs je viens de prendre le compilo Visual C++ pour un con et il m'a condense un appel recursif en 3 lignes ASM, le bougre m'a bien demasqué

    Bon, ça m'attendra à pas essayer le -S avant de parler
    Je ne répondrai à aucune question technique en privé

  18. #178
    screetch
    Invité(e)
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Le C++ n'a pas l'introspection, mais il ne faut pas confondre cela avec le RTTI (Run Type Type Information), qui est géré en natif en C++ et qui n'est pas une "émulation du C#"... Merci de ne pas confondre
    je n'ai pas confondu.

    Le RTTI existe en C++ mais n'est pas poussé du tout, la seule chose qu'on peut utiliser c'est dynamic_cast. typeid() si vous voulez mais il n'y a aucune info. Je n'appelle pas ca RTTI car je suis trop exigeant !

    ce que j'appelle RTTI c'est obtenir des informations en runtime sur la composition de la classe comme demander sa taille, la creer, etc. Pour ces operations il faut une surcouche a base de templates et/ou de macro et/ou de preprocesseur custom (moc)

    Ce que j'appelle RTTI pour moi doit contenir l'introspection, sinon ca ne sert a rien (je me sers deja pas souvent de dynamic_cast, jamais de typeid...)

    Donc effectivement j'englobe l'introspection dans le RTTI.

    Ce que je considere different du RTTI et que C++ n'a pas aussi c'est la reflection, capacite d'un programme a se modifier soi meme. Ca existe en LISP et en C# mais pas en C++.

    Bref ^^

  19. #179
    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
    Voici juste un petit sondage pour voir ce que pense les gens sur la separation C et C++

  20. #180
    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
    Voici un lien sur un topic interressant sur comment passer du C au C++
    http://www.developpez.net/forums/sho...d.php?t=398644
    avec en autre
    Citation Envoyé par aoyou Voir le message
    Déjà, tu peux
    • enlever <stdio.h>
    • remplacer #define var value par static const int var = value;
    • bannir char * et n'utiliser que des strings
    • remplacer printf par cout
    • plus besoin de sprintf : concaténer les strings (string AAdirfile = AAdir + AAfile + ".dat"
    • Ne pas utiliser FILE mais les fstream
    • Plus de scanf avec les fstream (préférer fAnt >> signals[ii][0][jj] >> ...)
    • Ne pas oublier de fermer le fichier une fois que tu as terminé avec
    • Mettre les fonctions de lecture dans un fichier à part (réessaie, ça doit marcher, sûrement une erreur dans ta ligne de commande). En faire une classe ?
    • Le tableau multidimensionnel, bof pourquoi pas, tu peux-etre définir une classe qui correspondrait à une ligne du tableau et utiliser un vecteur à la place, c'est toi qui voit ce que tu veux faire.
    • Regarder un livre de C++.

    .
    ce que je ne comprend pas c'est remplacer #define var value par static const int var = value;

+ Répondre à la discussion
Cette discussion est résolue.
Page 9 sur 18 PremièrePremière ... 5678910111213 ... DernièreDernière

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