C++

Güvenli, modern ve ölçekli C++
Resim: C++ Eğitimi

Bu C++ eğitimi, modern yazılım geliştirme ihtiyaçlarına uygun şekilde dilin temellerinden başlayarak güvenli bellek yönetimi, okunabilir mimari ve performanslı kod pratiklerine kadar kapsamlı bir öğrenme rotası sunar. Katılımcılar gerçek problemler üzerinden ilerleyerek daha az hata üreten, sürdürülebilir ve test edilebilir C++ kodu yazma becerisi kazanır.

Eğitim boyunca OOP yaklaşımı, STL kullanım kalıpları, RAII ile kaynak yönetimi ve hata ayıklama teknikleri birlikte ele alınır. Böylece ekipler, farklı platformlarda çalışan uygulamalarda kaliteyi artırır; geliştirme sürecinde performans, güvenlik ve bakım maliyetlerini dengeli biçimde yönetebilir.

Katılımcı Profili

Bu eğitim, C++ ile ürün geliştiren veya C++ ekosisteminde sağlam bir temel oluşturmak isteyen ekipler için uygundur.

  • Yazılımcılar: C++ temellerini güçlendirmek isteyenler
  • Backend Geliştiricileri: Performans odaklı servisler geliştirenler
  • Gömülü Yazılımcılar: Kaynak kısıtlı sistemlerde çalışanlar
  • Oyun Geliştiricileri: Gerçek zamanlı uygulama mantığı kuranlar
  • Teknik Liderler: Kod standartlarını ve kaliteyi yükseltenler

Ön Gereklilikler

Bu eğitime katılmadan önce aşağıdaki konularda temel düzeyde bilgi önerilir:

  • Herhangi bir programlama dilinde temel algoritma ve veri yapıları
  • Değişkenler, koşullar, döngüler ve fonksiyonlar hakkında pratik
  • Komut satırı kullanımı ve temel derleme mantığına aşinalık
  • Git ile temel seviyede versiyon kontrol deneyimi
  • Temel hata ayıklama yaklaşımına giriş düzeyinde bilgi

Süresi ve Tarihi

Süre: 4 gün. Bu süre standart program içindir; ek modüllere ve hedefe göre süre özelleştirilebilir.
Eğitim tarihleri ve saatleri, ekibinizin uygunluğuna göre birlikte planlanır.

Kazanımlar

Eğitim sonunda katılımcılar C++ ile modern, güvenli ve sürdürülebilir yazılım geliştirmek için gerekli teknikleri uygulamalı olarak öğrenir.

  • Modern C++ sözdizimi ve temel dil yapılarını etkin kullanma
  • RAII yaklaşımıyla güvenli kaynak ve bellek yönetimi kurma
  • STL konteynerleri ve algoritmalarıyla verimli çözümler üretme
  • OOP tasarımını doğru soyutlamalarla daha okunur hale getirme
  • Hata ayıklama ve profiling ile performans darboğazlarını bulma
  • Unit test yaklaşımıyla daha güvenilir kod tabanı oluşturma
  • Concurrency temelleriyle paralel çalışma mantığını kavrama
  • Derleme, linkleme ve proje yapısını daha bilinçli yönetme

C++ Eğitimi Konuları

1. C++ Eğitimi - Başlangıç ve Geliştirme Ortamı

  • C++ proje yapısını ve derleme akışını tanımlama
  • IDE ve toolchain kurulumunu doğru ayarlamak için adımlar
  • Derleme hatalarını okumayı öğrenir ve hızlı teşhis uygularsınız
  • Basit bir proje ile çıktı üretimini doğrulama
  • Make ve CMake kavramlarını karşılaştırarak kullanım senaryosu seçme

2. C++ Eğitimi - Dil Temelleri ve İfade Mantığı

  • Temel veri tiplerini ve dönüşümleri güvenle kullanma
  • Kontrol akışını doğru kurmak için koşul ve döngüler
  • İfadelerde öncelik kurallarını öğrenir ve hatayı azaltırsınız
  • Fonksiyon imzalarını düzenleyip okunabilirliği artırma
  • Basit IO akışlarıyla hata kontrolünü doğru kurgulama

3. Fonksiyonlar, Kapsam ve Modüler Tasarım

  • Kapsam kurallarıyla değişken yaşam süresini yönetme
  • Fonksiyon aşırı yükleme ile temiz API tasarlamak için yaklaşım
  • Parametre geçiş yöntemlerini seçer ve performansı dengelersiniz
  • Header ve source ayrımıyla modüler bir yapı kurma
  • İsim alanlarıyla çakışmaları azaltmak için pratik kurallar

