Combien de temps pour maîtriser le C++ à partir d'une (très) bonne connaissance du C

rien à ajouter

a marqué ce sujet comme résolu.

Bonjour,

Je voudrais avoir l’avis de différentes personnes qui connaissent ce langage et qui l’ont pratiqué dans leur travail éventuellement. Combien de temps pour avoir un niveau développeur dans ce langage ? A un rythme d’environ 1h par jour environ. Je veux dire, pour aller jusqu’à assimiler les concepts de la POO, la programmation multi tâches, éventuellement la conception d’interface graphique, un bonne maîtrise de ce qui s’utilise le plus dans la bibliothèque standard. Le tout en ayant déjà une bonne connaissance du C (pratiqué professionnellement).

J’ai déjà posé une question semblable sur un autre endroit du site mais la question est peu visible donc j’ai peu d’avis sur la question. Je recherche une pluralité d’opinions. Si possible donnez au passage votre niveau et en quelques mots à quel point vous utilisez ce langage au travail (mais si ça vous fait hésiter à répondre laissez tomber !). J’ai lu sur des forums en anglais que j’en aurais pour une dizaine d’heures tout au plus. J’ai lu à d’autres endroits que j’en aurais pour 4 ans. Ca fait un sacré gap donc autant dire que je ne suis pas beaucoup avancé par tout ce que j’ai pu lire…

Merci d’avance pour votre aide !

+0 -0

Ca dépend du niveau que tu veux atteindre. Donc je donnerais plutôt une fourchette entre 10h et 30 ans (voire plus, je sais pas encore).

Plus sérieusement, cela dépend beaucoup du niveau que tu veux atteindre. Mais pour te donner un extrême, j’ai pris un dev il y a peu de temps, qui débutait le C++, pour un poste où il devait écrire du code C++ (mais c’était pas la partie majoritaire du boulot).

Le problème si tu connais bien le C, c’est que c’est un langage très proche sur certaines syntaxes, mais très éloigné pour les syntaxes récentes (> 2011, ce qui n’est pas très récent, au final) et la conception en générale. On voit beaucoup de devs C qui ont du mal à faire la transition en C++.

A mon sens, tu peux commencer à bosser comme dev C++ juste en ayant lu "Tour of C++" et fais quelques projets. De toute façon, il faut bien comprendre que les débutants qui sortent d’école on peut être fait que 20h de cours de C++ (et des mauvais cours souvent) et quelques projets scolaires. Le niveau "débutant" n’est pas très élevé (par définition).

Par contre, si tu veux un poste équivalent à ton poste actuel (en termes de salaire et/ou de responsabilité), forcément que ça ne sera pas suffisant. Et donc cela va dépendre du niveau que tu veux avoir, mais si je devais donner une estimation (un peu hasardeuse), je dirais :

  • niveau intermédiaire = lire "Professional C++"
  • "la programmation multi tâches" = lire "C++ concurrency in action"
  • "la conception d’interface graphique" = Qt est probablement un standard à connaître (achète mon livre)
  • et probablement pleins d’autres livres (spécifique au C++, comme "Effective modern C++", "C++ template", etc. Ou plus généraliste sur les tests, la conception, etc) et des sites de références/bonnes pratiques (cppreference, C++ core guidelines, etc. Ou des livres plus récents que j’ai pas encore lu : "Beautiful C++", "Embracing Modern C++ Safely", etc)

Le problème sera ensuite de justifier ces compétences sur le CV et acquérir de la pratique. Donc faire des projets personnels suffisamment sérieux pour être présentés sur un CV, participer à des projets open sources, etc. Et cette étape peut prendre du temps (plusieurs années, potentiellement).

La différence de temps dans les réponses vient de cette ambiguïté à définir exactement le niveau visé.

(Dev C++ depuis avant l’existence du C++. Et payé pour faire croire que je connais bien le C++ et Qt)

+5 -0

@gbdivers Merci pour cette réponse détaillée ! Je n’ai cité que la programmation multitâche et la conception d’interfaces graphiques, y aurait-il d’autres aspects fondamentaux de la programmation que j’aurais pu oublier que tu as en tête ? La programmation temps réel (OS temps réel, etc) ? Je prends tout livre bon à prendre sur tous ces sujets. C’est quoi ton livre au fait ? Peut-être bien que je l’achèterai. Et puisque tu connais la conception d’interface graphique, j’ai utilisé les MFC de Microsoft il y a quelques mois, c’était assez brouillon, on m’a dit que l’outil était relativement dépassé, est-ce vrai ? (oui ça fait beaucoup de questions en une désolé…)

