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

Le , par Katleen Erna, Expert éminent sénior
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


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de metagoto metagoto - Membre éclairé https://www.developpez.com
le 10/04/2010 à 16:22
Citation Envoyé par guillaume07  Voir le message
cite moi un langage qui soit POO et pas impératif ?

Remplace impératif par procédural dans la quote de gl
Avatar de Luc Hermitte Luc Hermitte - Expert éminent https://www.developpez.com
le 10/04/2010 à 18:53
[@metagoto] Cela ne fait pas une grosse différence dans ce contexte,

[@guillaume07] mais ... on pourrait parler de CLOS il semblerait. Mais, ce qu'il faut surtout lire, c'est qu'il n'est pas limité au paradigme OO grâce aux templates.
Avatar de poukill poukill - Membre chevronné https://www.developpez.com
le 17/05/2010 à 11:12
Personnellement, je crois que C++ est un langage qui permet de tout faire, en alliant performance et réutilisabilité. La mauvaise nouvelle, c'est que pour y arriver, il va falloir accepter de passer un bon bout de temps dans les bouquins, et aussi à expérimenter par soi-même.
Le C++ est muti-paradigme, c'est à dire qu'un problème peut être modélisé de différentes façons. En gros, ce que les programmeurs utilisent:
  • L'orienté objet, avec des abstractions qui modélisent un objet "haut niveau"
  • La métaprog, avec les classes de politique notamment (modélisation de comportement)

Citation Envoyé par Luc Hermitte  Voir le message
C'est une mauvaise utilisation de l'héritage (public).

Comme l'a fait remarqué Luc, avant de maîtriser les concepts précédemment cités correctement, beaucoup d'eau aura coulé sous les ponts. Et on n'a pas encore parlé d'exception-safety (vaste sujet), ou même de thread-safety (hors sujet ici).

En passant, cette citation de Joel on software est intéressante:
The recruiters-who-use-grep, by the way, are ridiculed here, and for good reason. I have never met anyone who can do Scheme, Haskell, and C pointers who can't pick up Java in two days, and create better Java code than people with five years of experience in Java, but try explaining that to the average HR drone.

Récemment, j'avais présenté mes langages de programmation par ordre de niveau :
  • C++ : très bon niveau (grâce à DVP il faut le dire)
  • C : niveau moyen
  • Python : niveau moyen
  • Java : notions. J'avais juste lu le bouquin Design Pattern de l'édition Tête la Première. Et tous les exemples sont en java. Personnellement, ça ne m'avait pas du tout dérangé, le "look" général était pas très différent du C++, en plus simple !

Et là, le type me dit : "Dommage nous c'est du java, que ce soit pour du temps-réel embarqué ou les logiciels".
J'avais bien envie de dire que, derrière le C++ j'allais apprendre super vite (mise à part les bonnes pratiques du langage où il faut un peu plus de temps).

Mais est-ce vrai ?
Avatar de Camille_B Camille_B - Membre confirmé https://www.developpez.com
le 17/05/2010 à 14:36
parce que c'est juste facile après le C++.

C'est "juste" faux.

Il est clair que la maîtrise d'un langage comme C++ ou Perl facilite l'apprentissage d'un langage comme Java, ou même Python.

Mais il y a une différence entre apprendre rapidement un langage, et :

a) maîtriser les bibliothèques

b) acquérir les bonnes pratiques spécifiques à ce langage

P.S. : cette utilisation de "juste", c'est "juste" horrible !
Avatar de Florian Goo Florian Goo - Membre éclairé https://www.developpez.com
le 17/05/2010 à 23:25
Citation Envoyé par Camille_B  Voir le message
P.S. : cette utilisation de "juste", c'est "juste" horrible !

C'est juste.
Avatar de maske maske - Membre éprouvé https://www.developpez.com
le 19/05/2010 à 23:39
Citation Envoyé par guillaume07  Voir le message
cite moi un langage qui soit POO et pas impératif ?

Smalltalk.

Les meilleurs programmeurs sont-ils ceux qui disent connaître C ++ ?

