Uczestnicy podczas szkolenia zapoznają się z metodami wytwarzania oprogramowania z użyciem zaawansowanych mechanizmów języka C++, szablonów STL oraz standardami C++11, C++14 i C++17. Na zajęciach poruszane są zagadnienia związane z koncepcjami algorytmów, iteratorów i zaawansowanych struktur danych dostępnych w ramach biblioteki standardowej (zgodnej ze standardem C++17) oraz biblioteki Boost. Szkolenie obejmuje także zagadnienia programowania uogólnionego oraz cechy typów. Szczególny nacisk kładziemy na nowe właściwości C++, które niwelują obecne do tej pory bolączki starszych standardów języka. Zajęcia uwzględniają także potrzeby testowania aplikacji tworzonych w języku C++ z użyciem narzędzi wspierających proces TDD. Jako biblioteki wspierające, wykorzystane są: cppunit oraz Boost Test. Duży nacisk w trakcie zajęć kładziemy na zrozumienie aspektów wydajności oraz gospodarowania zasobami z użyciem inteligentnych wskaźników. Jako techniki tworzenia aplikacji obiektowej, prezentowane są klasy wytycznych wspierające tradycyjne wzorce projektowe (GoF). Podczas szkolenia posługujemy się technologiami otwartymi z dostępem do kodu źródłowego.

Zajęcia prowadzone są przez doświadczonych praktyków, którzy na co dzień wdrażają techniki i procedury związane z technologiami związanymi z językiem C++ w rzeczywistych projektach. W trakcie zajęć używamy technologii i środowisk otwartych.

Zakres szkolenia

Szkolenie obejmuje:

  • omówienie zmian wprowadzonych wraz ze standardami C++11 i C++14,
  • nowe elementy języka i biblioteki standardowej wprowadzone wraz z C++17,
  • algorytmy biblioteki standardowej z uwzględnieniem standardu C++17,
  • kontenery i iteratory biblioteki standardowej,
  • cechy typów i ich praktyczne użycie (ang. Type Traits),
  • inteligentne wskaźniki i ich stosowanie,
  • wyrażenia lambda,
  • przegląd przydatnych bibliotek w ramach Boost.

Wymagania

Od uczestników szkolenia wymaga się:

  • biegłego posługiwania się wybranym środowiskiem IDE (Eclipse, NetBeans, vim),
  • znajomości koncepcji programowania obiektowego, systemowego i aplikacyjnego,
  • biegłej znajomości narzędzi do tworzenia aplikacji z rodziny gcc i binutils,
  • umiejętności posługiwania się narzędziem debuggera,
  • znajomości koncepcji związanych z programowaniem w języku C++ na poziomie średnio i zaawansowanym.

Dodatkowo mile widziana jest znajomość aspektów sprzętowych platformy x86 (przydzielanie i zarządzanie pamięcią, alokacja rejestrów, konwencje wywołań, optymalizacje).

Adresaci szkolenia

Szkolenie adresowane jest do:

  • średnio zaawansowanych i zaawansowanych programistów programujących w języku C i C++ w środowisku GNU/Linux,
  • osób znających w stopniu podstawowym i zaawansowanym zakres systemu szablonów STL,
  • programistów tworzących oprogramowanie na platformie systemowej GNU/Linux lub MS Windows,
  • programistów tworzących aplikacje głównego nurtu oraz aplikacje sieciowe.

Cel szkolenia

Głównymi celami w procesie szkoleniowym są:

  • kształcenie umiejętności oraz rozwijanie wiedzy dotyczącej tworzenia zaawansowanych rozwiązań w języku C++,
  • osadzenie narzędzi i procesów tworzenia oprogramowania w realiach współczesnych wymagań Inżynierii Oprogramowania,
  • dokonanie konsolidacji wiedzy i uzupełnienie braków w kompetencjach w kontekście standardu C++17.

Umiejętności zdobywane podczas zajęć

Uczestnicy szkolenia po jego zakończeniu zdobędą umiejętności:

  • testowania jednostkowego aplikacji w języku C++,
  • tworzenia aplikacji z użyciem bibliotek składowych Boost,
  • zapoznają się także ze współczesnymi bibliotekami języka C++ przetwarzającymi dane w różnorodnych formatach.

Parametry szkolenia

4 dni. Szkolenie obejmuje 60% wykładu oraz 40% ćwiczeń.

