| Tytuł: | Advanced Modern C++ |
| Kod: | adv-modern |
| Kategoria: | C i C++ |
| Forma: | 40% wykład / 60% warsztaty |
| Czas trwania: | 3-6dni |
| Odbiorcy: | developerzy, architekci |
| Zapisy: |
Indywidualne zamówienie i dopasowanie dla grupy. |
| Logistyka: |
W siedzibie klienta lub w innym dowolnym miejscu. |
Język C++ ma to do siebie, że łatwo go użyć w niewłaściwy sposób w wyniku czego nasz kod może stać się źródłem wielu problemów.
Okazuje się jednak, że w przypadku świadomego używania wybranych funkcjonalności języka można stosunkowo łatwo wytwarzać oprogramowanie wysokiej jakości cechujące się bardzo wysoką wydajnością i odpornością na błędy programistyczne. Taki styl kodowania nazywamy właśnie Modern C++.
Szkolenie przeznaczone jest dla programistów posiadających już doświadczenie w pracy zawodowej z językiem C++ i znających problemy z niefrasobliwym sposobem kodowania w tym języku. Celem szkolenia jest ugruntowanie wiedzy o samym języku C++ oraz pokazanie w jaki sposób można unikać wielu z problemów często pojawiających się w kodzie produkcyjnym.
Materiał szkolenia podzielony jest na część obowiązkową (punkty 1-4 trwające 3 dni) i opcjonalną (tematy do wyboru - trwające w sumie 3 dni). Każde szkolenie dopasowywane jest pod indywidualne potrzeby klienta. Możliwe jest utworzenie jednego długiego szkolenia lub 2 kolejnych części rozłożonych w czasie.
Wyróżniki szkolenia
- nacisk na zrozumienie mechanizmów i filozofii działania języka C++ i naukę wykorzystania tej wiedzy we własnym kodzie
- wszechobecność "C++ templates" w zadaniach praktycznych
- kod odporny na błędy
- wybór użytecznych wzorców oraz technik sprawdzonych wielokrotnie w wymagającym kodzie produkcyjnym
Program Szkolenia
Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.-
C++ Basics for Experts- Advanced approach to C++ basic concepts (identifiers, types and their properties, objects, scope, lifetime, and more)
- Class special member functions undercover
- Object construction and initialization voodoo
- Advanced approach to C++ basic concepts (identifiers, types and their properties, objects, scope, lifetime, and more)
-
Coding with performance in mind- Value categories
- Copy elision
- Move semantics
- Ref-qualifiers
- noexcept
- constexpr
- Source code vs hardware - introduction
- Value categories
-
Utilities that every C++ developer should know and use- Smart pointers
- Lambda expression
- Algorithms and their specializations
- std::string_view
- std::optional
- std::tuple
- std::variant
- Smart pointers
-
Templates demystified- Class, function, variable, and alias templates
- Parameters and arguments
- Explicit and partial specialization
- Explicit and implicit instantiation
- Template argument deduction
- Variadic templates
- Fold-expressions
- Dependent names
- SFINAE
- Class, function, variable, and alias templates
-
Tools mandatory in modern C++ developer’s workshop- cmake
- clang toolset
- gtest/gmock
- Code Coverage
- Google benchmark
- Compiler Explorer
- cmake
-
Design patterns do not end on GoF- Non-Copyable
- RAII
- Copy-and-swap
- Smart Pointer
- Type Traits
- Tag dispatch
- Policy-based design
- EBO
- Type Erasure
- Copy-on-write
- CRTP
- Singleton
- SOO
- Non-Copyable
-
C++ is not only about OOD- Inheritance vs polymorphism
- Pitfalls and how to fight with them
- Value Semantics
- Concept-based Polymorphism
- Inheritance vs polymorphism
-
C++ containers for demanding developers- Finding the right tool for the job (functionality, memory layout, performance/latency)
- Sequence containers
- Associative containers
- Hash tables
- Not only from C++ standard library
- Finding the right tool for the job (functionality, memory layout, performance/latency)
-
Writing stable and secure code- Typical problems of legacy code
- Pitfalls of buggy coding standards
- Class construction and destruction
- Magic numbers everywhere
- Replacing pointers with C++ constructs
- Value objects
- Error handling
- Typical problems of legacy code
Pobierz program w formacie PDF