Modern C++ Eğitimi

Eğitim Hakkında

Bu eğitim, katılımcıların modern C++ standartlarını (C++11’den C++23’e kadar) uygulamalı olarak öğrenmelerini ve yazılım geliştirme süreçlerinde güvenilir, performanslı ve sürdürülebilir çözümler üretmelerini amaçlamaktadır. Program boyunca tip çıkarımı, move semantics, smart pointer’lar, lambda ifadeleri, modern STL, template teknikleri, constexpr, bellek modeli, çoklu iş parçacığı yönetimi, lock-free programlama, CPU cache optimizasyonu ve sanitizer araçları gibi ileri seviye konular ele alınır. Katılımcılar, laboratuvar ortamında gerçek kod örnekleriyle çalışarak modern C++’ın sunduğu güçlü özellikleri projelerine entegre etme becerisi kazanırlar.

Ön Koşul

Eğitimlerimize %80 oranında katılım gösterilmesi ve eğitim müfredatına göre uygulanacak sınav/projelerin başarıyla tamamlanması durumunda, eğitimin sonunda dijital ve QR kod destekli “BT Akademi Başarı Sertifikası” verilmektedir.

Eğitim İçeriği

  • C++11/14/17/20/23 değişiklik özeti — embedded cihazlarda standart seçimi
  • GCC versiyon özellikleri: -std=c++17, -std=c++20
  • CMake modernizasyonu (target_compile_features, compile_options)
  • LAB: GCC kurulumu, CMakeLists.txt yazma, ilk modern derleme
  • auto tip çıkarımı — ne zaman kullanılır, ne zaman kaçınılır
  • decltype ve trailing return type
  • nullptr vs NULL — embedded'da neden kritik
  • Range-based for: referans, const ref, structured bindings (C++17)
  • LAB: C++98 kodundan modern dönüşüm egzersizleri
  • Lvalue / rvalue / xvalue — zihin modeli
  • Move constructor ve move assignment operator
  • std::move ve std::forward — doğru kullanım
  • Rule of Zero / Three / Five — embedded'da bellek yönetimi
  • RAII pattern: mutex, file handle, DMA buffer örnekleri
  • LAB: kendi smart RAII wrapper sınıfı yazma, valgrind ile doğrulama
  • unique_ptr: exclusive ownership, custom deleters
  • shared_ptr: reference counting maliyeti — embedded'da ne zaman kullanılır?
  • weak_ptr: döngüsel referans çözümü
  • make_unique / make_shared — exception safety
  • Raw pointer hâlâ nerede gerekli? (C API interop, performans-kritik)
  • LAB: bellek leak tespiti — AddressSanitizer ile akıllı pointer migration
  • Lambda syntax: capture by value/reference, mutable lambda
  • Generic lambda (C++14), variadic lambda (C++20)
  • std::function ve performance cezası — embedded'da dikkat
  • Callback pattern: lambda vs function pointer vs virtual dispatch
  • LAB: ISR callback tasarımı, timer handler refactoring
  • std::array vs raw array — stack allocation, embedded avantajı
  • std::span (C++20): non-owning view, sıfır maliyet
  • std::optional, std::variant, std::any — hata yönetimi alternatifleri
  • Algorithm library: std::for_each, std::transform, parallel policies (C++17)
  • LAB: buffer yönetiminde std::span kullanımı, enum dispatch'ten variant'a geçiş
  • Template type deduction: fonksiyon, sınıf, değişken template
  • Variadic templates: parameter pack, fold expressions (C++17)
  • SFINAE'dan Concepts'e geçiş (C++20)
  • Template specialization & partial specialization
  • LAB: tipten bağımsız embedded register map yapısı tasarımı
  • constexpr fonksiyonlar ve değişkenler (C++11/14/17/20 farkları)
  • consteval (C++20): zorunlu derleme zamanı hesaplama
  • if constexpr (C++17): template dallanması
  • constexpr ile lookup table üretimi — embedded CRC, SIN tablosu
  • LAB: runtime hesaplamadan constexpr dönüşüm, boyut karşılaştırması (.text section)
  • LAB: embedded sürücü için policy-based communication layer
  • C++ bellek modeli: happens-before, synchronizes-with
  • Data race nedir? Undefined Behavior olarak neden kritik
  • volatile vs std::atomic — embedded'da doğru kullanım
  • LAB: ThreadSanitizer ile data race tespiti
  • std::thread, jthread (C++20): RAII thread yönetimi
  • std::mutex, recursive_mutex, shared_mutex (readers-writer lock)
  • std::lock_guard, unique_lock, scoped_lock (C++17)
  • std::condition_variable: producer-consumer pattern
  • std::promise / std::future / std::async
  • LAB: ISR — uygulama iletişimi için thread-safe kuyruk tasarımı
  • std::atomic: load/store/exchange/compare_exchange
  • Memory order: relaxed, acquire, release, seq_cst — ne seçilir?
  • Lock-free ring buffer tasarımı — gömülü sistem örneği
  • Atomic flag ile spinlock implementasyonu
  • LAB: sensor data pipeline: lock-free üretici-tüketici, performans ölçümü
  • CPU cache mimarisi: L1/L2/L3, cache line (64 byte)
  • Cache-friendly veri yapıları: AoS vs SoA
  • False sharing ve std::hardware_destructive_interference_size (C++17)
  • Memory alignment: alignas, std::aligned_storage
  • LAB: perf stat ile cache miss analizi, SoA dönüşümü ile %30+ hız artışı
  • Compiler optimization flags: -O2, -O3, -Os (embedded boyut),  -flto
  • Inlining, devirtualization, loop unrolling
  • [[likely]] / [[unlikely]] (C++20): branch prediction ipucu
  • __attribute__((always_inline)), __builtin_expect
  • Godbolt / objdump ile assembly inceleme
  • LAB: sanal dispatch kaldırma — CRTP ile sıfır maliyetli polimorfizm
  • Kritik UB kategorileri: signed overflow, null deref, out-of-bounds, use-after-free
  • AddressSanitizer (ASan): heap/stack hata tespiti
  • UndefinedBehaviorSanitizer (UBSan): tamsayı taşması, tip uyumsuzluğu
  • Valgrind --memcheck: bellek sızıntısı analizi
  • LAB: kasıtlı UB içeren kodda sanitizer çalıştırma, hata raporu okuma
  • ABI kararlılığı: shared library, extern "C", Pimpl idiom
  • C++98/modern C++ ABI uyumluluk stratejisi
  • Eğitim özeti ve modern C++ geçiş yol haritası
  • Sertifika değerlendirmesi — pratik kod review egzersizi

