Zaawansowane programowanie w języku C++
Czas trwania szkolenia:3 dni (24h)
Kod kursu:CPP/ADV
Poziom zaawansowania:
Szkolenie na zamówienie
Szkolenie dostosowane do potrzeb Twojego zespołu. Dostępne wyłącznie na zamówienie.
- Dostosowany program
- Indywidualna wycena
- Dowolny termin
O szkoleniu Zaawansowane programowanie w języku C++
W cenie otrzymasz:
- Materiały szkoleniowe
- Certyfikat ukończenia szkolenia
- W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Wymagania
- Posługiwanie się wybranym środowiskiem IDE (Eclipse, NetBeans, Vim)
- Znajomość koncepcji programowania obiektowego, systemowego i aplikacyjnego
- Znajomość narzędzi do tworzenia aplikacji z rodziny gcc i binutils
- Umiejętność posługiwania się narzędziem debuggera
- Znajomość koncepcji związanych z programowaniem w języku C++ na poziomie podstawowym i średnio zaawansowanym
- Dodatkowo mile widziana jest także znajomość aspektów sprzętowych platformy x86 (przydzielanie i zarządzanie pamięcią, alokacja rejestrów, konwencje wywołań, optymalizacje)
Zalety
- Uczestnicy szkoleń poznają aspekty programowania uogólnionego oraz wstępnie koncepcje leżące u podstaw metaprogramowania ze szczególnym uwzględnieniem cech typów
- Zajęcia uwzględniają także potrzeby testowania aplikacji tworzonych w języku C++ z użyciem narzędzi wspierających proces TDD oraz BDD. Jako biblioteki wspierające, wykorzystane są: Google Test, Boost.Test oraz Catch
- Szczególny nacisk w trakcie zajęć kładziemy na zrozumienie aspektów wydajności oraz gospodarowania zasobami z użyciem wskaźników inteligentnych. Zajmujemy się także zarządzaniem czasem życia obiektu w odniesieniu do mechanizmu wyjątków oraz semantyki r-referencji
- Jako techniki tworzenia aplikacji obiektowej, prezentowane są klasy wytycznych, tradycyjne wzorce projektowe (GoF) oraz nie-ortodoksyjne podejścia z kręgu programowania funkcyjnego
- 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
- Praktyka przed teorią - wszystkie szkolenia technologiczne prowadzone są w formie warsztatowej. Konieczna teoria jest wyjaśniana na przykładzie praktycznych zadań
- Konkretne umiejętności - w ramach każdego szkolenia rozwijamy praktyczne umiejętności związane z daną technologią i tematyką
- Nauka z praktykami - wszyscy trenerzy na co dzień pracują w projektach, gwarantuje to dostęp do eksperckiej wiedzy i praktycznego know-how
Cele szkolenia
- Kształcenie umiejętności rozwijania 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++
- Nauka testowania jednostkowego aplikacji w języku C++
- Nauka tworzenia aplikacji wielowątkowych z użyciem mechanizmów biblioteki standardowej
- Nauka identyfikacji i tworzenia oprogramowania z użyciem wzorców GoF oraz elementów programowania funkcyjnego
- Zapoznanie się ze współczesnymi bibliotekami przetwarzającymi dane
Program
Algorytmy i iteratory biblioteki standardowej
- Przegląd dostępnych algorytmów
- Wydajność i aspekty implementacji
- Praktyczna implementacja z użyciem algorytmów z biblioteki standardowej
- Implementacja własnych algorytmów do ponownego wykorzystania
- Złożoność obliczeniowa i zakres zastosowań
- Warsztat wykorzystania algorytmów
- Rodzaje iteratorów dostępnych w bibliotece standardowej
Iteratory i programowanie uogólnione
- Aspekty implementacji iteratorów
- Implementacja własnych iteratorów
- Programowanie uogólnione - koncepcje i zastosowania
Szablony STL - wydajne stosowanie i wstęp do metaprogramowania
- Wzorce - pułapki i zastosowania
- Konkretyzacja - reguły i działanie
- Cechy typów
- Metaprogramowanie - podstawy
- Algorytmy na poziomie meta
Użyteczne biblioteki
- Boost - przegląd użytecznych rozwiązań
- Biblioteki rozwijające paradygmat programowania uogólnionego
- Biblioteki przetwarzania danych
- ML i AI w języku C++ - przydatne biblioteki
Testowanie i metodyka testowania
- Proces TDD w pracy programisty
- Proces BDD i różnice w stosunku do TDD
- Rodzaje bibliotek testów i dostępne asercje
- Projektowanie i implementowanie testów
Praca z narzędziem debuggera w języku C++
- Dostęp do podstawowych struktur C++
- Automatyzacja i skrypty
- Wstęp do integracji z infrastrukturą testowania
Nowe standardy C++
- Przegląd nowości wprowadzonych w nowych standardach C++
- Zarządzanie pamięcią (wskaźniki inteligentne)
- Nowe aspekty składni
- Obiekty funkcyjne (typ std::function, funkcje lambda, łączenie obiektów)
- Zarządzanie zakresami
- Ujednolicona obsługa systemu plików i czasu
- Cechy typów oraz rozszerzenia wielowątkowości (implementacja typów atomowych)
Wykładnie i nowoczesne projektowanie aplikacji
- Zasady S.O.L.I.D., GRASP, YAGNI - przegląd i przypomnienie
- Wykładnie w programowaniu obiektowym - aspekt praktyczny
- Implementacja wykładni (ang. policy) we własnych aplikacjach
- Rola polimorfizmu statycznego i technik wykonania na etapie kompilacji
Tworzenie aplikacji niezawodnych
- Aspekty wydajności obsługi wyjątków
- Tworzenie aplikacji odpornej na błędy
- Programowanie aspektowe