Faut voir l'intérêt de la question, d'autre part je n'ai jamais vu de comparaison de deux développeurs qui se baserait sur le langage utilisé.
Avatar de raphchar raphchar - Membre averti https://www.developpez.com
le 20/05/2010 à 13:32
Les meilleurs programmeurs sont-ils ceux qui disent connaître C ++ ?

Vraiment cette question idiote mérite un réponse idiote: un bon chauffeur de ferrari est-il celui qui a une ferrari? (oups pardon c'est une question)

Un bon programmeur, c'est celui qui sait utiliser des algorithmes efficaces avec les moyens qu'il a. C'est tout.
Avatar de - https://www.developpez.com
le 24/05/2010 à 20:17
Bonsoir,
Je vais ajouter une petite réponse. Je ne suis pas programmeur, mais je développe depuis de nombreuses années. C'est à dire que j'essaye de répondre à mes besoins, historiquement aux besoins de la société qui m'employait. Maintenant, je suis en retraite.
A mon avis un programmeur travaille dans un environnement hiérarchisé. Il y a un chef de projet qui, à la limite, n'a jamais écrit une ligne de code, mais il a une logique implacable, un développeur qui essaye de faire la liaison entre le chef de projet et le programmeur, et enfin le programmeur.
Que vient faire dans tout cela le langage utilisé ?, je le compare un peu à la couleur du manche de tourne-vis d'un mécanicien.

J'utilise un compilateur qui permet d'écrire des outils qui me conviennent (CAD-DAO-SIG). Je viens de comprendre que le C++ que j'utilise n'est pas standard. Pourquoi Borland a éprouvé le besoin de faire un langage qui ne respecte pas, ou plutôt qui surcharge le C++ standard? Cela ne me regarde pas, je suis développeur, donc j'utilise un langage créé par des spécialistes bien meilleurs que moi.
Petit exemple simple : traitement d'une chaine.
Le C contient un certain nombre de fonctions de traitement (strcpy, strcat etc. il y en a des quantités).
Le C++ contient une classe std::string (que j'ai découverte aujourd'hui).
Je suppose que si Borland a créé une pseudo-classe AnsiString, c'est parce que c'était utile aux développeurs. Avec les fonctions de base du C on peut traiter toutes les chaines comme on veut. AinsiString offre un confort supplémentaire, mais il ne s'agit toujours là que de la couleur du manche de tourne-vis et ça ne va pas plus loin.

L'argument de portabilité ne me convient pas vraiment. Je pense en particulier à un certain applicatif qui a subit un grand nombre de transpo depuis 25 ans et qui tourne actuellement entre autres en PHP.
Il est vrai que la syntaxe d'une boucle en Fortran, en basic(s) en C(UNIX) en C++(Borland) en PHP, n'est pas la même, mais qu'importe, la logique reste le même.

Ce qui a provoqué cette réponse sont les questions posés par les étudiants. Je crains qu'on leur apprend plus des astuces du langage que l'organisation d'un applicatif (par exemple qu'il est indispensable d'éviter une division par 0).

Bonne soirée.
Avatar de gl gl - Rédacteur https://www.developpez.com
le 24/05/2010 à 23:25
Citation Envoyé par Pierre Dolez  Voir le message
Que vient faire dans tout cela le langage utilisé ?, je le compare un peu à la couleur du manche de tourne-vis d'un mécanicien.

J'admets volontiers que le langage n'est pas le point le plus important et que le codage ne représente qu'une faible partie d'un projet. Mais de là à le comparer à la couleur d'un manche de tournevis, il y a un pas que je me garderais bien de franchir. Le langage utilisé n'est pas aussi anecdotique que cela.

Pour résumer, la langage est peut-être un détail (et encore) mais pas un détail sans importance.

Citation Envoyé par Pierre Dolez  Voir le message
Je suppose que si Borland a créé une pseudo-classe AnsiString, c'est parce que c'était utile aux développeurs.

Je ne connais pas l'histoire de Borland C++ en détail, mais je miserais surtout sur des raisons historiques (concernant l'existence de AnsiString alors qu'il existe std::string. Pour l'existence de AnsiString par rapport au chaîne C-style et aux fonctions str..., oui il y avait une vrai utilité).

Citation Envoyé par Pierre Dolez  Voir le message
Avec les fonctions de base du C on peut traiter toutes les chaines comme on veut. AinsiString offre un confort supplémentaire, mais il ne s'agit toujours là que de la couleur du manche de tourne-vis et ça ne va pas plus loin.

