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++ serait-il vraiment victime de son passé ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Citation Envoyé par Amine Horseman Voir le message
    elle conseille aux nouveaux développeurs qui veulent apprendre le C++ de considérer que le langage a changé son nom et s'appelle maintenant "Modern C++". En effet, cela donne un résultat nettement différent dans les recherches sur le web.
    Voilà un conseil pertinent qui gagnerait à être officialisé une fois le modèle de compilation modernisé.

  2. #2
    Membre très actif

    Homme Profil pro
    Développeur PHP/Symfony // Mentor OpenClassrooms
    Inscrit en
    Octobre 2014
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur PHP/Symfony // Mentor OpenClassrooms
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 203
    Billets dans le blog
    3
    Par défaut
    J'ai toujours considérer le C++ comme une alternative au C, en moins bien cependant, le C reste à mes yeux un modèle, il est touffu, complexe et déroutant mais il forme des dévs de qualité qui savent mettre les mains dans la sauce sans rechigner et qui savent gérer un language strict.

    Le C++ n'est pas mauvais en soi, disons qu'il différe du C en une version moins directe et moins "lisible" à mes yeux, mais là encore, chacun y verra midi à sa porte.

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    402
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 402
    Par défaut
    @Luc: oui, le fait de présenter en premier string et vector est déjà un grand pas. Et je n'ai pas mieux comme tuto en français a recommander (pour l'instant, mais cela finira par arriver, j’espère)

    (si je voulais troller, je dirais que pour commencer, il utilise code::block et pas vim, c'est déjà un gros point négatif). Plus sérieusement, de mémoire, il conseille d'utiliser const, mais ne le fait jamais. Il déclare ses variables en début de fonction. Plus généralement, il ne transmet pas l'importance du RAII en général. Je trouve que cela se sent qu'il (il = mathieu) n'est pas développeur C++.

    Citation Envoyé par Guikingone Voir le message
    J'ai toujours considérer le C++ comme une alternative au C, en moins bien cependant, le C reste à mes yeux un modèle, il est touffu, complexe et déroutant mais il forme des dévs de qualité qui savent mettre les mains dans la sauce sans rechigner et qui savent gérer un language strict.
    Luc aime citer l'article suivant : Retour de fonctions ou exceptions ?
    Tu vois souvent du code C qui ressemble au code donné a la fin ? (c'est a dire un code qui vérifie correctement les erreurs)

    Ce qui disent que le C forme de "bons" développeurs inversent le raisonnement. Il est vrai que pour coder proprement en C, il faut être rigoureux. Cela ne veut peut dire que ceux qui apprennent le C deviennent rigoureux. Une grande partie des apprenants font juste du code crade, sans le savoir. Parce les défauts de langages "bas niveau" comme le C (et en partie le C++) ne se voient que sur les projets conséquents, pas sur les petits projets pédagogiques que font les étudiants pendant leur études. (Le raisonnement est similaire pour ceux qui n'utilisent pas les outils du C++ "moderne", c'est parce qu'ils n'ont jamais passe plusieurs jours a rechercher l'origine d'un comportement indéterminé pendant plusieurs jours/semaines sur un projet de plusieurs centaines de milliers ou millions de lignes de code)

    Beaucoup de codeur C et C++ programment dans le monde magique des bisounours ou il n'y a jamais d'erreurs...

  4. #4
    Membre très actif

    Homme Profil pro
    Développeur PHP/Symfony // Mentor OpenClassrooms
    Inscrit en
    Octobre 2014
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur PHP/Symfony // Mentor OpenClassrooms
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 203
    Billets dans le blog
    3
    Par défaut
    >Mintho Carmo: C'est ce que je sous-entend, la rigueur est un principe fondamental pour ceux qui s'attachent au C.

    Si je regarde ne serait-ce que 10% des codes d'étudiants qui veulent faire du dév seul 3-4 % savent comment organiser, hiérarchiser et mettre au propre un code correct, je ne me vante pas comme étant forcément hiérarchisé comme certains mais je pense pouvoir mettre mon poing sur la table afin de me lever contre cette génération de dévs en mousse ...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Je parlais plutôt de ça :

    le gêne est que « nous avons encore la possibilité d'utiliser new et delete
    Je voulais parler de ça mais il est parfois nécessaire de devoir libérer de la mémoire explicitement.

    Dans ce cas là delete est la seule solution.

  6. #6
    Membre éprouvé Avatar de KsassPeuk
    Homme Profil pro
    Ingénieur Chercheur
    Inscrit en
    Juillet 2013
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 138
    Par défaut
    Citation Envoyé par Lolilolight Voir le message
    Je voulais parler de ça mais il est parfois nécessaire de devoir libérer de la mémoire explicitement.

    Dans ce cas là delete est la seule solution.
    Rien n'empêche ta capsule RAII de fournir ce qu'il faut pour ça dans son interface (unique_ptr<T>::reset(), vector<T>::resize, etc ...), et celles de base répondent à une très vaste partie des besoins. Tu peux avoir besoin de delete si tu implémentes ton propre type RAIIsant mais encore une fois, il est fort possible que l'utilisation des conteneurs existant te permette cette implémentation (efficace). Même si tu implémentes ton propre type, avec un GC en manager derrière, il est très fortement probable que tu n'aies pas besoin de delete.

  7. #7
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 891
    Par défaut Non, l'avantage du C++ c'est son passé, son optimisation
    Pour le moi le new/delete n'est pas l'inconvénient du C++ mais l'avantage. Les smart pointer, c'est très bien mais pas optimal, or l'intérêt du C++ c'est la rapidité et l'efficacité du code produit. Certains d'ailleurs refusent d'utiliser le C++ et préfèrent le C pour le fait que le C interdit d'utiliser les facilités. C'est la seul raison pour laquelle le C/C++ n'est pas mort.

    Si vous n'utilisez que des smart pointer et des options très avancé, c'est que vous n'avez rien a faire en C++, utilisez plutôt du Java, vous risquerez moins de faire planter la machine. Tout l'intérêt du C++11 c'est de permettre l'utilisation de fonctions haut niveau pour les parties les moins critique et de garder l'utilisation de fonction très efficace (ancienne) et précise pour les parties critique.

    Vous avez le même principe dans tous langages. Quand vous développez les couches haute de l'application ou une version de démonstration, alors vous cherchez la productivité. Mais pour les parties critique, vous devrez optimiser votre code. C'est vrai que vous soyez en C/C++ ou en Java, PHP, Python et même bash ou en utilisation de logiciel.
    Quel informaticien ne double click sur un fichier pour l'ouvrir (Avec Eclipse ou OpenOffice) dans 90% des cas mais dans certains cas (c'est un gros fichier ou jeter un coup d'oeil rapide) ouvre le fichier avec Gedit (Notepad++) ou même vi/emacs pour éviter de le copier en local?

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 487
    Par défaut
    abriotde, ton commentaire est en total contradiction avec le concept de fossé sémantique de Seymour Cray.
    C'est le genre d'argumentaire que j'écoutais dans ma prime jeunesse entre l'assembleur et le C.
    Un bon programmeur choisi le langage le plus facile et maintenable permettant d'arriver aux objectifs, un point c'est tout.
    Et le TimeToMarket explose quasiment systématiquement les performances (si ça rame, on prend une machine plus grande).

  9. #9
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Il y a une tendance visible à vouloir faire du C++, un CSharp like ou un Java like. Je pense que c'est problématique, car le C++ ne pourra jamais proposer des Frameworks aussi puissants, notamment au niveau IHM. Boost est sur la bonne voie, mais sans IHM gratuite/standard/portable, je ne vois pas l'intérêt de s'aligner sur les L4G.

    abriotde a bien résumer la situation. La force du C++, c'est son passé.

    Les smart pointeurs et autre garbage collector ont des failles, et ne maîtrisent rien du tout sur la gestion de l'allocation mémoire. Il vaut mieux un pointeur nu qui te pète à la tronche, le débuggeur te diras très vite où cela se trouve, plutôt que de passer des semaines avec des outils "one again" pour dépister la fuite.

    En ce qui concerne l'inclusion de fichiers, Microsoft à résolu le problème depuis belle lurette. Cela s'appelle les en-têtes précompilés....

  10. #10
    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 abriotde Voir le message
    Pour le moi le new/delete n'est pas l'inconvénient du C++ mais l'avantage. Les smart pointer, c'est très bien mais pas optimal, or l'intérêt du C++ c'est la rapidité et l'efficacité du code produit.
    Les smart pointers sont tout à fait utilisables dans un contexte où les performances comptent.
    Citation Envoyé par abriotde Voir le message
    Certains d'ailleurs refusent d'utiliser le C++ et préfèrent le C pour le fait que le C interdit d'utiliser les facilités. C'est la seul raison pour laquelle le C/C++ n'est pas mort.
    Et ce faisant, ils ont du code avec plus de bugs et moins de performances... J'en veux pour exemple la bibliothèque standard du C (donc quand même un truc éprouvé et sur lequel pas mal de personnes sont passées pour la corriger/l'optimiser). Il y a peu, Microsoft a réimplémenté la sienne en C++ et sans se restreindre sur les fonctionnalités du langage. Ils ont corrigé ce faisant quelques bugs/fuites mémoire, et amélioré les performances !
    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.

  11. #11
    Membre actif
    Homme Profil pro
    Programmeur / Formateur C/C++
    Inscrit en
    Juillet 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Programmeur / Formateur C/C++

    Informations forums :
    Inscription : Juillet 2014
    Messages : 62
    Par défaut
    Le C++ n'a pas de problème.
    Par contre le plus gros problème de CoderGears c'est CoderGears

  12. #12
    Membre éclairé Avatar de a028762
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 419
    Par défaut
    J'ai moi même plusieurs fois tenté d'apprendre le C++ , après avoir développé en Fortran, en Java et en Php (excusez moi).
    Le fait de me retrouver avec les contraintes du C (que j'avais appris par ailleurs sans pratiqué) m'a un peu dégouté d'aller plus loin.
    Tant pis

  13. #13
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Citation Envoyé par a028762 Voir le message
    Le fait de me retrouver avec les contraintes du C (que j'avais appris par ailleurs sans pratiqué) m'a un peu dégouté d'aller plus loin.
    Lesquelles ?

  14. #14
    Membre confirmé

    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 120
    Billets dans le blog
    1
    Par défaut Pensez en C++ antérieur à 2011
    Bonjour,

    Ce fil de discussion m'inquiète beaucoup.

    en effet, je viens du VB6 et j'attaque le C++. J'ai déjà créé une classe en C++ ANSI. J'ai étudié "Ivor Horton's Beginning Visual C++ 2008" et je lis "Pensez en C++" qui date de 2008.

    Je me rends compte en lisant vos posts que toutes ces lectures sont obscolètes. Pouvez-vous me le confirmer ?

    Merci

  15. #15
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    "Pensez en C++" est bien plus vieux que 2008.
    Côté design, il est très intéressant, mais côté bonnes pratiques sur le C++, c'est du C++ historique -- et tu risques de te voir corriger à chaque post sur les posts -> les gens qui répondent finissent par être fainéants et ne plus vouloir prendre la peine de chercher à corriger des codes qui ont des pointeurs qui se baladent nus.

    Pour les livres qui ciblent un outil, je me méfie toujours. Je te renvoie au fil qui traite des livres pour le C++: http://www.developpez.net/forums/d68...rs-livres-cpp/ (il y a peut-être un autre fil -- si /C++ Primer/ n'est pas cité, la dernière version est bien normalement)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  16. #16
    Membre éprouvé

    Homme Profil pro
    Artiste, chercheur, enseignant, entrepreneur
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Artiste, chercheur, enseignant, entrepreneur
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Par défaut et le C# alors ?
    Bonjour,

    Il me semble que le C# qui est un dialecte C++ répond déjà à beaucoup des interrogations mentionnées ici :
    -plus d'include
    -plus de pointeur sauf à définir des portions "unsafe" dans le code
    -un système de référence généralisé ...

    Où situez-vous le C# par rapport au modern C++ ?

    Le C++ semble être en phase de métamorphose. Il peut s'adapter sans doute à différents contextes et ainsi se partager en sous-dialecte. Cette plasticité c'est peut-être aussi ce qui fait sa force...

    Je rappelle que le C# n'est plus une propriété Microsoft.

  17. #17
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Citation Envoyé par fgets Voir le message
    Où situez-vous le C# par rapport au modern C++ ?
    Sur le plan technique, je ne peux pas répondre (les références de C# sont comme celles de C++ ou plutôt comme celles de Java ?)
    Mais :
    - pas normalisé à partir de C# 3.0 (et pas vraiment portable).
    - basé sur un garbage collector et non le RAII.

    Citation Envoyé par fgets Voir le message
    Je rappelle que le C# n'est plus une propriété Microsoft.
    L'implémentation de Microsoft si ; et actuellement, il n'existe pas d'implémentation libre ou open source de la même version.
    De plus, les implémentations libres ou open source implémentent le langage mais pas forcément la bibliothèque .NET (qui est la propriété de Microsoft ?)

  18. #18
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 487
    Par défaut
    A la base C# est bien plus proche de JAVA que de C++.
    C++/CLI est un dialecte C++ mais pas C#.

  19. #19
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Actuellement, Mono est toujours limité à C# 2.0, l'avancement est ici.

  20. #20
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Et encore, j'aurais plutôt l'impression que dire que le C++/CLI est un dialecte de C++, c'est un peu comme dire que le C++ est un dialecte de C.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Serait-ce vraiment la fin du réseau peer-to-peer ?
    Par Cedric Chevalier dans le forum Actualités
    Réponses: 16
    Dernier message: 14/07/2013, 01h04
  2. Réponses: 3
    Dernier message: 03/02/2012, 08h52
  3. Réponses: 238
    Dernier message: 10/03/2011, 21h44
  4. Réponses: 4
    Dernier message: 15/04/2010, 09h49
  5. [power AMC] Quels est vraiment son utilité?
    Par alpachico dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 08/08/2005, 08h24

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