Opis: Umiejętności zdobywane podczas kursu:
- stosowanie metaprogramowania we własnych projektach
- diagnozowanie błędów związanych z czasem kompilacji (czas przetwarzania szablonów)
- definiowanie własnych języków zależnych od dziedziny
Cel:
- identyfikacja obszarów zastosowań metaprogramowania we własnych projektach
- definiowanie mechanizmów związanych z metaprogramowaniem w języku C++
- umiejętność definiowania własnych języków zależnych od dziedziny
- podniesienie reużywalności kodu w projektach
Grupa docelowa: Szkolenie przeznaczone jest dla doświadczonych programistów programujących w języku C++. Zakłada biegłą znajomość technologii szablonów oraz wzorców projektowych GoF. W trakcie zajęć słuchacze zapoznają się z technologią metaprogramowania, która umożliwia im tworzenie elastycznych komponentów.
Znajomość technologii metaprogramowania w istotnym stopniu podnosi reużywalność kodu w projektach i umożliwia przesunięcie konkretyzacji kodu do binarium z czasu kompilacji do etapu jego obróbki w trakcie przetwarzania szablonów.
W trakcie zajęć słuchacze zapoznają się z właściwościami biblioteki Boost oraz poznają możliwości definiowania własnych języków zależnych od dziedziny (DSL).
Uwagi: Czas trwania szkolenia – 2 dni.
Oferujemy szkolenia w naszych ośrodkach w Warszawie, Wrocławiu, Krakowie, jak i w lokalizacjach wskazanych przez klienta.
W celu ustalenia szczegółów prosimy o kontakt na osec@osec.pl
Wymagania:
- biegłe programowanie w języku C++ z użyciem paradygmatów proceduralnego, obiektowego oraz generycznego
- podstawowa znajomość paradygmatu programowania funkcyjnego
- stosowanie systemu szablonów we własnych aplikacjach
- umiejętność biegłego programowania w środowisku wybranego IDE
Konspekt:
- Metaprogramowanie – definicja i zakres zastosowania
- programowanie czasu kompilacji
- generatory obiektów
- złożenia klas
- wymazywanie typu
- Optymalizacja kodu w czasie kompilacji
- powracający szablon
- sizeof i jego zastosowanie
- statyczny polimorfizm
- Cechy i manipulacja typem
- powiązania typów
- metafunkcje i metafunkcje numeryczne
- biblioteka Boost Type Traits
- metafunkcje bezargumentowe
- implementacja lambda
- Iteratory i sekwencje
- definicja sekwencji i iteratora
- klasy sekwencji
- definiowanie własnych sekwencji
- Dostępne algorytmy
- idiomy i abstrakcja algorytmów oraz wielokrotne użycie
- pojęcie i definicja insertera
- definiowanie własnych algorytmów
- Widoki i adaptery iteratorów
- pojęcie i definiowanie własnego widoku
- adapter interatora i jego obsługa
- MPL – biblioteka wspierająca metaprogramowanie
- przegląd możliwości Boost MPL
- zastosowanie Boost MPL
- Języki osadzone zależne od dziedziny
- języki DSL (ang. domain specific language) i zakresy ich zastosowań
- biblioteka Boost Spirit jako przykład DSL
Notyfikacja: Note: The course outline is subject to change as technology advances and the underlying job evolves. For questions or confirmation on a specific objective or topic, please contact us at osec@osec.pl