Formation C++ avancé

Performance, Mémoire & Multi-threading au service de vos applications

Formation C++ avancé

Description

C++ est un langage de programmation polyvalent et performant, idéal pour le développement de systèmes, d'applications haute performance et de jeux vidéo, grâce à son support de la POO, de la programmation générique et des opérations bas niveau.

Cette formation en C++ avancé s'adresse aux développeurs et développeuses ayant déjà une expérience en C++, et souhaitant approfondir leurs connaissances avec les normes modernes. Elle est particulièrement pertinente pour les professionnel·le·s travaillant dans les domaines des systèmes embarqués, de la programmation de jeux, ou du développement logiciel à haute performance.

Au cours de cet apprentissage avancé en C++, vous explorerez les dernières évolutions du langage, notamment les nouveautés introduites par C++17 et C++20. Vous acquerrez une compréhension approfondie des concepts essentiels tels que Move/Ref/Value Semantics et Templates. Vous vous aventurerez également dans le domaine complexe du multi-threading en C++, en utilisant la puissante bibliothèque Boost pour gérer les processus asynchrones et les opérations concurrentes.

Grâce à un mini projet autour d’un Client/Server TCP/IP, vous apprendrez à optimiser votre serveur afin de répondre à des tests de charges ainsi qu’à utiliser plus d'un coeur de cpu.

Profitez de l'expérience et des compétences de Guillaume Métais, un formateur expérimenté en C++. En adoptant une approche pédagogique claire et pragmatique, Guillaume vous guidera à travers des concepts complexes.

Les objectifs

  • Maîtriser les concepts avancés du C++17 et C++20, y compris les Move/Ref/Value Semantics et les containers.
  • Créer des modèles génériques et comprendre l'utilisation des templates pour augmenter la flexibilité et la réutilisabilité du code.
  • Concevoir et implémenter des solutions multi-threading en C++ en utilisant la bibliothèque Boost.
  • Être capable de gérer efficacement les exceptions dans un environnement multi-threadé et d'utiliser les fonctions lambda.
  • Appliquer de manière autonome les connaissances acquises pour développer des projets concrets en C++, en utilisant les compétences en programmation concurrente et parallèle.

Pré-requis

  • Avoir une bonne compréhension des fondamentaux du C++, y compris la syntaxe, les types de données, les opérateurs, et les structures de contrôle.
  • Être familier avec les concepts de programmation orientée objet en C++, tels que les classes, l'héritage, le polymorphisme et l'encapsulation.
  • Avoir des connaissances sur la gestion de la mémoire en C++, y compris l'utilisation des pointeurs, la gestion dynamique de la mémoire et la compréhension des fuites de mémoire.
  • Avoir un IDE supportant le C++ et un debugger installé (Visual Studio Code, CLion).
  • Avoir un compilateur C++ à jour avec les normes C++17 & C++20 (GCC 8 ou +, CLang 6 ou +, ou MSVC 2019 ou +).
  • Ordinateur portable à apporter

Le programme de la formation C++ avancé

Jour 1 : Théorie et Introduction Pratique

  • Introduction aux nouveautés C++17 et C++20
  • Move/Ref/Value Semantics.
  • Templates en C++ avec un focus sur les Concepts.

Mises en pratique : Optimisation semantics & templates
- Faire fonctionner le projet de base
- Optimiser le code existant avec les nouvelles Semantics
- Optimiser les fonctions existantes avec une mise en place de Template
- Ajouter des Concepts aux Templates
- Implémenter une architecture serveur capable d'exécuter des commandes avec les nouvelles Semantics

Jour 2 : Approfondissement et Pratique

  • Introduction et concepts fondamentaux du Multi-threading en C++.
  • Présentation de la librairie Boost et son utilisation pour le Multi-threading
  • Processus Asynchrones
  • Gestion des Exceptions et Fonctions Lambda.

Mises en pratique : Multithreading
- Implémenter un client simple capable d'envoyer une commande au serveur en appliquant les semantics modernes
- Passer le client en asynchrone pour envoyer un message au serveur en même temps que de recevoir des informations du serveur
- Ajouter une commande pour demander au serveur d'exécuter une opération gourmande en cpu. Constater l'effet sur le cpu
- Surcharger le serveur de demande avec un outil de test de charge. Constater l'effet sur le cpu
- Ajouter la gestion du multithreading sur le serveur

Jour 3 : Pratique Avancée et Révision

  • Révision, Q&A, et feedback.

