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

  1. #1
    Expert éminent sénior
    Avatar de Idelways
    Homme Profil pro
    Développeur Ruby on Rails / iOS
    Inscrit en
    Juin 2010
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Ruby on Rails / iOS

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 374
    Points : 68 548
    Points
    68 548
    Par défaut Quel est pour vous le défaut le plus gênant du C++ ? Un développeur chevronné fait la liste ses faiblesses
    Quel est pour vous le défaut le plus gênant du C++ ?
    Un développeur chevronné fait la liste des faiblesses de son langage préféré


    Les critiques qui mettent en relief les défauts des langages de programmations viennent en général de la part des développeurs qui utilisent des technologies autres, voir concurrentes.

    C'est pour cette raison que la critique qu'on vous propose pour ce débat nous semble intéressante, elle est signée du pseudo « razvanpetru » derrière lequel se cache un développeur C++ aux 10 années d'expérience.


    L'article présente les défauts en deux parties. Parmi ceux qui gênent l'auteur, on trouve:

    Le temps de compilation et la gestion des dépendances
    La bibliothèque standard, qu'il juge réduite.
    Le manque de réflexivité et la déduction des types
    Les messages d'erreurs des templates
    Le support de l'internationalisation sur la bibliothèque standard

    Parmi les défauts souvent pointés du doigt et qui ne le gênent pas, il cite :

    La gestion et la corruption de la mémoire
    La gestion du multitâche
    Le support des chaines de caractères
    Les exceptions
    STL, Boost et les templates en général

    Mais que l'on ne s'y trompe pas. Pour « razvanpetru », il s'agit juste du prix à payer, pas de défauts qui décrédibiliseraient le C++.

    Car comme dit le proverbe : « personne n'est parfait ».

    Et pour vous, quel est le défaut le plus gênant du C++ ?

    Source : lire l'article: What's wrong with C++


    Lire aussi :

    Le moc (meta-object compiler) a-t-il toujours une raison d'exister, maintenant que les compilateurs ont évolué ?
    Microsoft découvre une faille dans MFC qui pourrait aboutir à des dépassements de tampon
    Microsoft Visual C++ 2010 Express : Téléchargement, installation et configuration par 3DArchi


    Les rubriques (actu, forums, tutos) de Développez :

    C++
    Qt
    Langages




    En collaboration avec Gordon Fowler

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 382
    Points : 4 937
    Points
    4 937
    Par défaut
    ce qui me gêne le plus dans le c++, je l'ai souligné dans un autre topic, c'est le manque de cohérence entre toutes les briques;

    du genre la nomenclature comme dans setw, setprecision, des fois en abrégé, des fois non, difficile de comprendre pourquoi mais ce n'est le plus dramatique.

    un autre que je trouve plus problématique s'admire sur la signature du main standard : int main(int argc, char **argv) et ses dérivés avec le char* argv[], on a une bibliothèque standard avec quand même pas mal de choses MAIS pour l'entrée d'un programme on régresse du c++ vers le c; pour rester dans le c++ quelque chose du style de int main(vector<string> args) aurait été plus approprié selon moi.

  3. #3
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut
    Deux défaut :
    • Les gens qui enseignent/pratiquent le C++ comme du C
    • Les différentes implémentations des compilateurs ...

  4. #4
    Membre actif
    Homme Profil pro
    Consultant BigData
    Inscrit en
    Juillet 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant BigData

    Informations forums :
    Inscription : Juillet 2009
    Messages : 129
    Points : 280
    Points
    280
    Par défaut
    • Le manque de réflexivité
    • Les messages d'erreurs parfois trop verbeux, on obtient pas l'information que l'on souhaite rapidement je trouve
    • La bibliothèque standard trop pauvre
    • Sur une note plus légère : ce qui me gêne c'est qu'il ne soit pas plus utilisé



  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2005
    Messages : 541
    Points : 1 898
    Points
    1 898
    Par défaut
    J'en pointerais un beaucoup plus simple: l'illisibilité...
    If it's free, you are not the customer, you are the product.

  6. #6
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 476
    Points : 1 785
    Points
    1 785
    Par défaut
    Pas d'éditeur aussi puissant qu'on peut en trouver dans le monde Java par exemple, donc on se retrouve à faire énormément de copier-coller et à retaper beaucoup de chose ( déjà rien que les doublons .h/.cpp, limite ça donne parfois envie de faire que de l'inline...).

  7. #7
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    - les écarts et omissions des différents compilos par rapport au standard
    - pas d'ABI standard
    - preprocesseur trop limité/archaïque
    - grammaire très complexe (difficile à parser pour les IDE etc)

  8. #8
    Invité
    Invité(e)
    Par défaut
    Pour :
    -Rapidité d'exécution
    -interface avec l'os/hardware sans intermédiaire permettant de bypasser tous les automatismes
    -Capacité à tout gérer de multiples manières
    -Possibilités d'optimisation hallucinantes
    -Possibilité de faire du C (vitesse, types natifs, portabilité)

    Contre :
    -Redondance des déclarations
    -Long à programmer, à débugger
    -Risque de crash système
    -Lisibilité aléatoire (dépendant de tierces parties inégales)
    -Syntaxe objet ébouriffante, compliquée
    -Héritage multiple, surcharge opérateurs peuvent rendre un code vraiment énigmatique
    -> Record du code tordu partagé avec les expressions régulières kilométrique de perl !
    Dernière modification par Invité ; 19/07/2010 à 17h20.

  9. #9
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    C'est marrant, j'ai pas l'héritage multiple dans la liste..

    Pourtant c'est une "fonctionnalité" qu'on évite avec soin dans "les autres nouveaux langages objet" : Java, C#...
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 342
    Points : 123
    Points
    123
    Par défaut
    Le temps développement !

    Les stats montrent que pour coder la même chose le C++ n'est pas super bien placé en temps de codage.
    Le java par exemple est mieux de ce point de vue !

  11. #11
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 60
    Points : 73
    Points
    73
    Par défaut
    Ah je suis soulagé de voir que je ne suis pas le seul à reprocher à ce langage les inconvénients cités plus haut !
    Venant de la programmation objet avec le langage Java je m'accusais souvent de critiquer certaines facettes du C++ parce que je suis pro-Java, mais de voir que je ne suis pas seul, je me dis que le problème vient peut-être pas de moi !

    Pour moi les inconvénients :
    - temps de développement élevé (après je suis peut-être pas bon en C++ et je n'utilise peut-être pas les bonnes API)
    - librairie standard très (trop ?) réduite
    - des fois d'une illisibilité déconcertante
    - manque de conventions de nommage (ça je ne sais pas trop à qui/quoi il faut le reprocher)
    - le couple .h / .cpp qui arrive à me rendre dingue ! (pourquoi pas une gestion "à la Java" ?)
    - et encore beaucoup mais je ne veux pas passer pour un rabat-joie...

  12. #12
    Nouveau membre du Club
    Inscrit en
    Juillet 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 21
    Points : 25
    Points
    25
    Par défaut
    Possibilité de faire du C (vitesse, types natifs, portabilité)
    Utiliser les types natifs (et faire des algorithmes de façon ultra optimisée) c'est tout à fait dans l'idée du c++ (pas seulement du c) et cela ne va aucunement à l'encontre de l'esprit du langage.

  13. #13
    Membre actif
    Homme Profil pro
    Consultant BigData
    Inscrit en
    Juillet 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant BigData

    Informations forums :
    Inscription : Juillet 2009
    Messages : 129
    Points : 280
    Points
    280
    Par défaut
    Citation Envoyé par alexis b Voir le message
    En ce qui me concerne, je fais du vrai c++ (c'est à dire de la programmation orientée objet and all), mais je suis également très bon en c .


    Utiliser les types natifs (et faire des algorithmes de façon ultra optimisée) c'est tout à fait dans l'idée du c++ (pas seulement du c) et cela ne va aucunement à l'encontre de l'esprit du langage.
    La possibilité de faire du C n'a pas été évoquée comme point négatif, au contraire. Nous sommes donc d'accord sur ce point

  14. #14
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par psychadelic Voir le message
    C'est marrant, j'ai pas l'héritage multiple dans la liste..

    Pourtant c'est une "fonctionnalité" qu'on évite avec soin dans "les autres nouveaux langages objet" : Java, C#...
    Il est nécessaire à la prog par contrat native.
    Et quand on voit la source (*) des problèmes avec l'héritage multiple, c'est limite l'héritage qu'il faudrait interdire....
    De plus tous les "nouveaux" langages à objets ne l'évitent pas, cf ruby qui je trouve a un modèle plus propre que les langages auxquels tu pensais.

    (*) La compréhension même du LSP -- qui n'a rien de propre au C++.


    Accessoirement, l'article original est plus intéressant que le résumé fort trollesque qui initie ce fil.

    Et +1 à confusion entre C++ et "truc qui ressemble à du C" qui gangrène la pratique, et l'enseignement.
    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...

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 40
    Points : 103
    Points
    103
    Par défaut
    Je rajouterais :
    - la portabilité toute relative.
    - le dédain de la STL par les librairies graphiques ( qui chacune redéfinissent les types de bases, chaînes, listes, tableaux...)
    - la complexité à intégrer des modules développés par des moyens différents

    JB

  16. #16
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Et pour vous, quel est le défaut le plus gênant du C++ ?
    Le fait qu'on est jamais sûr de ce que fait une ligne de code... merci les #define, la surcharge d'opérateur, les transtypages implicites, ...
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Oussapik Voir le message
    La possibilité de faire du C n'a pas été évoquée comme point négatif, au contraire. Nous sommes donc d'accord sur ce point
    Oui, je l'ai mis dans le pour (avantages)
    Ok pour les types natifs.
    Le fait que C++ soit historiquement un surensemble de C cache des subtilités notamment dans la gestion des strings. Elles sont la force et la faiblesse du C mais beaucoup plus rapides avec pointeur (malloc/free) que tous les autres systèmes. Par contre la portabilité d'un algo C utilisant des char* est mauvaise sur un environnement new/delete, avec ou sans garbage collection

    Le C a pour lui une omniprésence dans l'embarqué, traitement de signal, ... partout ou les perfs sont cruciales en fait.. il peut aussi tourner sur un os quasi-inexistant. C++ le pourrait aussi mais c'est plus compliqué, dans l'embarqué , C reste la réference

  18. #18
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Points : 833
    Points
    833
    Par défaut
    Et pour vous, quel est le défaut le plus gênant du C++ ?
    L'absence (mais c'est sur le point d'évoluer, cf C++0.X) des fermetures
    Linux > *

  19. #19
    Membre expérimenté Avatar de Firwen
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2009
    Messages : 472
    Points : 1 587
    Points
    1 587
    Par défaut
    Je précise avant tout que C++ est de loin mon langage favori pour tout un tas de raisons trop longues à énumérées.


    Mais c'est vrai qu'il a des défauts, parmi lesquels en vrac :

    - Pas de portée parentale dans les nested class / struct / functor
    - Support d'unicode bancale de base.
    - Typage sur les retours constants pas toujours tops suivant les compilos
    - templates pas assez standarisés qui dépendent trop du compilo
    - STL trop pauvre, qui fait peur aux débutants et qui force à utiliser boost ou autre.
    - Une édition des liens dégeulasses et pas standardisés (contrairement à C) ce qui complique pas mal les bindings vers d'autres langages et la creation de libs.
    - pas de gestion des co-routines sans libs externes.
    - Pas d'internationalisation de base.
    - La résolution des dépandences trop calquée sur le C.
    - Déclaration trop verbeuses
    - Les systèmes de signaux / callback devraient être intégrés au langage au lieu de dépendre du moc, des templates, des preprocesseurs ou de tout autre système douteux.
    It's not a bug, it's a feature

  20. #20
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut
    +1 pour la gestion de l'Unicode et pour le couple .h/.cpp un peu lourd

Discussions similaires

  1. Réponses: 32
    Dernier message: 26/03/2010, 10h22
  2. Quel est pour vous le meilleur éditeur xml ?
    Par neo.51 dans le forum XML/XSL et SOAP
    Réponses: 87
    Dernier message: 20/02/2010, 20h04
  3. Quel est selon vous le plus gros flop d'Apple ?
    Par Katleen Erna dans le forum Actualités
    Réponses: 90
    Dernier message: 13/09/2009, 16h16
  4. Quel est, selon vous, le plus gros flop de Google ?
    Par Katleen Erna dans le forum Actualités
    Réponses: 14
    Dernier message: 10/09/2009, 23h35
  5. Quel est le langage de programmation le plus pertinent pour du traitement audio ?
    Par LeTouriste dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 02/11/2006, 11h42

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