Formation C++ avancé

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

Prix (Formation inter-entreprise)

1800€ HT / personne

Durée

3 jours

Dates

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

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

Le(s) formateur(s)

Guillaume METAIS

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.

Voir son profil détaillé

A propos de Human Coders

Human Coders c'est un centre de formation pour développeurs avec :

  • une certification Qualiopi, indispensable pour que vous puissiez obtenir des aides au financement via votre OPCO
  • de nombreux clients qui nous font confiance depuis des années
  • un manifeste pour garantir des formations à taille humaine, des formateurs passionnés, de véritables workshops...
  • 103 formations au catalogue, 1428 sessions depuis nos débuts en 2012 avec une moyenne de satisfaction de 4,6/5
  • la possibilité de vous proposer un accompagnement personnalisé ou du conseil après la formation

Besoin d'aide ?

Vous souhaitez discuter avec nous à propos de votre projet de formation ?
Vous voulez plus d'information sur une formation ou notre fonctionnement ?


Rappel Email

Nos forces

  • Des formations à taille humaine
  • Des formateurs passionnés
  • Des véritables workshop
Accéder au Manifeste

Nos clients

Formation C++ avancé

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

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

Le(s) formateur(s)

Guillaume METAIS

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.

Voir son profil détaillé

A propos de Human Coders

Human Coders c'est un centre de formation pour développeurs avec :

  • une certification Qualiopi, indispensable pour que vous puissiez obtenir des aides au financement via votre OPCO
  • de nombreux clients qui nous font confiance depuis des années
  • un manifeste pour garantir des formations à taille humaine, des formateurs passionnés, de véritables workshops...
  • 103 formations au catalogue, 1428 sessions depuis nos débuts en 2012 avec une moyenne de satisfaction de 4,6/5
  • la possibilité de vous proposer un accompagnement personnalisé ou du conseil après la formation

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