Course Code:
c2pl
Duration:
24 hours
Overview:
Kurs omawia język obiektowy C++ na poziomie zaawansowanym, uwzględniając jego wykorzystanie na przykładach wskazanych przez Zamawiającego. Warsztat omawia stosowanie języka C++ w systemach wbudowanych, biblioteki oraz alokatory.
Course Outline:
- Stan obecny i strategia rozwoju mechanizmów w języku C++ od C++11 do dziś
- Plan standaryzacji i źródła standardów
- Kluczowe aspekty i punkty ciężkości w poszczególnych rewizjach standardów C++
- Luki standaryzacyjne z punktu widzenia zaawansowanego programisty
- Aspekty wpływające na jakość kodu i jego wydajność w poszczególnych rewizjach standardu
- Przegląd efektywnych narzędzi dostarczanych wraz z C++11
- Rozwinięcie i uzupełnienie luk w standardzie C++14 - elementy nowe i uzupełnienia
- Nowe właściwości C++17
- Planowane mechanizmy w standardzie C++20
- Strategia rozwoju języka deklarowana przez komisję standaryzacyjną
- Aspekty programowania dla systemów wbudowanych - konwencje, efekty, zastosowania
- Problemy i ograniczenia platform wbudowanych vs systemów głównego nurtu
- Modele obliczeniowe dostępne w nowoczesnym C++
- Specyfika efektywnego programowania dla systemów wbudowanych
- Konwencje: rzutowanie, CRTP, Mixin … w podejściu do tworzenia kodu niskiego poziomu
- Aspekty wzorców dla branży systemów wbudowanych
- Wykładnie bezpiecznego i wydajnego programowania - źródła standaryzacji
- HIC++, JSF++, CERT C++, AUTOSAR C++, C++ Core Guidelines - przegląd
- Mechanizmy detekcji i ostrzeżeń dostępne w kompilatorach
- Narzędzia zewnętrzne wspierające analizę kodu - przegląd
- Biblioteka GSL i jej zastosowanie
- Cele stawiane przed biblioteką i korelacja z C++ Core Guidelines
- Widoki w GSL
- Przynależność obiektu
- Narzędzia GSL i asercje
- Koncepty
- Zarządzanie pamięcią w języku C++ z uwzględnieniem systemów wbudowanych
- Przestrzenie pamięci jako zasób w C++ - rodzaje i ich własności
- Ograniczenia alokacji dynamicznej z punktu widzenia systemów wbudowanych
- Inteligentne wskaźniki - zakres problemów które rozwiązują a których nie
- Style alokacji: tradycyjna, pulowa, statyczna…
- Alokatory i algorytmy alokacji
- Wymiary oceny algorytmów alokoatorów
- Implementacja tradycyjnego alokatora
- Alokator polimorficzny
- Alokator arenowy
- Alokator TLSF (ang. Two Level Segregate Fit)