4. Bellek Modeli ve İşaretçiler

  • Stack ve heap farkını doğru senaryolarla açıklama
  • Pointer ve reference kullanımını güvenle uygulamak için pratikler
  • Dangling pointer riskini tanır ve güvenli alternatifleri seçersiniz
  • Const doğruluğu ile niyeti ifade eden kod yazma
  • Null kontrol stratejileriyle hata olasılığını azaltma

5. RAII ile Kaynak Yönetimi

  • RAII prensibini günlük kod yazımına entegre etme
  • Kaynak sızıntısını önlemek için yaşam döngüsü yaklaşımı
  • Constructor ve destructor tasarımını öğrenir ve güvenli kullanım sağlarsınız
  • Move semantics mantığını kaynak yönetimiyle ilişkilendirme
  • Örneklerle istisna güvenliği seviyelerini kıyaslama

6. Akıllı İşaretçiler ve Sahiplik Modeli

  • Unique ownership yaklaşımını doğru senaryoda uygulama
  • Shared ownership için referans sayımı mantığını anlamak
  • Weak pointer ile döngüsel referansı önler ve stabil yapı kurarsınız
  • Factory fonksiyonlarıyla daha güvenli nesne üretimi tasarlama
  • Pointer seçiminde performans ve güvenlik dengesi kurma

7. OOP 1: Sınıflar ve Kapsülleme

  • Sınıf tasarımında sorumlulukları doğru ayırma
  • Erişim belirleyicileriyle veri bütünlüğünü korumak için yöntemler
  • Getter setter yaklaşımını kullanır ama gereksiz alanları sınırlarsınız
  • Invariant tanımıyla güvenilir nesne durumu sağlama
  • Basit sınıf örnekleriyle okunabilir API oluşturma

8. OOP 2: Kalıtım ve Çok Biçimlilik

  • Kalıtım ilişkisini doğru modellemek için temel prensipler
  • Sanal fonksiyonlarla dinamik dispatch mantığını kurma
  • Yanlış hiyerarşi risklerini görür ve daha basit tasarımı seçersiniz
  • Override ve final anahtarlarıyla niyetin net ifade edilmesi
  • Base class destructor kuralı ile güvenli yıkım tasarlama

9. OOP 3: Soyutlama ve Arayüz Tasarımı

  • Saf sanal sınıflarla arayüz odaklı tasarım kurma
  • Kompozisyon ile esnek yapı oluşturmak için stratejiler
  • Bağımlılıkları azaltır ve test edilebilir mimari elde edersiniz
  • Polimorfizmi doğru yerde kullanarak karmaşıklığı kontrol etme
  • Basit bir tasarım örneğiyle refactor yaklaşımı uygulama

10. STL 1: Konteynerler ve Veri Yapıları

  • Vector ve string ile temel kullanım kalıplarını oturtma
  • List ve deque seçimini yapmak için avantaj ve maliyet analizi
  • Konteyner iterasyonunu öğrenir ve hataya dayanıklı kullanım sağlarsınız
  • Map ve unordered_map ile anahtar değer yönetimi kurma
  • Set ailesiyle benzersizlik ve sıralama ihtiyaçlarını karşılama

11. STL 2: Algoritmalar, İteratörler ve Lambda

  • STL algoritmalarını problem çözümünde etkin kullanma
  • Iterator kategorileriyle performans ve doğruluk farkını anlamak
  • Lambda ifadeleriyle fonksiyonel stil kazanır ve kodu sadeleştirirsiniz
  • Predicate tasarımıyla filtreleme ve arama senaryoları kurma
  • Custom comparator ile sıralama kurallarını kontrol etme

12. Hata Yönetimi ve İstisna Güvenliği

  • Hata kodu ve exception yaklaşımını doğru senaryoda seçme
  • Strong ve basic exception safety farkını öğrenmek için örnekler
  • Try catch yapılarını doğru kurgular ve kaynak sızıntısını önlersiniz
  • Custom exception tipleriyle anlamlı hata akışı tasarlama
  • Fail fast yaklaşımıyla erken teşhis stratejisi kurma

13. Debugging ve Araçlarla Analiz

  • Debugger ile adım adım izleme alışkanlığı geliştirme
  • Breakpoint ve watch kullanımıyla hızlı teşhis için yöntemler
  • Sanitizer çıktısını yorumlar ve bellek hatalarını erken yakalarsınız
  • Valgrind benzeri araçlarla sızıntı ve erişim sorunlarını bulma
  • Log stratejisiyle üretim hatalarını daha kolay takip etme

