Formation C++ Moderne
1890€ HT / personne |
3 jours (21 heures) |
Présentation
Cette formation C++ moderne s’adresse aux personnes qui maitrisent déjà les bases du langage C++ et souhaitent se perfectionner pour gagner en robustesse, performante et productivité.
L’écosystème C++ évolue en effet de façon intense depuis 2011, au rythme d’une nouvelle norme tous les 3 ans. Côté hardware, la multiplication des cœurs ces dernières années implique aussi de repenser sa manière de programmer. Tout cela pose un vrai défi d’adaptation, tant pour assimiler les nouveautés que pour se défaire de pratiques désormais obsolètes.
C’est pour répondre à ce défi que cette formation a été conçue. En mettant en lumière les principes fondamentaux qui guident l’évolution du langage, il devient beaucoup plus facile de progresser sans se perdre dans la complexité. Et donc d’écrire un code plus simple et plus fiable à la fois.
Comme pour toutes nos formations, celle-ci vous présentera la toute dernière version de C++, à savoir C++ 20.
Objectifs
- Assimiler et mettre en œuvre les principes du C++ moderne
- Se familiariser avec les évolutions de C++ jusqu’à C++20
- Maitriser les concepts avancés de programmation parallèle et concurrente
Public visé
- Développeurs
- Architectes
Pré-requis
- Connaissance basique en C++ (notion d’objet et pointeur)
Programme de la formation C++ Moderne et Multithreading
Révision des bases du langage
- Définition du langage C++
- Les fonctions: inline, static, const, constexpr, virtual, consteval, …
- Plain Old Data (POD) : struct vs class
- Déclaration vs définition (One Definition Rule)
- La STL : ses conteneurs et ses algorithmes
- Principes de base des templates, différence avec constexpr
- Comportements indéfinis (Undefined behavior)
Fondements du C++ moderne
- Présentation des C++ Core Guidelines
- Évolutions dans la syntaxe (C++14, C++17, C++20)
- Gestion robuste des ressources (RAII, smart pointers, scope guards)
- Notion de propriété (ownership), sémantique de déplacement (std::move)
- Sémantique de valeur / entité
- Simplifier les initialisations complexes avec des lambdas
- Un code plus robuste et expressif avec des alias fortement typés (strong typedefs)
Programmation orientée objet avancée
- Polymorphisme statique et dynamique
- Principe de substitution de Liskov
- Héritage vs composition
- Classes abstraites, PIMPL
- POO sans héritage
- Principes SOLID
Notions de programmation fonctionnelle
- Les lambdas
- Immutabilité (const) et fonctions pures
- Type optionnel avec std::optional
- Type composite avec std::variant
- Type erasure : std::string_view, std::span
Multithreading et scalabilité
- Parallélisme vs concurrence
- Race condition, impact du mot-clé const
- Protection des sections critiques (std::mutex, std::condition_variable, …)
- Enjeux de la scalabilité (loi d’Amdahl)
- Algorithmes parallèles de la STL (C++17)
- Programmation lock free (std::atomic)
- Programmation asynchrone : promise, future, coroutines
- Map, filter, reduce (Qt Concurrent)
- Thread Local Storage (thread_local)
- Détecter les problèmes (outils disponibles)
- Autres approches : OpenMP, CUDA, Boost.Interprocess, gRPC
Outils modernes du développeur C++
- Bien configurer son compilateur
- Tests unitaires avec Catch2
- Utilisation de CMake et des CMake presets
- Formatage automatique du code avec clang-format
- Gestion de dépendances avec Conan
- Couverture de code avec gcov / lcov
- Analyseurs statiques
- Compiler explorer (Godbolt)
Langues et Lieux disponibles
Langues
- Français
- Anglais / English
Lieux
-
France entière
- Paris
- Lille
- Reims
- Lyon
- Toulouse
- Bordeaux
- Montpellier
- Nice
- Sophia Antipolis
- Marseille
- Aix-en-Provence
- Nantes
- Rennes
- Strasbourg
- Grenoble
- Dijon
- Tours
- Saint-Étienne
- Toulon
- Angers
-
Belgique
- Bruxelles
- Liège
-
Suisse
- Genève
- Zurich
- Lausanne
-
Luxembourg
Nos Formateurs Référents
Aurélien
Témoignages
Les + : Compétence du formateur, variété des sujets abordés..!
Afficher tous les témoignages
Les + : Compétence du formateur, variété des sujets abordés..!
Les + : bonnes explications dans les détails, rythme impeccable
Les + : Bonne connaissances du formateur
Je recommande la formation
Les + : On aborde beaucoup de sujets.
Formateur très attentif aux questions des participants, et compétent sur ses réponses.
Egalement respectueux de « la culture de l’entreprise », et ne formule pas de critiques sur nos conventions internes.
Aussi l’occasion de remettre en cause des notions mal acquises. => il ne faudrait pas uniquement une formation au c++ moderne, mais aussi de la correction des concepts trompeurs.
Les – : Pour moi la durée est un peu courte, un peu trop rapide. Parfois pendant que je me poser des notes sur ce que j’ai compris, de nouvelles informations sont données sur le même sujet ou le suivant; Et du coup je rate cette partie.
De la même façon, je réalise grâce au QCM final que je n’ai pas vraiment compris ce que sont les xvalues… et que je n’ai une compréhension à peu près fiable que des lvalues & pure-rvalues; et comme ça fait une grosse zone de flou, en fin de compte je ne comprends pas correctement la relation de std::move() avec ces notions.
De la même façon, j’aurais aimé disposer de plus de temps pour avancer sur l’exercice; (comment est-ce qu’on split une std::string en plusieurs tokens? etc.) et poser plus de questions sur les points vus les premiers jours, qui me sont venues tardivement.
J’espérais aussi qu’on voit une collection d’anti-patterns pour faire attention à ne pas mal utiliser tous ces outils.
En synthèse : merci
Les + : la duree = on a le temps pour approfondir des details
Les – : le domaine est enorme, et meme en 3j on ne peut pas aborder tous les points
Les + : La partie template avec l’introduction des templates
Les – : une bonne partie soit déjà très bien connu soit non utile pour nos développements
Je recommande la formation
Les + : Excellent instructeur qui réponds à toutes les questions.
Les – : Un peu court le temps pour le dernier TP.
Les + : les réponses à toutes les questions
Noter la formation
1890€ HT / personne |
3 jours (21 heures) |
UNE QUESTION ? UN PROJET ? UN AUDIT DE CODE / D'INFRASTRUCTURE ?
Pour vos besoins d’expertise que vous ne trouvez nulle part ailleurs, n’hésitez pas à nous contacter.
ILS SE SONT FORMÉS CHEZ NOUS