Advanced Modern C++

Kod: ccpp-adv-modern
Kategoria: C i C++
Forma: 40% wykład / 60% warsztaty
Czas trwania: 3-6dni
Grupa docelowa: architekci
developerzy
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.

  1. C++ Basics for Experts
    1. Advanced approach to C++ basic concepts (identifiers, types and their properties, objects, scope, lifetime, and more)
    2. Class special member functions undercover
    3. Object construction and initialization voodoo
  2. Coding with performance in mind
    1. Value categories
    2. Copy elision
    3. Move semantics
    4. Ref-qualifiers
    5. noexcept
    6. constexpr
    7. Source code vs hardware - introduction
  3. Utilities that every C++ developer should know and use
    1. Smart pointers
    2. Lambda expression
    3. Algorithms and their specializations
    4. std::string_view
    5. std::optional
    6. std::tuple
    7. std::variant
  4. Templates demystified
    1. Class, function, variable, and alias templates
    2. Parameters and arguments
    3. Explicit and partial specialization
    4. Explicit and implicit instantiation
    5. Template argument deduction
    6. Variadic templates
    7. Fold-expressions
    8. Dependent names
    9. SFINAE
  5. Tools mandatory in modern C++ developer’s workshop
    1. cmake
    2. clang toolset
    3. gtest/gmock
    4. Code Coverage
    5. Google benchmark
    6. Compiler Explorer
  6. Design patterns do not end on GoF
    1. Non-Copyable
    2. RAII
    3. Copy-and-swap
    4. Smart Pointer
    5. Type Traits
    6. Tag dispatch
    7. Policy-based design
    8. EBO
    9. Type Erasure
    10. Copy-on-write
    11. CRTP
    12. Singleton
    13. SOO
  7. C++ is not only about OOD
    1. Inheritance vs polymorphism
    2. Pitfalls and how to fight with them
    3. Value Semantics
    4. Concept-based Polymorphism
  8. C++ containers for demanding developers
    1. Finding the right tool for the job (functionality, memory layout, performance/latency)
    2. Sequence containers
    3. Associative containers
    4. Hash tables
    5. Not only from C++ standard library
  9. Writing stable and secure code
    1. Typical problems of legacy code
    2. Pitfalls of buggy coding standards
    3. Class construction and destruction
    4. Magic numbers everywhere
    5. Replacing pointers with C++ constructs
    6. Value objects
    7. Error handling


Pobierz program w formacie PDF

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.

Materiały związane ze szkoleniem

Idea renesansowej pracowni - Bottegi zakłada nieustanną pracę jej członków i dzielenie się jej wynikami.

Zamów szkolenie

Imię i nazwisko:
Firma:
E-mail:
Nr tel:
Temat:
Wiadomość:

Jeżeli preferujesz osobisty kontakt to zawsze możesz zadzwonić.

Iwona Sobótka

Koordynatorka szkoleń


Wyrażam zgodę na przetwarzania danych osobowych zgodnie z ustawą o ochronie danych osobowych w związku z wysłaniem zapytania przez formularz kontaktowy.

Podanie danych jest dobrowolne ale niezbędne do przetworzenia zapytania. Zastałem/am poinformowany/na, że przysługuje mi prawo dostępu do swoich danych, możliwości ich poprawienia, żądania zaprzestania ich przetwarzania.

Administratorem danych osobowych jest Bottega IT Minds, ul. Jana Sawy 2, 20-632 Lublin.


Klauzula informacyjna