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++

  1. #1
    Expert éminent sénior

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Septembre 2014
    Messages : 194
    Points : 12 291
    Points
    12 291
    Par défaut Le C++ serait-il vraiment victime de son passé ?
    Le C++ serait-il vraiment victime de son passé ?
    Pour l’équipe CoderGears « le plus grand problème du C++ c’est son passé »

    CoderGears Team revient avec une nouvelle analyse concernant le langage de programmation C++. Après avoir affirmé que C++ devra d’abord revoir son mécanisme d’inclusion pour devenir « vraiment un langage moderne », CoderGears Team estime aujourd’hui que « le plus grand problème du C++ c’est son passé »

    Rappelons d’abord que la nouvelle norme du langage, sortie en 2011, avait reçu un accueil chaleureux de la part de la communauté C++. « Cependant, à cette année, ce langage avait un passé de plus de 30 ans. Et ce n’est pas facile de convaincre les développeurs que le nouveau C ++ simplifiera les nombreuses facettes frustrantes du langage », proclame l’équipe de CoderGears.

    L’exemple donné est la gestion de la mémoire. Pendant de nombreuses années, on utilisait les deux mots clés: "new" pour allouer de l’espace mémoire et "delete" pour libérer l’espace alloué. Ce qui était contraignant surtout c’était qu’il ne fallait pas oublier de libérer la mémoire allouée manuellement. Chose dont les développeurs n’ont plus besoin d’y penser maintenant, puisque le Modern C++ encourage l’utilisation des pointeurs intelligents. Ce serait donc une bonne nouvelle, mais quel est le problème ? Selon CoderGears, le gêne est que « nous avons encore la possibilité d'utiliser new et delete, et bien sûr nous ne pouvons pas éliminer cette possibilité pour de nombreuses raisons » et ils expliquent que tous les efforts de la communauté C++ et les experts du domaine n’étaient pas suffisants pour changer les anciennes habitudes et que « si vous donnez à quelqu'un la possibilité de faire quelque chose avec un langage ou un outil, ne soyez pas surpris s'il le fait ».

    Ils donnent aussi quelques exemples pour appuyer leur argument : « il suffit de chercher sur le Web "C++ object allocation" et regardez si le premier lien parle de pointeurs intelligents ». Sinon, « allez dans n'importe quelle bibliothèque universitaire, et demandez un livre C++, et vous trouverez que le chapitre sur l'allocation mémoire et la création des objets parle surtout des mots clés new et delete ».

    En résumé : si un nouveau développeur veut apprendre le C++, il va trouver plus de ressources sur le "C avec des classes" que le "C ++ moderne".

    Quant aux solutions, l'équipe de CoderGears est d'accord sur le fait qu'il n'y a pas de solution magique. Selon eux, nous pourrons faire en sorte que les compilateurs affichent des avertissements lors de l'utilisation de mots clés et fonctions obsolètes, « mais cette solution n'aura pas un grand impact », et 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.

    Source : CoderGears Blog

    Et vous ?

    Êtes-vous d’accord avec CoderGears ? Pourquoi ?

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Août 2005
    Messages : 45
    Points : 32
    Points
    32
    Par défaut
    Je pense que le mécanisme d'inclusion de C++ est certainement la partie la plus archaïque de ce langage. Il est vrai que de devoir répéter à chaque fois le prototype de la fonction dans le .h, puis la classe d'appartenance dans le .cpp est très verbeux et assez couteux en temps, sans compter les redéclarations de classes à mettre en haut du .h pour chaque classe utilisée (j'évite les include non nécessaires car j'ai souvent eu des problèmes de déclaration circulaires).

    A moins de mettre l'intégralité de la classe dans le .h, comme je l'ai déjà vu, ce qui me semble pas très propre, je ne vois pas de solution à l'heure actuelle.
    Si ceci est nécessaire pour la compatibilité avec le C, il serait pourtant relativement aisé de s'en libérer, si le compilateur effectuait de par lui même une première analyse des classes nécessaires avant la compilation...
    Ou alors, un mécanisme d'inclusion alternatif (indiquer quelle classe on utilise, mais pas en incluant un header), laissant le soin au comilo de faire les inclusions strictement nécessaires en générant dynamiquement un header ?

    Après, il est possible qu'il existe des mécanismes de ce genre que je ne connais pas : je viens du C, j'utilise C++ depuis peu, et j'ai naturellement appliqué les méthodes que je connaissais...
    Je les remplace peu à peu (j'aime le concept de nullptr de C++ 11 par exemple), mais j'ai des habitudes assez bien ancrées.

    Pour les Smart pointers, je compte m'y mettre à terme, mais j'ai déjà eu du mal à dissocier la notion de malloc de celle de new, alors chaque chose en son temps !

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut, il m'arrive encore d'avoir à utiliser new et delete dans certains cas, je ne penses pas qu'il faille supprimer ces mots clé, je prend un exemple :

    J'ai une grille dynamique qui contient x * y * z cellules, qui contiennent des entités, et je veux delete la cellule lorsqu'elle ne contient plus aucune entité.

    Je ne crois pas qu'un pointeur intelligent me permettrait de faire cela, tout du moins, pas sans devoir faire un release et puis un delete...

    Donc bon pour les tableaux de pointeur dont certains pointeur peuvent être null, ont a encore besoin de du mot clé delete.

    Pour le mot clé new, je ne sais pas par contre, je ne pense pas qu'on en aie encore réellement besoin..., mais bon, peut être que dans certains cas, il reste aussi nécessaire, et puis, beaucoup de bibliothèques utilisent encore le c++ 98.

    PS : ou bien alors je peux me tromper, le pointeur intelligent delete peut être le pointeur si je le met à nullptr.

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 193
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 193
    Points : 17 161
    Points
    17 161
    Par défaut
    Dans ce débat inclusion/import, je me demande comment font d'autres langage intégralement compilés (dans ni Java, ni C#, ni python...)
    Il faut bien au cours de la compilation associer des morceaux de codes séparés.

    Cela sous-entend d'avoir un moyen d'écrire dans un morceau de code "ceci existe, et c'est là bas", tout en limitant la taille du code.
    Jusque-là, on a des symboles externes (toutes les déclarations de fonctions, et les variables extern), qu'il faut déclarer manuellement dans l'unité de compilation pour pouvoir les utiliser.
    Pour avoir des modules utilisables, il faudra quelque chose d'assez subtile/tordu pour ne pas changer l'aspect du code.
    La force du C++, c'est que (quasiment) toutes les erreurs de code sont connues à la compilation, et garder cela avec les modules est difficile.
    C'est d'ailleurs pour ca que ca prend du temps.
    Ca et le fait de ne pas devoir briser les codes existant (même les récents)



    @Epok__
    Pour le malloc!=new, il y a une manière de voire les choses: T * var = new T(...); équivaut à peu près à T * var = malloc(sizeof T);*var=T(...);.
    C'est à la fois l'allocation et l'initialisation de la mémoire. Un petit peu comme un calloc, mais en mieux, beaucoup mieux.
    Il s'agit de respecter une règle simple "toute chose est construite ou n'est pas du tout".
    Une valeur n'est ainsi pas allouée mais inconstruite.

    C'est aussi pour cela qu'on ne doit pas coder une classe avec une fonction init() que l'utilisateur doit appeler. (hors le builder...)
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 193
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 193
    Points : 17 161
    Points
    17 161
    Par défaut
    De quoi parles-tu, Lolilolight?

    Il n'est pas du tout question de supprimer ou non new et delete, mais de remplacer #include
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  6. #6
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 193
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 193
    Points : 17 161
    Points
    17 161
    Par défaut
    Et aussi delete[] et les smart array pointers
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  7. #7
    Membre régulier
    Homme Profil pro
    Dev C/C++
    Inscrit en
    Octobre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Dev C/C++

    Informations forums :
    Inscription : Octobre 2011
    Messages : 19
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par Lolilolight Voir le message
    ou bien alors je peux me tromper, le pointeur intelligent delete peut être le pointeur si je le met à nullptr.
    Tu as même mieux, une fonction "reset()" qui faire tout ça proprement.
    Et pour ce qui est du tableau, std::vector<> fait très bien le boulot

  8. #8
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 68
    Points : 169
    Points
    169
    Par défaut
    ... devoir répéter à chaque fois le prototype de la fonction dans le .h
    c'est, je trouve, une contrainte plutôt positive de faire un plan et de le suivre, et ça permet d'avoir un résumé clair de la classe, même si les IDE actuels permette d'afficher de tel prototypes facilement avec des classes dans d'autres langages.
    Je suis sous java depuis quelques années maintenant ( je dois bosser sur du Java EE ) , et quand je lis du code C++ en passant par les .h puis .cpp , je m'y retrouve plus que dans une classe java .
    Après, même si les IDE permettent d'afficher de tel résumé dans d'autres langages, ils peuvent, inversement, générer une base de tes fonctions depuis le prototype...

    Pour ce qui est du passé, c'est sûr que les anciennes versions de C++ ont bien des différences avec le C++ actuel ( ont a eu un peu la même discussion sur Java ce matin, même si il y a moins de différences, c'est quand même plus efficace maintenant )

    Pour ma part, les évolutions du C++ me donnent envie de m'y remettre.

  9. #9
    Membre éclairé

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

    Informations forums :
    Inscription : Décembre 2013
    Messages : 397
    Points : 698
    Points
    698
    Par défaut
    Quand on a un projet de plusieurs milliers de classes et plusieurs millions de lignes de code, mulit plateformes, qui utilise des dizaines de libs différentes, difficile de changer du jour au lendemain tout le code. Rien que le fait de mettre a jour les compilateurs utilisés peut déjà pose des problèmes (mettre a jour un compilateur sur son poste personnel ne pose généralement pas de problème, mais mettre a jour l'ensemble des serveurs de build, pour toutes les versions prises en charge, cela devient compliqué)

    Donc oui, forcement, un langage qui est plus ancien aura une base de code a maintenir, il sera plus difficile de casser la compatibilité du langage. Un langage nouveau n'aura pas ce problème, il n'a pas de code existant a préserver, il peut faire tous les choix sémantique qu'il veut.

    Et le langage en soi n'est pas le problème, c'est bien l’incapacité des gens a faire évoluer leur pratique qui pose problème. Les pointeurs intelligents et le RAII existe depuis de nombreuses années.
    Le problème des ressources d'apprentissage obsolète du C++ est surtout un problème français. Les bons ouvrages en C++ moderne sont courant en anglais (C++ Primer, PPPC++, Langage C++ ont été mis a jour) et les "vieux" experts du C++ sont les premiers a recommander d'utiliser du C++ moderne (citons par exemple Meyers qui vient de sortir Effective Modern C++).
    Le pire, c'est probablement les ressources en français sur internet. Les principaux sites internet francophones ont des ressources obsolètes (developpez et sdz ont un article sur le C++11, qui ont été écrit avant la sortie de la norme et qui sont plus des résumés qu'un cours complet - et celui sur développez n'est pas complet. Et rien sur le C++14, voire les TS et le C++1z). Et on ne parlera même pas des cours debutants

    @Lolilolight: reset() pour unique_ptr. Pour shared_ptr, il faut libérer tous les pointeurs pour que la ressource soit delete. Mais dans tous les cas, rien n'interdit a un pointeur intelligent d’être nullptr.

  10. #10
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    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 279
    Points : 11 011
    Points
    11 011
    Par défaut
    En C++11, std::vector<std::unique_ptr<T>> libère automatiquement la ressource allouée.
    En C++98, on avait boost::ptr_vector<T>.
    En C++14, on aura make_unique en plus de make_shared. De fait, on pourra se passer de new également.


    Bref, cela fait longtemps qu'un code lambda peut, et doit, se passer de delete. Et on va pouvoir étendre cette règle à new.

    Pour un code de bibliothèque qui doit adresser des choses bas-niveau ou optimiser certaines choses (typiquement, vector n'est pas terrible pour coder des matrices à cause de la 0-initialisation), on doit garder l'accès à new et delete. Mais pour du code que l'on écrit tous les jours, ces mots clés fragilisent le code.

    Et les développeurs de CppDepend ont parfaitement raison. Pour beaucoup le C++ est un C avec des classes, où l'on croit que la mémoire (et autres ressources) se gère à la main. Or, il n'y a rien de tel si on veut des codes non maintenables. Pour ceux qui n'avaient jamais entendu parler du C++ moderne, ou pourquoi il est important de renier le C++ historique, je renvoie à mon billet de blog, et à l'article (/démonstration) d'Aaron Lahman traduite par Alexandre Laurent.
    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...

  11. #11
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    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 279
    Points : 11 011
    Points
    11 011
    Par défaut
    Citation Envoyé par leternel Voir le message
    Il n'est pas du tout question de supprimer ou non new et delete, mais de remplacer #include
    Non, le sujet est le C++ moderne. Il y a eu une malheureuse référence à un précédent article de CoderGears sur les modules faite par notre chroniqueur, mais le sujet est bel et bien le C++ moderne.
    Et donc de remplacer new et delete dans les moeurs.


    Citation Envoyé par mintho carmo Voir le message
    a- Quand on a un projet de plusieurs milliers de classes et[...] mais mettre a jour l'ensemble des serveurs de build, pour toutes les versions prises en charge, cela devient compliqué)

    b- [...] Les principaux sites internet francophones ont des ressources obsolètes (developpez et sdz ont un article sur le C++11, qui ont été écrit avant la sortie de la norme et qui sont plus des résumés qu'un cours complet - et celui sur développez n'est pas complet. Et rien sur le C++14, voire les TS et le C++1z). Et on ne parlera même pas des cours debutants
    a- Mon gros problème, c'est quand on a des machines linux sous une version redhat/centos bien précise et stable, ce qui implique bien évidemment des compilateurs pré C++11. Et pour mettre à jour les compilos, il est préférable de d'abord mettre à jour les OS de dev et de production, et ça ... c'est pas envisageable.

    b- Je ne classe pas le tuto V2 du sdzoc dans la catégorie "C++ historique". Certes, cela n'aborde pas le C++11. Mais dans l'ensemble, ce n'est pas du C++ historique -- ou du moins, il y a bien pire...
    Pour le C++14, il y a eu des dépêches sur divers sites. Mais effectivement, pas de cours full C++14. Ce qui poserait un soucis pragmatique : les élèves seraient dans l'impossibilité de mettre en pratique ce qu'ils auraient appris dans nos SSII. Cela n'est possible que dans quelques très grosses boites ou dans du FOSS pour l'instant.
    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...

  12. #12
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 193
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 193
    Points : 17 161
    Points
    17 161
    Par défaut
    Ah oui, en effet, on est dans cette discussion-là.
    Comme en parallèle, il y en a une sur les includes et modules, j'ai crû être dans l'autre
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  13. #13
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    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é.

  14. #14
    Membre éclairé

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

    Informations forums :
    Inscription : Décembre 2013
    Messages : 397
    Points : 698
    Points
    698
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    b- Je ne classe pas le tuto V2 du sdzoc dans la catégorie "C++ historique". Certes, cela n'aborde pas le C++11. Mais dans l'ensemble, ce n'est pas du C++ historique -- ou du moins, il y a bien pire...
    Pour le C++14, il y a eu des dépêches sur divers sites. Mais effectivement, pas de cours full C++14. Ce qui poserait un soucis pragmatique : les élèves seraient dans l'impossibilité de mettre en pratique ce qu'ils auraient appris dans nos SSII. Cela n'est possible que dans quelques très grosses boites ou dans du FOSS pour l'instant.
    J'ai du récemment lire ce tuto, il y a beaucoup trop de choses qui vont pas dedans (trop de mauvaises pratiques héritées du C - même si effectivement, ce n'est pas le pire)

    Un cours full C++14 n'exclue pas d'apprendre aussi comment utiliser le C++ "old-school", juste l'ordre d'apprentissage qui change (apprendre les bonnes pratiques modernes puis remonter progressivement sur du code moins sécurisée, plutôt que commencer par du code sale et apprendre ensuite du C++ moderne)

  15. #15
    En attente de confirmation mail

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

    Informations forums :
    Inscription : Septembre 2013
    Messages : 639
    Points : 2 347
    Points
    2 347
    Par défaut
    Mais C++ a-t-il vocation à devenir un langage "moderne" ?

    Ce qui est cool avec C++ c'est qu'il a tout pour être populaire aussi bien auprès des vieux cons que des modernes. Faites-en un langage totalement moderne et il va perdre une partie de ses fans...

  16. #16
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    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 279
    Points : 11 011
    Points
    11 011
    Par défaut
    C'est quoi un langage moderne ? À GC ? Fonctionnel ? Autre chose ?
    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...

  17. #17
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    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 279
    Points : 11 011
    Points
    11 011
    Par défaut
    Citation Envoyé par mintho carmo Voir le message
    J'ai du récemment lire ce tuto, il y a beaucoup trop de choses qui vont pas dedans (trop de mauvaises pratiques héritées du C - même si effectivement, ce n'est pas le pire)
    Des exemples ? (Ca fait longtemps que je ne l'ai plus lu, mais je me souviens que le type chaine est string, et vector pour les tableaux. Et c'est déjà un énorme pas en avant)
    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...

  18. #18
    Membre éprouvé

    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
    Points : 1 264
    Points
    1 264
    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.

  19. #19
    Membre éclairé

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

    Informations forums :
    Inscription : Décembre 2013
    Messages : 397
    Points : 698
    Points
    698
    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...

  20. #20
    Membre éprouvé

    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
    Points : 1 264
    Points
    1 264
    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 ...

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