Program szkolenia

  1. Algorytmy i iteratory biblioteki standardowej – uzupełnienia związane ze standardami C++11, C++14 i C++17
    1. Wydajność algorytmów standardowych.
    2. Stosowanie algorytmów i iteratorów.
    3. Algorytmy i kontenery dostępne w ramach standardów C++11, C++14 i C++17
    4. Modyfikacja działania algorytmów standardowych.
  2. STL – uzupełnienie i przypomnienie wiedzy.
    1. Szablony – stosowanie i reguły dopasowań.
    2. Reguły SFINAE (ang. substitution failure is not an error).
    3. Wzorzec „zadziwiająco często powracającego szablonu” CRTP (ang. curiously recurring template pattern).
    4. Trik Bartona-Nackmana (ang. Barton-Nackman trick).
    5. Kruczki i sztuczki związane ze stosowaniem szablonów.
    6. Szablon o zmiennej liczbie argumentów (ang . variadic templates).
    7. Szablony zagnieżdżone.
  3. Mechanizmy i elementy standardu C++17.
    1. Manipulacja typem.
    2. Nowe słowa kluczowe.
    3. Mechanizmy kontroli definiowania i instancji klas.
    4. Wyjątki i obsługa w środowisku wielowątkowym.
    5. Rozszerzenia biblioteki standardowej.
    6. Wyrażenia lambda.
  4. Cechy typów (ang. type traits).
    1. Pojęcie cechy typu i manipulowanie nim.
    2. Cechy typów w bibliotece standardowej.
    3. Rozwiązywanie najczęstszych problemów z użyciem cechy typów.
    4. Własne cechy typów – tworzenie i stosowanie.
    5. Rozszerzenia C++17.
  5. Wykładnie – praktyczne stosowanie.
    1. Pojęcie wykładni (ang. class policy).
    2. Wykładnie – wady i zalety.
    3. Tworzenie i stosowanie własnych wykładni.
    4. Implementacja popularnych wzorców projektowych z użyciem wykładni.
    5. Programowanie aspektowe, a wykładnie.
  6. Inteligentne wskaźniki.
    1. Rodzaje inteligentnych wskaźników.
    2. Problem własności/przynależności.
    3. Stosowanie inteligentnych wskaźników w codziennej pracy.
  7. Testowanie aplikacji w języku C++.
    1. TDD w języku C++ - zasady i stosowanie.
    2. xUnit – elementy i stosowanie.
    3. Prawidłowe tworzenie testów.
    4. Zasady TDD a biblioteka cppunit.
    5. Warsztat praktyczny testowania.
  8. Boost Test – biblioteka wspierająca testowanie.
    1. Przegląd elementów Boost Test.
    2. Implementacja testów w bibliotece Boost Test.
    3. Testy rozszerzone.
  9. Boost – przegląd przydatnych bibliotek.
    1. Zakresy zastosowań bibliotek Boost.
    2. Specyfika implementacji i stosowania.
    3. Przykładowe zastosowania bibliotek.
    4. Biblioteki Boost a nowe standardy języka C++.
  10. Boost Regex.
    1. Zakres stosowania Boost Regex.
    2. Typowe operacje związane z analizą wyrażeń regularnych.
    3. Kruczki i sztuczki zastosowania Boost Regex.
    4. Optymalizacja mechanizmów biblioteki we własnych aplikacjach.
  11. Boost Property Tree.
    1. Przeznaczenie biblioteki Boost Property Tree.
    2. Zakres wydajnego stosowania Boost Property Tree.
  12. Boost Meta State Machine/ Boost Statechart.
    1. Paradygmat programowania maszyny stanu.
    2. Wsparcie dla programowania maszyny stanu dostarczane wraz z bibliotekami z rodziny Boost.
    3. Warsztat implementacji maszyny stanu.
  13. Boost Algorithm.
    1. Boost Algorithm jako uzupełnienie biblioteki standardowej.
    2. Algorytmy przeszukiwania.
    3. Algorytmy pracujące na sekwencjach.
    4. Warsztat implementacji.
  14. Boost Asio.
    1. Asynchroniczny dostęp do danych z użyciem Boost Asio.
    2. Wsparcie komunikacji sieciowej.
    3. Asio a przesyłanie danych sieciowych.
    4. Sygnały.
    5. Warsztat implementacji.
  15. Boost Filesystem.
    1. Przenośność zapewniana przez Boost Filesystem.
    2. Boost Filesystem a nowe standardy języka C++.
    3. Przechwytywanie błędów w Boost Filesystem.
    4. Warsztat implementacji.
  16. Boost Interprocess.
    1. Współdzielenie struktur pomiędzy procesami.
    2. Synchronizacja pracy procesów.
    3. Alokatory i zarządzanie pamięcią.
    4. Boost Interprocess a inteligentne wskaźniki.
  17. Boost Intrusive.
    1. Wydajność i zalety struktur intruzywnych.
    2. Intruzywne wersje kontenerów.
    3. Analiza wydajności tradycyjnych rozwiązań i rozwiązań Boost Intrusive.
  18. Boost MPL.
    1. Metaprogramowanie – pojęcia, algorytmy i warsztat.
    2. Szybkie wprowadzenie do metaprogramowania.
    3. Metaprogramowanie a rzeczywiste wyzwania.
    4. Warsztat implementacji.
  19. Profilowanie aplikacji w języku C++.
    1. Pojęcie wąskich gardeł w aplikacji.
    2. Mechanizmy i rodzaje profilowania aplikacji w C++.
    3. Warsztat implementacji.

Pytania?

* Wymagane.


Konsultant on-line
Skorzystaj z usług naszego konsultanta on-line.
Naciśnij przycisk ‘Skorzystaj’ aby przejść do okienka czatu
Kontakt
ul. Nowogrodzka 62c
02-002 Warszawa
Telefon +48 22 2035600
Fax +48 22 2035601
Email