Zaawansowane programowanie w języku C
Umiejętności zdobywane podczas kursu:
- identyfikowanie błędów zarządzania pamięcią
- obsługa komunikacji sieciowej
- integracja aplikacji z dostarczanymi bibliotekami
- posługiwanie się narzędziami ułatwiającymi odnajdywanie i usuwanie błędów
- modularyzacja złożonego projektu
- budowanie własnych bibliotek
- stosowanie mechanizmów wydajnego programowania w języku C
- umiejętność definiowania i obsługi złożonych struktur danych
- budowanie własnych bibliotek i dystrybucja oprogramowania
Szkolenie przeznaczone jest dla osób programujących w języku C na poziomie średnio zaawansowanym. W ramach zajęć słuchacze zapoznają się z mechanizmami ładowania dynamicznego i wykorzystania bibliotek zewnętrznych. Zajęcia skupiają się na elementach które najczęściej stanowią problem w prowadzeniu projektów informatycznych oraz na operowaniu wskaźnikami. W trakcie kursu uczestnicy wykorzystują w praktyce wywołania asynchroniczne które w widoczny sposób podnoszą wydajność aplikacji.
- umiejętność programowania w języku C na poziomie średnio zaawansowanym
- znajomość podstawowych koncepcji związanych z obsługą protokołów sieciowych
- biegła umiejętność obsługi wybranego środowiska IDE
-
Wycieki pamięci i zaawansowane zarządzanie pamięcią
- mechanizm wycieku pamięci i jego diagnostyka
- prawidłowe zarządzanie pamięcią
-
Bufory i ciągi znaków
- różnice pomiędzy buforem a ciągiem znaków
- operacje na buforze oraz na ciągu znaków
-
Zaawansowane zarządzanie plikami
- operacje asynchronicznego dostępu do plików
- obsługa katalogów
- blokowanie rekordów i plików
-
Wskaźniki na funkcje i zaawansowane użycie wskaźników
- struktury zbudowane ze wskaźników
- przekazywanie parametrów przez wskaźniki
- wskaźniki na funkcje i funkcje wskaźnikowe
- patologie stosowania wskaźników
-
Usuwanie błędów
- debugger GDB i DDD
- podstawowe polecenia GDB
- sesje usuwania błędów
-
Analiza wykorzystania pamięci - narzędzie Valgrind
- zakres działania Valgrind
- koszty użycia narzędzia Valgrind
- diagnostyka wykrywania błędów alokacji pamięci
- z użyciem Valgrind
-
Analiza statyczna kodu - narzędzia splint
- zakres działania narzędzia splint
- statyczna analiza kodu
- konwencje kodowania i ich wpływ na wyłapywanie
- typowych błędów
- dokumentowanie kodu z użyciem Doxygen
-
Obsługa operacji sieciowych
- gniazda w programowaniu
- podstawowa obsługa operacji sieciowych
- rozwiązywanie nazw
- UDP i TCP jako protokoły transportu
- wywołanie select()
-
Obsługa bibliotek zewnętrznych
- biblioteki statyczne i dynamiczne
- zakres zastosowań bibliotek
- konsolidacja własnych programów z użyciem istniejących bibliotek
-
Dynamiczne ładowanie modułów
- obsługa dynamicznego ładowania modułu
- wyładowywanie modułów i obsługa ładowania na żądanie
-
Budowa własnych bibliotek oprogramowania
- zasady tworzenia bibliotek oprogramowania
- rodzaje bibliotek i różnice w ich budowie
-
Dystrybuowanie oprogramowania
- metody dystrybucji oprogramowania
- kompilacja statyczna i dynamiczna
- dystrybucja własnych bibliotek
- analiza warstwy binarnej dostarczonego oprogramowania