14. Performans ve Profiling Temelleri

  • Performans ölçümünü doğru metriklerle başlatma
  • Cache locality etkisini anlamak için basit veri düzenleri
  • Profiling sonuçlarını yorumlar ve darboğazı hedefli şekilde düzeltirsiniz
  • Ölçekli kodda küçük iyileştirmelerle büyük kazanım sağlama
  • Move ve copy maliyetlerini kontrol ederek hız kazanma

15. Test Odaklı Geliştirme ve GoogleTest

  • Unit test mantığını C++ projelerinde konumlandırma
  • Test fixture ile tekrar eden kurulumları yönetmek için yaklaşım
  • Assertion kullanımını öğrenir ve regresyon riskini azaltırsınız
  • Mock yaklaşımıyla bağımlılıkları izole ederek test yazma
  • CI akışına testleri ekleyerek kaliteyi sürdürülebilir kılma

16. Proje Yapısı, Build ve Paketleme

  • CMake hedeflerini düzenli bir yapıda kurgulama
  • Kütüphane üretimi ve linkleme tiplerini doğru seçmek için kriterler
  • Header bağımlılıklarını azaltır ve derleme süresini iyileştirirsiniz
  • Farklı platformlarda derleme için pratik ayarlamalar
  • Derleme bayraklarıyla uyarıları kalite standardına dönüştürme

17. Ek Modül: Modern C++’a Geçiş (C++11/14/17 temel pratikler)

  • Auto ve type deduction ile okunabilirliği artırma
  • Range based for ile dolaşım kodunu sadeleştirmek için yöntem
  • Move semantics pratiğini güçlendirir ve gereksiz kopyaları azaltırsınız
  • Smart pointer kullanımını standart hale getiren modern yaklaşım
  • Uniform initialization ile tutarlı nesne oluşturma alışkanlığı
  • Std optional ve variant ile daha güvenli modelleme kurma

18. Ek Modül: Concurrency (thread, async)

  • Thread yaşam döngüsünü doğru yönetmek için temel kurallar
  • Async ve future ile görev tabanlı paralelliğe giriş yapmak
  • Data race riskini tanır ve senkronizasyon ihtiyacını doğru belirlersiniz
  • Mutex ve lock_guard ile kritik bölgeleri güvenli hale getirme
  • Basit producer consumer senaryosuyla pratik uygulama
  • Performans ölçümüyle paralelliğin gerçek etkisini değerlendirme

C++ Eğitimi ile İlgili
Sıkça Sorulan Sorular ve Cevapları


Eğitimde C++ bellek yönetimi ve güvenli kaynak kullanımı nasıl ele alınıyor?

Bellek modeli, pointer/reference kullanımı ve RAII yaklaşımı uygulamalı örneklerle işlenir. Akıllı işaretçiler ve sahiplik modeli üzerinden sızıntı ve erişim hatalarını azaltan pratikler kazandırılır.

STL konuları sadece teorik mi, yoksa pratik kullanım kalıpları da işleniyor mu?

STL konteynerleri, iteratörler ve algoritmalar gerçek problem senaryolarıyla uygulanır. Hangi konteynerin hangi durumda daha doğru olduğuna dair seçim kriterleri ve performans etkileri de ele alınır.

OOP bölümünde hangi konulara odaklanılıyor ve kaç başlık altında işleniyor?

OOP üç başlık altında ilerler: sınıflar ve kapsülleme, kalıtım ve çok biçimlilik, soyutlama ve arayüz tasarımı. Kompozisyon, bağımlılık azaltma ve test edilebilirlik gibi pratik hedefler üzerinden örnekler yapılır.

Eğitimde debugging, sanitizer ve performans analizi konuları nasıl aktarılıyor?

Debugger ile iz sürme, sanitizer çıktılarının yorumlanması ve profiling temelleri adım adım gösterilir. Katılımcılar, bellek hatalarını erken yakalama ve performans darboğazlarını ölçerek iyileştirme becerisi edinir.

Eğitim içeriğini ihtiyaçlarımıza göre özelleştirebilir misiniz?

Evet. Eğitim öncesinde ihtiyaç analizi yaparak içerik ve örnekleri ekibinize göre uyarlayabiliriz. Modüller eklenebilir, bazı başlıklar derinleştirilebilir veya sadeleştirilebilir.

Eğitim yeri, yöntemi ve sertifikasyon süreci nasıl ilerliyor?

Eğitim online (canlı) veya yerinde gerçekleştirilebilir; tarih ve saatleri ekibinizin uygunluğuna göre planlarız. Program sonunda katılım sertifikası verilir; talep edilirse ölçme-değerlendirme ve raporlama eklenebilir.

 VERİ AKADEMİ