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:
  1. Stan obecny i strategia rozwoju mechanizmów w języku C++ od C++11 do dziś
  2. Plan standaryzacji i źródła standardów
  3. Kluczowe aspekty i punkty ciężkości w poszczególnych rewizjach standardów C++
  4. Luki standaryzacyjne z punktu widzenia zaawansowanego programisty
  5. Aspekty wpływające na jakość kodu i jego wydajność w poszczególnych rewizjach standardu
  6. Przegląd efektywnych narzędzi dostarczanych wraz z C++11
  7. Rozwinięcie i uzupełnienie luk w standardzie C++14 - elementy nowe i uzupełnienia
  8. Nowe właściwości C++17
  9. Planowane mechanizmy w standardzie C++20
  10. Strategia rozwoju języka deklarowana przez komisję standaryzacyjną
  11. Aspekty programowania dla systemów wbudowanych - konwencje, efekty, zastosowania
  12. Problemy i ograniczenia platform wbudowanych vs systemów głównego nurtu
  13. Modele obliczeniowe dostępne w nowoczesnym C++
  14. Specyfika efektywnego programowania dla systemów wbudowanych
  15. Konwencje: rzutowanie, CRTP, Mixin … w podejściu do tworzenia kodu niskiego poziomu
  16. Aspekty wzorców dla branży systemów wbudowanych
  17. Wykładnie bezpiecznego i wydajnego programowania - źródła standaryzacji
  18. HIC++, JSF++, CERT C++, AUTOSAR C++, C++ Core Guidelines - przegląd
  19. Mechanizmy detekcji i ostrzeżeń dostępne w kompilatorach
  20. Narzędzia zewnętrzne wspierające analizę kodu - przegląd
  21. Biblioteka GSL i jej zastosowanie
  22. Cele stawiane przed biblioteką i korelacja z C++ Core Guidelines
  23. Widoki w GSL
  24. Przynależność obiektu
  25. Narzędzia GSL i asercje
  26. Koncepty
  27. Zarządzanie pamięcią w języku C++ z uwzględnieniem systemów wbudowanych
  28. Przestrzenie pamięci jako zasób w C++ - rodzaje i ich własności
  29. Ograniczenia alokacji dynamicznej z punktu widzenia systemów wbudowanych
  30. Inteligentne wskaźniki - zakres problemów które rozwiązują a których nie
  31. Style alokacji: tradycyjna, pulowa, statyczna…
  32. Alokatory i algorytmy alokacji
  33. Wymiary oceny algorytmów alokoatorów
  34. Implementacja tradycyjnego alokatora
  35. Alokator polimorficzny
  36. Alokator arenowy
  37. Alokator TLSF (ang. Two Level Segregate Fit)