Kazanımlar

  • Modern C++ standartlarının (C++11–C++23) temel ve ileri özelliklerini öğreneceksiniz.
  • Move semantics, RAII ve smart pointer kullanımıyla bellek yönetimini optimize edebileceksiniz.
  • Lambda ifadeleri, STL kapsayıcıları ve algoritmalarla daha okunabilir ve güvenli kod yazabileceksiniz.
  • Template teknikleri ve constexpr ile derleme zamanı optimizasyonlarını uygulayabileceksiniz.
  • Çoklu iş parçacığı, senkronizasyon ve lock-free programlama yöntemlerini kullanabileceksiniz.
  • CPU cache ve compiler optimizasyonlarıyla performans arttırabileceksiniz.
  • Undefined Behavior tespiti ve sanitizer araçlarıyla kod güvenliğini sağlayabileceksiniz.
  • Modern C++ geçiş yol haritasını öğrenerek projelerde sürdürülebilir kod kalitesi oluşturabileceksiniz.

Hedef Kitle

  • C++ ile çalışan yazılım geliştiriciler
  • Gömülü sistem ve performans odaklı uygulama geliştiren mühendisler
  • Modern C++ standartlarını öğrenmek isteyen yazılım ekipleri
  • Kod kalitesi, bellek yönetimi ve optimizasyon konularında uzmanlaşmak isteyen profesyoneller
  • Büyük ölçekli yazılım projelerinde C++ kullanan teknik liderler

Sertifika

Katılımcıların temel C++ bilgisine sahip olmaları gerekmektedir. Nesne yönelimli programlama, pointer kullanımı ve temel veri yapıları hakkında bilgi sahibi olmak önerilir.

SEKTÖRÜN GÜVENDİĞİ ÇÖZÜM ORTAĞI

BT Akademi'yi tercih eden 4.000'den fazla kurum yanılmıyor.

Axa Sigorta
Mercedes-Benz
Roketsan
Amadeus
Sun Ekspress
TÜBİTAK MAM
Beko
Tırsan Treyler
Turk Standartlari Enstitüsü
DFDS
Toyota
İTU
Boyner
Medicalpark
DeFacto
Ak Yatırım
BİLGEM
Bosch
Tatilbudur
Istanbul Bilgi Universitesi
Havelsan
Türk Telekom
KoC Sistem
Turkiye Sınai Kalkinma Bankasi
Getir
Axa Sigorta
Mercedes-Benz
Roketsan
Amadeus
Sun Ekspress
TÜBİTAK MAM
Beko
Tırsan Treyler
Turk Standartlari Enstitüsü
DFDS
Toyota
İTU
Boyner
Medicalpark
DeFacto
Ak Yatırım
BİLGEM
Bosch
Tatilbudur
Istanbul Bilgi Universitesi
Havelsan
Türk Telekom
KoC Sistem
Turkiye Sınai Kalkinma Bankasi
Getir
Bilgi İstiyorum