Mises en pratique : Gestion des erreurs & ressources
- Révision & ajustement du projet
- Surcharger le serveur en multithread avec un outil de test de charge. Constater l'effet sur le cpu
- Implémenter un accès à une ressource commune sans conflit d'accès
- Implémenter une gestion des exceptions dans thread

Télécharger le programme

Formations associées

Formateur

Guillaume METAIS

Guillaume est un développeur passionné avec plus de 15 ans d'expérience. Son parcours a débuté avec l'apprentissage du C et du C++ grâce aux cours de Mathieu Nebra sur le "Site du Zéro".

Depuis son entrée dans le monde professionnel en 2012, il a consacré 7 ans au C++ en utilisant le Framework Qt. Au cours de cette période, Guillaume a géré une multitude de projets, allant de la manipulation de bases de données à la programmation réseau TCP/IP et au multi-threading. Il a ensuite évolué vers les technologies web back-end, en particulier NodeJs et Express.

En 2020 Guillaume devient Directeur Technique chez Collectif Energie. Cette entrée dans le monde de l'énergie l'emmène vers de nouveaux challenges dans lesquels il s'épanouit.

Guillaume est motivé par le désir de continuer à apprendre, de comprendre comment les autres relèvent leurs défis. Il souhaite partager sa passion, ses expériences et son enthousiasme pour la programmation et la construction de projets.

Guillaume a formé des développeur·euse·s et des product owner, fourni des méthodes, organisé des ateliers sur l'agilité et l'organisation basée sur les rôles. Il apporte aussi son soutien dans la stratégie d'entreprise, les business plan, les budgets prévisionnels, la gestion d'équipe et autres sujets de startup.

FAQ

Nos formations sont éligibles à plusieurs dispositifs de financement, selon votre situation. Human Coders est certifié Qualiopi, ce qui permet la prise en charge par des organismes comme Pôle emploi, votre OPCO ou encore le CPF (Compte Personnel de Formation) pour certaines formations.

Pour en savoir plus, veuillez consulter notre page : Comment financer votre formation ?

Oui, la formation peut être proposée en présentiel ou en distanciel. Pour les inter-entreprises, les modalités (présentiel ou à distance) sont fonction de la session.

Nous pouvons organiser des sessions à d'autres dates ou dans d'autres villes (Bordeaux, Lille, Lyon, Marseille, Montpellier, Nantes, Nice, Paris, Strasbourg, Toulouse...)

Les formations se déroulent toujours en petit groupe de 3 à 6 stagiaires. Nous souhaitons que les formateurs et formatrices puissent passer un maximum de temps avec chacun·e.

Voici une journée type :

  • 9h : vous êtes accueillis par votre formateur·rice autour d'un petit déjeuner (croissants, pains au chocolat, jus de fruit, thé ou café...)
  • 9h30 : la formation commence
  • 12h30 : pause de midi. Le·a formateur·rice mangera avec vous. C'est l'occasion d'avoir des discussions plus informelles.
  • 14h : reprise de la formation
  • 18h : fin de la journée

8 raisons de participer à une formation Human Coders

  • Satisfaction client élevée : Un taux de statisfaction de 4,6/5 depuis 2012 (sur 2224 sessions réalisées). 99% des participants se disent satisfaits de nos formations
  • Approche pédagogique unique : Des formations en petit groupe, des formateurs passionnés et expérimentés, de véritables workshops... (Plus d'infos sur notre manifeste)
  • Catalogue de formations complet : 104 formations au catalogue, de quoi vous accompagner sur tout vos projets
  • Écosystème dynamique : Nous accompagnons les dev depuis 13 ans avec des initiatives comme Human Coders News, les Human Talks, le podcast ou encore notre serveur Discord
  • Financement facilité : Organisme certifié Qualiopi, indispensable pour que vous puissiez obtenir des aides au financement via votre OPCO
  • Références clients prestigieuses : De nombreux clients qui nous font confiance depuis des années
  • Accompagnement sur mesure : Nous vous proposons un accompagnement personnalisé par nos consultants pour vous aider dans vos projets au-delà de la formation
  • Valorisation professionnelle : Remise d'un diplôme, d'une attestation et d'une certification, suivant les formations effectuées, que vous pourrez afficher sur vos CV et réseaux sociaux

* Nombre de personnes ayant répondu au questionnaire de satisfaction sur cette formation depuis 2012