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

Langages de programmation Discussion :

Les meilleurs programmeurs sont-ils ceux qui disent connaître C ++ ? Pas si sûr !


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Katleen Erna
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    1 547
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 547
    Par défaut Les meilleurs programmeurs sont-ils ceux qui disent connaître C ++ ? Pas si sûr !
    Les meilleurs programmeurs sont-ils ceux qui disent connaître C ++ ? Pas si sûr...

    L'une des particularité de C++, selon Louis Brandy, est que les programmeurs travaillant avec ce langage se divisent en deux catégories. Ces deux groupes s'opposent frontalement et se considèrent chacun comme le seul ayant raison.

    Dans le premier, on trouve les développeurs qui viennent de C, ou d'autres qui pensent maitriser C++ très rapidement. Ce genre d'individu vous dira "je connais C++". Mentent-ils ?

    Ce langage peut être vu comme l'ascension d'une montagne. Il y a ceux qui sont en bas et se croient déjà au sommet, et ceux qui ont déjà passé le col. Ceux-là souffrent. C'est la deuxième catégorie de programmeurs : ceux qui en ont déjà vu, et qui se rendent compte de l'extrême complexité du langage. Ce qui amène une certaine frustration sur des centaines de petites choses.

    Voici une petite illustration satyrique, toujours de Louis Brandy, des étapes qui précèdent l'arrivée au col :






    Source : Le Blog de Louis Brandy

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 39
    Par défaut
    j'adore l'image, surtout le point sur les exceptions

    C et C++ sont deux langages qui n'ont de commun que la lettre "C" de leur nom.
    Passer de C à C++ demande de s'ouvrir à de nouveaux concepts, ne serait-ce que pour l'approche objet (même si certains MacGyver du C prétendent qu'il est "aisé" de faire de l'objet en C).
    Passer de C++ à C demande... hou pinaize, non, il faut être taré pour faire ça. Pour ma part, et cela ne concerne que moi, passer du C++ au C aura été symbole de régression et intense torture (pas de booléen, ni de vrai objet, pas de ci pas de ça... maman qu'est ce que je fais là ?).

    C et C++ ont chacun leur domaine d'application, ce sont des langages différents, et prétendre en connaitre un premier parce qu'on pratique un second est une preuve de sa méconnaissance du premier (je vais la noter dans un coin cette phrase ^^).

  3. #3
    Membre actif Avatar de yostane
    Homme Profil pro
    test
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : test

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Par défaut
    je ne suis pas d'accord avec l'enchainement des points car il qui peut varier

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 61
    Par défaut
    Citation Envoyé par jaimepaslesmodozélés Voir le message
    Passer de C++ à C demande... hou pinaize, non, il faut être taré pour faire ça.
    C'est pourtant bien souvent ce qui se passe au cours d'une formation en informatique (En tout cas ce fut le cas lors de la mienne).
    Les professeurs d'informatiques seraient-ils tous fous ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 39
    Par défaut
    Citation Envoyé par Folken Laëneck Voir le message
    C'est pourtant bien souvent ce qui se passe au cours d'une formation en informatique (En tout cas ce fut le cas lors de la mienne)
    Idem, d'où le choc (j'aurai du tourner ma phrase autrement, je ne pense pas que passer du C++ ou C soit une mauvaise chose, bien au contraire, disons juste que c'est tout sauf une promenade de santé, un mauvais moment à passer)
    Sont-ils dingues... je ne sais pas, en tout cas il semblerait que de l'autre côté de l'atlantique les jeunes apprennent directement Java, C/C++ passant littéralement à la trappe. Leurs profs sont peut être moins fous, même si je ne regrette absolument pas d'avoir "mis les mains dans l'cambouis", au même titre que l'Assembleur et ces autres outils de torture. Mais je n'y retoucherai pas hein, pas fou.

  6. #6
    Membre très actif
    Profil pro
    aucune
    Inscrit en
    Juillet 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Juillet 2007
    Messages : 134
    Par défaut
    Les professeurs d'informatiques seraient-ils tous fous ?
    A croire que oui ....je suis passé du Java a l'assembleur puis du C++ au C aussi ...

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Il manque un point avant "C with classes".

    J'ai honnêtement vu des gens dirent faire du C++ par ce qu'ils utilisent le compilateur C++ et des fichiers en *.cpp ... (*)

    Alors oui, ce n'était pas complétement du C, par ce qu'il y avait cout et cin mais tout de même...

    Après tout est question de definition, du C est du C++, si on regarde seulement la definition du langage, puisque C++ est un surensemble.

    * Cela peut etre des cours aussi.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 84
    Par défaut
    Citation Envoyé par jaimepaslesmodozélés Voir le message
    Idem, d'où le choc (j'aurai du tourner ma phrase autrement, je ne pense pas que passer du C++ ou C soit une mauvaise chose, bien au contraire, disons juste que c'est tout sauf une promenade de santé, un mauvais moment à passer)
    Sont-ils dingues... je ne sais pas, en tout cas il semblerait que de l'autre côté de l'atlantique les jeunes apprennent directement Java, C/C++ passant littéralement à la trappe. Leurs profs sont peut être moins fous, même si je ne regrette absolument pas d'avoir "mis les mains dans l'cambouis", au même titre que l'Assembleur et ces autres outils de torture. Mais je n'y retoucherai pas hein, pas fou.
    Ici au Canada lors de mon programme informatique nous avons commencé avec du pseudo-code et quelques semaines plus tard en Java. Dans le fond j'ai toujours programmé de façon orienter object. Après avoir vue Swing nous somme maintenant entrain de voir les pointeurs en c++.

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Citation Envoyé par Yakuzan Voir le message
    Ici au Canada lors de mon programme informatique nous avons commencé avec du pseudo-code et quelques semaines plus tard en Java. Dans le fond j'ai toujours programmé de façon orienter object. Après avoir vue Swing nous somme maintenant entrain de voir les pointeurs en c++.
    Vous faites du C en fait, pas du C++?

    ou alors on vous a montré la programmation objet en C++?

  10. #10
    Membre éprouvé Avatar de amaury pouly
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 157
    Par défaut
    J'aime bien l'image

    Citation Envoyé par jaimepaslesmodozélés Voir le message
    Passer de C++ à C demande... hou pinaize, non, il faut être taré pour faire ça.
    Pour ma part, j'ai commencé par le C++ et une fois que je l'ai bien maîtrisé (c'est à dire longtemps après) j'ai vraiment appris le C. Et çà n'a pas été une régression ! Je suis peut être fou mais j'aime bien C, et puis si on utilise la norme C99 alors une partie des problèmes s'envole (au moins psychologiquement: le type booléen par exemple) et le C++ n'est plus un surensemble.

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Sympa l'image

    Perso quand j'ai appris C++ en cours, c'était en fait du C avec des cout à la place des printf

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 162
    Par défaut
    Déjà, connaitre le C est une gageure. Le problème de ce langage est qu'il est trop permissif et connaitre tous les points sensible du langage nécessite une très bonne expérience.
    Ensuite, connaitre les différentes normes qui existent, trouver la doc pour les API c'est encore un autre challenge.
    Finalement, connaitre le langage c'est aussi connaitre les options du compilateur et dieu sait que gcc prend des paramètres.

    Par ailleurs, C++ ne peut pas être considéré strictement comme un surensemble de C car la syntaxe de C++ est incompatible avec celle du C.

  13. #13
    Invité
    Invité(e)
    Par défaut
    c est un language qui ne vieillit pas, même s'il n'est plus le standard universel qu'il a été. Aujourd'hui les raisons de ne pas confier la gestion mémoire au compilateur objet restent nombreuses. La garbage-collection est certes pratique et fiable mais certaines applis en particulier temps réel embarquées ne peuvent pas s'en satisfaire. L'objet est un concept pour rendre la programmation plus lisible par les humains, l'absence d'objet permet de rester près du hardware. Or ce dernier point peut être décisif, surtout quand vos concurrents ont tous fait de l'objet à garbage-collection et que vous leur mettez trois longueur dans la vue par une gestion de buffers millimétrique. Aucun développement objet ne peut descendre aussi bas et ce choix est irréversible une fois l'appli développée. On peut ainsi annuler des maux apparus avec l'objet et la communication ip comme la latence qui est un "mal moderne".

    Quoi qu'en disent les académiques , C++ n'a pas apporté que des améliorations : la gestion de mémoire par blocs, les chaines par pointeurs sont définitivement plus performantes en C mais ôô combien plus contraignantes..
    De même , la Marshallisation de la mémoire empèche toute persistance dans les pointeurs qui sont inexportables vers une dll, même en lecture seule car le gc peut se produire à tout moment.
    Au final toute approche de mémoire partagée est aventureuse en objet qui favorise les copies et ralentit l'ensemble des programmes

    Petit test :
    essayer de gérer une file d'attente respectivement
    1. en utilisant les Cstring (ou string en .net)
    2. en utilisant char *monBuffer;

    comparer les résultat
    Dernière modification par Invité ; 02/04/2010 à 14h30.

  14. #14
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2006
    Messages : 87
    Par défaut La vérité est ailleurs ;-)
    Comme d'habitude, on oppose ou on compare C et C++ alors que ce qui devrait être comparé c'est la programmation impérative (ou structurée) et la POO.... Mais ce serait certainement aussi une "flame war" ;-)

  15. #15
    Invité
    Invité(e)
    Par défaut
    Là, je suis bien d'accord, mais est-il interdit de faire de la programmation orientée objet (bien) structurée?
    Je vais même aller plus loin, le fameux goto, tant décrié, ne peut-il pas dans certains cas être bon à utiliser. D'ailleurs, le compilateur de Borland force à respecter l'organisation structurée du programme.
    Quand j'écris un programme, je ne me pose pas la question C ou C++, structuré ou orienté objet, structure ou classe, objet ou pas, mais je me demande comment je vais le faire et j'utilise les outils que je connais et qui me semblent le plus adaptés pour l'écrire. Il est vrai que je suis de la vieille école autodidacte en informatique.

  16. #16
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Le but de l'orienté objet est justement de faire du code maintenable et qui peut évoluer facilement. Arriver à l'inverse, c'est quand même fort.

  17. #17
    Expert confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 814
    Par défaut
    Citation Envoyé par nikko34 Voir le message
    Le but de l'orienté objet est justement de faire du code maintenable et qui peut évoluer facilement. Arriver à l'inverse, c'est quand même fort.
    ???

    J'ai vu de tout dans ma carrière, du procédural très maintenable, et de l'objet inmaintenable. Comme l'inverse. L'objet a de nombreuses qualités, il permet certaines astuces impensables en procédural, mais tout ce qui est fait en objet peut être fait en procédural. Proprement. Ca sera parfois un poil plus lourd, mais c'est tout.

    Après, la rigueur et l'expertise sont les clefs d'une programmation maintenable. Je suis expert en procédural, pas en objet, mon code objet sera sans doute moins maintenable que mon code procédural. Evidemment, un expert objet aura le résultat contraire(et je n'aimerais pas reprendre son procédural, sans doute mal écrit).

    et puis suivant ce que l'on veut faire, c'est adapté, ou non. ici un lien vers une analyse de l'utilité de l'objet suivant les situations. Son exemple en bas de page est particulièrement parlant d'une appli objet inmaintenable là ou un bête procédural aurait été bien plus efficace(à défaut d'être élégant).

  18. #18
    Invité
    Invité(e)
    Par défaut
    Peut-être est-ce là le cœur du sujet.
    Sauf erreur de ma part, un langage, quel qu'il soit, sert d'interface entre deux identités. Dans le cas de langage parlé ou écrit, il s'agit de deux individus. Si l'écrivain a un style parfait mais très synthétique, il ne sera compris que par lui-même et quelques privilégiés.
    Je pense qu'en matière de langage informatique, c'est un peu la même chose, si un mot (nom de classe) sous-entent des milliers de lignes de code, le pauvre développeur que je suis a un peu de mal à comprendre.
    Je fais une classe Point3D, une classe TLigne, une classe UNTRIANGLE etc. tout va bien, je m'y retrouve. Les classes définissent des objets qui ont en quelque sorte une réalité physique.
    Mais, si je fais une classe virtuelle qui représente un modèle pour pouvoir faire ou définir autre chose qui n'a rien à voir et qui sera aussi totalement abstrait, là je suis un peu perdu.
    Je prends un autre point, l'héritage. Soit une classe POINT. Elle aura comme membre prive X, Y, et quelque fonction publiques.
    On veut créer une classe Point2D. On la fera hériter de POINT, on rajoutera des membres privés tels que la date de création et quelques fonctions.
    Maintenant on veut travailler en 3D. On va créer une classe Point3D qui héritera de Point2D etc.
    C'est très puissant, mais est-ce bien la bonne méthode pour un développeur?

    Je me souviens que l'héritage multiple était prévu autrefois. On a supprimé cette possibilité, il doit bien y avoir une raison.

    Je le reconnais volontiers, je travaille en C dans un environnement C++ et j'utilise certaines possibilité du C++, les classes en particulier, mais l'abstraction s'arrête là.

    Autre exemple, j'ai une classe VECTEUR. J'espère que je n'aurai jamais à y mettre le nez.

  19. #19
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Ecoutez, je ne vais pas vous faire l'article sur comment le C++ c'est trop bien, ou comment le code orienté objet a amelioré la conception de logiciels.

    Chacun son truc hein Mais ce n'est pas parce que vous ne voyez pas d'intérêt à certaines techniques que ça n'est pas utile (oui je sais ce n'est aps exactement ce que vous avez dit).

    Perso quelqu'un qui dans mon équipe en C++ commence à me coder tout en procédural tout en redefinissant sa classe VecteurMaison, ça va pas trop bien se passer.

  20. #20
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par iznogoudmc Voir le message
    Comme d'habitude, on oppose ou on compare C et C++ alors que ce qui devrait être comparé c'est la programmation impérative (ou structurée) et la POO....
    Le C++ ne se réduit pas à la POO. IL est multi-paradigme (impératif, POO et métaporg).
    Et il n'est pas rare de mixer les différents paradigmes dans un même programme.

    Citation Envoyé par Pierre Dolez Voir le message
    Je me souviens que l'héritage multiple était prévu autrefois. On a supprimé cette possibilité, il doit bien y avoir une raison.
    L'héritage multiple n'a pas été supprimé en C++.

Discussions similaires

  1. Pourquoi les programmeurs sont-ils moins payés que les gestionnaires de programmes et les analystes métiers ?
    Par Hinault Romaric dans le forum Débats sur le développement - Le Best Of
    Réponses: 107
    Dernier message: 26/11/2014, 23h40
  2. Réponses: 0
    Dernier message: 01/04/2010, 23h57
  3. Réponses: 3
    Dernier message: 27/04/2007, 10h56
  4. Pourquoi les mails ne sont ils pas envoyés?
    Par Sunsawe dans le forum Développement
    Réponses: 3
    Dernier message: 13/04/2007, 00h49
  5. Les drivers ODBC sont-ils nécessairement payants ?
    Par Draekonyss dans le forum 4D
    Réponses: 5
    Dernier message: 20/04/2006, 19h50

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