Ce n'est pas qu'une affaire de confort. C'est aussi un temps de développement réduit, moins de risque d'erreur (et potentiellement de meilleures performances).

Citation Envoyé par Pierre Dolez  Voir le message
L'argument de portabilité ne me convient pas vraiment. Je pense en particulier à un certain applicatif qui a subit un grand nombre de transpo depuis 25 ans et qui tourne actuellement entre autres en PHP.

As tu une idée des coûts du portage ou de réécriture d'une application dont la portabilité n'était pas une préoccupation lors de l'écriture initiale ? Ou des coûts de maintenance de n versions différentes par rapport à ceux d'une seule et unique version portable ?

Citation Envoyé par Pierre Dolez  Voir le message
Il est vrai que la syntaxe d'une boucle en Fortran, en basic(s) en C(UNIX) en C++(Borland) en PHP, n'est pas la même, mais qu'importe, la logique reste le même.

Oui et non.

Il y a quand même des différences fondamentales entre les différents paradigmes de programmations (procédurale, orienté objet, fonctionnel, logique, méta-prog, etc.). De même que certaines caractéristiques des langages représentes une vrai difficulté à passer de l'un à l'autre.

Citation Envoyé par Pierre Dolez  Voir le message
Ce qui a provoqué cette réponse sont les questions posés par les étudiants. Je crains qu'on leur apprend plus des astuces du langage que l'organisation d'un applicatif (par exemple qu'il est indispensable d'éviter une division par 0).

J'ignore si c'est du à l'enseignement ou pas. Mais c'est vrai que certains se préoccupent davantage du codage et des détails du langage que de l'analyse et de la conception, ce qui est regrettable.

Ceci étant, je ne trouve pas choquant de poser des questions sur le langage si on rencontre des difficultés lors de l'implémentation.
Avatar de tomlev tomlev - Rédacteur/Modérateur https://www.developpez.com
le 25/05/2010 à 2:42
Citation Envoyé par Pierre Dolez
Il y a un chef de projet qui, à la limite, n'a jamais écrit une ligne de code, mais il a une logique implacable, un développeur qui essaye de faire la liaison entre le chef de projet et le programmeur, et enfin le programmeur.

Euh... c'est quoi la différence entre un développeur et un programmeur selon toi ?
Avatar de el_slapper el_slapper - Expert éminent sénior https://www.developpez.com
le 26/05/2010 à 11:30
Citation Envoyé par gl  Voir le message
(.../...)
Il y a quand même des différences fondamentales entre les différents paradigmes de programmations (procédurale, orienté objet, fonctionnel, logique, méta-prog, etc.). De même que certaines caractéristiques des langages représentes une vrai difficulté à passer de l'un à l'autre.
(.../...)

+1

même indépendamment du paradigme, la gymnastique n'est pas franchement la même. Ainsi, Cobol n'a pas d'enum(comme en VB/C#), il a des "niveaux 88", libéllés pointant sur des valeurs que peut prendre une variables. C'est à la fois plus puissant(sauf à farcir l'énum d'attributs), plus lourd(même exception), mais c'est surtout une autre manière de penser : l'enum est juste un libellé, le "niveau 88" est toujours pointé sur une variable existante. La gestion est donc fort différente, ça a une influence sur la manière de concevoir les programmes.

je dirais plutôt que le Cobol est un tournevis à plat, à l'ancienne, et qu'il ne convient plus beaucoup aux vis modernes, pour la plupart cruciformes. Mais il a encore ses qualités dans certains domaines. Pour traiter des fichiers plats aux formats exotiques, il est toujours très bon. Pour faire du web, hmhmhm. , il faut absolument un cruciforme(genre PHP).
Offres d'emploi IT
Responsable transverse - engagement métiers H/F
Safran - Ile de France - Corbeil-Essonnes (91100)
Architecte systèmes études & scientifiques H/F
Safran - Ile de France - Vélizy-Villacoublay (78140)
Architecte sécurité des systèmes d'information embarqués H/F
Safran - Ile de France - 100 rue de Paris 91300 MASSY

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil