Uczestnicy szkolenia zapoznają się z zaawansowanymi aspektami programowania z użyciem mechanizmów metaprogramowania w języku C++. Skupiamy się na tych zagadnieniach, które w bezpośredni sposób podnoszą wydajność w codziennej pracy programisty, uwzględniając charakter jego pracy (reaktywna – dodawanie nowych funkcjonalności, wytwarzanie – tworzenie oprogramowania od podstaw). Zajęcia obejmują zagadnienia związane z koncepcjami algorytmów, iteratorów i zaawansowanych struktur danych na poziomie metaprogramowania. W przykładach wykorzystywane są elementy biblioteki standardowej w standardzie C++11 oraz elementy biblioteki Boost wspierające koncepcje tworzenia aplikacji na poziomie meta.
Szczególny nacisk w trakcie zajęć kładziemy na zrozumienie aspektów wydajności czasu kompilacji oraz dostępnymi w standardzie C++11 narzędziami zwiększającymi produktywność programisty. Prezentowane mechanizmy odnosimy do aspektów praktyki, prezentując ich zalety, a także i koszt stosowania.
Na zajęciach 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ń stosują technologie związane z językiem C++ w rzeczywistych projektach. W trakcie zajęć używamy technologii i środowisk otwartych.

Zakres szkolenia

Szkolenie obejmuje:

  • konsolidację wiedzy o elementach biblioteki standardowej w zakresie mechanizmów operowania typem,
  • narzędzia metaprogramowania dostępne w ramach Boost MPL oraz biblioteki standardowej języka C++,
  • aspekty testowania aplikacji tworzonej na poziomie meta,
  • koncepty i ich zakres stosowania.

Wymagania

Od uczestników szkolenia wymaga się:

  • posługiwania się wybranym środowiskiem IDE (Eclipse, NetBeans, vim),
  • bardzo dobrej znajomości koncepcji programowania obiektowego, systemowego i aplikacyjnego,
  • znajomości narzędzi do tworzenia aplikacji z rodziny gcc i binutils,
  • umiejętności posługiwania się narzędziem debuggera,
  • dobrej orientacji w bibliotekach i narzędziach dostępnych w ramach stosu technologii C++,
  • znajomości koncepcji związanych z programowaniem w języku C++ na poziomie zaawansowanym.

Adresaci szkolenia

Szkolenie adresowane jest do:

  • zaawansowanych programistów programujących w języku C i C++ w środowisku GNU/Linux lub MS Windows,
  • osób praktycznie stosujących system szablonów STL we własnych projektach,
  • 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ą:

  • techniki identyfikowania obszarów zastosowań metaprogramowania we własnych projektach (toczących się jak i tych nowych),
  • zapoznanie się z dostępnymi mechanizmami związanymi z metaprogramowaniem dostępnymi w języku C++11 jak i starszych,
  • zapoznanie się z biblioteką Boost MPL.

Umiejętności zdobywane podczas zajęć

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

  • praktyczne określanie obszarów zastosowań technik metaprogramowania w języku C++ we własnych projektach,
  • samodzielne implementowanie mechanizmów „poziomu meta” we własnych aplikacjach,
  • podnoszenie reużywalności kodu projektów i bibliotek.

Parametry szkolenia

Szkolenie trwa 3 dni. Szkolenie obejmuje 60% wykładu i 40% ćwiczeń.

Program szkolenia

  1. Metaprogramowanie - definicja i zakres zastosowania.
    1. Programowanie czasu kompilacji.
    2. Generator klas.
    3. Złożenie klas.
    4. Zmiana typu i podstawienie typu.
  2. Optymalizacja kodu na etapie kompilacji.
    1. Zadziwiająco często powracający szablon.
    2. Sizeof i zakres jego zastosowań.
    3. Polimorfizmy – statyczny i dynamiczny.
  3. Cechy typu i manipulacja typem.
    1. Powiązania i relacje pomiędzy typami.
    2. Metafunkcje i metafunkcje numeryczne.
    3. Biblioteka Boost Type Traits.
    4. Metafunkcje bezargumentowe.
    5. Lambda – w ramach C++11 oraz Boost.
  4. Iteratory i sekwencje.
    1. Definicja sekwencji i iteratora na poziomie meta.
    2. Dostępne klasy sekwencji na poziomie meta.
    3. Definiowanie własnych sekwencji.
  5. Dostępne meta-algorytmy.
    1. Idiomy i abstrakcja algorytmów.
    2. Wielokrotne użycie meta-algorytmów.
    3. Inserter na poziomie meta.
    4. Definiowanie własnych meta-algorytmów.
  6. Widoki i adaptery meta-iteratorów.
    1. Pojęcie i definiowanie własnego widoku.
    2. Adapter meta-interatora i jego obsługa.
    3. MPL - biblioteka wspierająca metaprogramowanie.
    4. Przegląd możliwości Boost MPL.
    5. Zastosowanie Boost MPL.
  7. Języki osadzone zależne od dziedziny.
    1. Języki DSL (ang. domain specific language) i zakresy ich zastosowań.
    2. Definiowanie własnych języków DSL.
  8. Optymalizacje i zagadnienia zaawansowane.
    1. Leniwe typowanie na poziomie meta.
    2. Klasy i funkcje narzędziowe.
    3. Kruczki i sztuczki w programowaniu na poziomie meta.

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