Pour donner mon propre parcours je sors d’école d’ingé (robotique, automatique, vision et commande), j’ai eu des cours (très moyens comme tu dis) en C et en C++. Je pratique souvent le C mais le C++ je ne connais que les concepts de base et il me manque de nombreuses notions, je veux me former pour atteindre un niveau dev assez vite. J’ai téléchargé "professionnal C++" justement, que je vais commencer dans quelques semaines quand j’aurais fini de faire le tour des subtilités du C, ainsi que le cours de zeste de savoir pour les bases.

Merci pour l’aide

@AScriabine: Clairement là tu ne demandes pas qu’une maitrise du C++. Le temps réel n’a pas grand-chose à voir avec le C++, le multitâche non plus (même si c’est standard maintenant), encore moins les interfaces graphiques.

“Maîtrise” c’est pas très concret comme terme et quand on commence à maîtriser le truc, on ne se rend pas forcément compte de ce qu’on ne maîtrise pas …

+0 -0

Je n’ai cité que la programmation multitâche et la conception d’interfaces graphiques, y aurait-il d’autres aspects fondamentaux de la programmation que j’aurais pu oublier que tu as en tête ? La programmation temps réel (OS temps réel, etc) ?

AScriabine

Je ne mettrais pas forcement le multitache et le UI comme des fondamentaux. Il faut avoir survolé, mais pas forcément avoir une connaissance poussée (tout depend du niveau souhaité)

Idem pour le temps réel, je mets pas ca dans les fondamentaux. Sauf si tu bosses specifiquement sur le sujet.

Dans les fondamentaux, je mettrais surtout tout ce qui n’est pas C++ : architecture des ordis et des systemes, algos, etc. Tu peux t’inspirer du parcours proposé par exemple par l’OSSU pour le computer science : https://github.com/ossu/computer-science. Pour les livres, Algorithms de Cormen et "Computer Architecture: A Quantitative Approach" par exemple.

C’est quoi ton livre au fait ? Peut-être bien que je l’achèterai.

AScriabine

C’est une private joke que je fais souvent, il n’est plus édité.

Et puisque tu connais la conception d’interface graphique, j’ai utilisé les MFC de Microsoft il y a quelques mois, c’était assez brouillon, on m’a dit que l’outil était relativement dépassé, est-ce vrai ?

AScriabine

Je ne connais pas, donc pas d’avis. Mais je pense que Qt est un must to know (un minimum)

J’ai téléchargé "professionnal C++" justement, que je vais commencer dans quelques semaines quand j’aurais fini de faire le tour des subtilités du C, ainsi que le cours de zeste de savoir pour les bases.

AScriabine

Pas Professional C++ en premier livre (en fin, en second apres le cours de ZdS). En premier, je te conseille "Discovering Modern C++" par exemple (qui vient d’avoir une nouvelle edition) ou "Tour of C++".

Et surtout, faire des projets pour mettre en pratique.

+2 -0

Le tuto de zds (adapté en livre) n’est pas une bonne ressource pour lui ? https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/

Moté

Si. Il l’a cité, pour ça que je ne l’ai pas repris dans ma liste.

Par contre, même en lisant le cours C++ de ZdS, je pense qu’il faut quand même lire un cours plus complet avant de lire "Professional C++".

+0 -0

Si. Il l’a cité, pour ça que je ne l’ai pas repris dans ma liste.

Par contre, même en lisant le cours C++ de ZdS, je pense qu’il faut quand même lire un cours plus complet avant de lire "Professional C++".

gbdivers

Ah, c’est parce que tu as vu ses autres messages directement sur le tuto, je ne comprenais en regardant uniquement ici X)

+0 -0

Les fondamentaux à ajouter, ça sera:

  • la façon totalement différente pour gérer correctement les ressources — le tuto ici le fait bien, mais sans signaler explicitement qu’il le fait
  • la lib standard (j’y range les lambdas, indissociables pour moi des algos standards qui ne sont pas exploitables sans les lambdas) — le tuto ici est un bon point de départ
  • l’OO — le tuto ici sera très bien pour mettre dans la bonne direction: beaucoup de sources/cours confondent factorisation de données avec factorisation de comportements
  • et plein de trucs de syntaxe après. Mais c’est plus du détail.

Le MT c’est un domaine difficile à part entière (et la lib standard n’a que des briques de base très bas niveau; il lui manque plein de trucs vraiment utiles), les IHMs… (ouais il parait qu’il y a des gens qui font ça).

Mon niveau? Entre 6 et 7 sur 10? (plus ça va, moins je connais de détails — et je pratique régulièrement depuis 97, je forme, je critique/relis tutos & livres avant parution…)

Mon niveau? Entre 6 et 7 sur 10? (plus ça va, moins je connais de détails — et je pratique régulièrement depuis 97, je forme, je critique/relis tutos & livres avant parution…)

En pratique dans l’industrie les gens affirmeront qu’ils maîtrisent le C++ après 1ans de pratique et te sortiront des absurdités plus gros qu’eux sur des trucs basiques mais bon. 🙄

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte