BOOST C++ EĞİTİMİ
Boost C++ eğitimi, standart kütüphanenin yetmediği durumda hangi Boost bileşeninin neyi çözdüğünü hızlıca öğretir. Boost.Asio ile asenkron I/O, Boost.Spirit ile parser üretimi, Boost.Filesystem ile cross-platform dosya işlemleri günlük geliştirici problemleri üzerinden işlenir. Header-only kütüphanelerin build maliyetiyle birlikte değerlendirilmesi önemli bir başlıktır.
Eğitim sonunda katılımcı, STL'e geçmiş Boost bileşenlerini (shared_ptr, array, regex) tarihçesiyle ayırt eder ve hangi senaryoda hangi sürümün doğru olduğunu seçer. Boost.Test ile CI hattına entegrasyon, Boost.Python ile C++/Python köprüsü gibi gerçek senaryolar uygulamalı olarak pekiştirilir.
Katılımcı Profili
Bu program, C++ standart kütüphanesinin ötesine geçmesi gereken rollere yöneliktir:
- C++ Geliştiriciler: STL'in yetmediği senaryolarda Boost'a uzanmak isteyen mühendisler
- Sistem Programcıları: Performans-kritik backend ve gömülü sistem yazan roller
- Network Geliştiriciler: Boost.Asio ile asenkron I/O kuran ekipler
- Kütüphane Geliştiriciler: Cross-platform C++ kütüphane yazan mühendisler
- Araştırma Mühendisleri: Boost.Spirit ve Graph gibi advanced bileşen kullananlar
Ön Gereklilikler
Bu eğitime katılım için aşağıdaki ön bilgiler önerilir:
- C++ temellerini ve STL kullanımını bilmek
- Pointer, referans ve memory model kavramlarına aşinalık
- Template ve generic programming'e giriş düzeyi bilgi
- CMake veya benzeri bir build sistemiyle deneyim
- Komut satırı ve derleme süreci konusunda temel rahatlık
Süresi ve Tarihi
Süre: 2 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
Bu eğitimin sonunda katılımcı, Boost C++'ı standart kütüphanenin tamamlayıcısı olarak doğru senaryoda kullanır:
- Boost'un STL'e geçen parçalarını (shared_ptr, array, regex) tarihçesiyle ayırt eder
- Boost.Asio ile asenkron ağ ve I/O kodunu reactor/proactor modelinde kurar
- Boost.Filesystem ile cross-platform dosya işlemlerini taşır
- Boost.Spirit ile EBNF tabanlı parser tasarlayabilir
- Boost.Test ile birim testlerini CI hattına entegre eder
- Boost.Python ile C++ ve Python arasında köprü kurar
- Header-only kütüphaneleri build süresine etkisini bilerek tercih eder
Boost C++ Eğitimi Konuları
1. Boost Ekosistemi - C++'a Hediye Edilen Kütüphane Koleksiyonu
- Boost'un C++ standardına etkisi (smart_ptr, regex, filesystem yolu)
- Kütüphane kategorileri: utility, string, container, system
- Header-only ve compiled kütüphane farkı
- Boost lisansı ve ticari kullanım serbestliği
- Resmi kaynak: Boost dokümantasyonu
2. Kurulum ve Build Sistemi Entegrasyonu
- vcpkg, Conan, apt, brew ile kurulum
- b2 build sistemi ile derleme
- CMake find_package(Boost) entegrasyonu
- Boost ve std:: muadilleri arasında seçim
- Versiyon uyumluluğu ve breaking change yönetimi
3. Smart Pointer Mirası
- boost::shared_ptr ve std::shared_ptr karşılaştırması
- unique_ptr ile sahiplik yönetimi
- weak_ptr ile döngüsel referans önleme
- intrusive_ptr ve özel kullanım senaryoları
- RAII pattern ve kaynak yaşam döngüsü
4. Filesystem - Yol ve Dizin Yönetimi
- path sınıfı ve platform bağımsız yol
- Dosya ve klasör oluşturma, silme, taşıma
- directory_iterator ve recursive_directory_iterator
- File status, permissions ve metadata
- std::filesystem'e geçiş notları
5. Asio - Asenkron Ağ ve Coroutine
- io_context ve event loop yapısı
- TCP/UDP socket programlama
- Callback, future, coroutine yaklaşımları
- async_read, async_write ve completion handler
- Timer, deadline, strand kavramları
- Networking TS ve gelecek standart yolu
6. Thread Kütüphanesi - Eşzamanlılık Araçları
- Thread oluşturma ve yaşam döngüsü
- Mutex, lock_guard, unique_lock kullanımı
- Condition variable ile thread senkronizasyonu
- shared_mutex ve reader-writer pattern
- Thread pool ve work-stealing
7. Regex Motoru
- Regex söz dizimi ve pattern oluşturma
- regex_match, regex_search, regex_replace
- Capture group ve back reference
- Performans: compiled regex ve caching
8. Program_Options - CLI Tasarımı
- options_description ile parametre tanımı
- Positional argument ve named option
- Konfigürasyon dosyası okuma (.ini benzeri)
- Validator ve custom tip dönüşümleri
- Help mesajı ve usage output
9. Serialization - Veri Akışı Yazımı
- Text, binary, XML archive formatları
- serialize() member ve free function
- Pointer ve polymorphic tip serileştirme
- Versiyonlama ve backward compatibility
- STL container desteği
10. Boost.Test ile Birim Test
- BOOST_AUTO_TEST_CASE ile test tanımı
- BOOST_CHECK ve BOOST_REQUIRE makroları
- Test fixture ve test suite organizasyonu
- Data-driven test ve parametrize
- CI entegrasyonu ve XML rapor
11. Optional, Variant, Any - Tip Güvenli Sarmalayıcılar
- optional ile değer yokluğu modellemesi
- variant ile type-safe union
- any ile heterojen container
- visit() pattern ve compile-time visitor
- std:: muadilleriyle karşılaştırma
12. Beast - Modern HTTP ve WebSocket
- HTTP message yapısı: request, response, fields
- Senkron ve asenkron HTTP client
- HTTP server geliştirme örneği
- WebSocket handshake ve bidirectional iletişim
- TLS/SSL entegrasyonu (Boost.Asio.SSL)
BOOST C++ EĞİTİMİ ile İlgili
Sıkça Sorulan Sorular ve Cevapları
Boost ile STL arasındaki örtüşmeler nasıl yönetilir?
Boost.SharedPtr, Boost.Array, Boost.Regex gibi bileşenler zamanla STL'e (C++11/17) geçti. Modern projede STL versiyonu tercih edilmelidir; Boost versiyonu legacy uyum veya daha gelişmiş özellik (örn. boost::regex'in PCRE desteği) için kalır. Eğitimde hangi sürümün ne zaman doğru olduğu sürüm tablolarıyla gösterilir.
Boost.Asio reactor ve proactor pattern arasındaki fark nedir?
Reactor I/O hazır olduğunda callback çağırır (Linux epoll, Unix select); proactor I/O işlemi tamamlandığında callback çağırır (Windows IOCP). Asio her ikisini soyutlar — kullanıcı io_context ile çalışır, alt katmanı bilmek zorunda kalmaz. Performans-kritik senaryolarda platform farkı önemli olabilir.
Header-only Boost kütüphanesi build süresini ne kadar etkiler?
Header-only kütüphaneler her translation unit'te yeniden compile olur — Boost.Spirit, Boost.MPL gibi heavy template kütüphaneleri build süresini katlayabilir. Precompiled header (PCH) ve modules (C++20) bu maliyeti azaltır. Eğitimde build profiling ile somut ölçüm yapılır.
Boost.Spirit ile parser yazmak ne zaman doğrudur?
DSL veya küçük config dili tasarlıyorsanız Boost.Spirit (X3) embedded EBNF-tarzı parser yazımı sunar; flex/bison'a göre tek dilde kalır. Ancak öğrenme eğrisi dik ve compile süresi uzar. Büyük gramerler için ANTLR veya manuel parser daha pragmatik olabilir.
Boost.Python ile pybind11 arasında nasıl seçim yapılır?
Boost.Python eski, kapsamlı ama Boost bağımlılığını projeye sokar. pybind11 modern, header-only ve daha sade söz dizimi sunar; yeni projelerin tercihi pybind11 yönündedir. Eğitimde her ikisinin de bind örnekleri karşılaştırmalı olarak çalışılır.
Boost sürümleri arasında geçişte nelere dikkat edilir?
Boost yılda 3 sürüm yayınlar ve deprecation süreci hızlı işleyebilir. Sürüm yükseltmede release notes okuma; deprecated API'leri tarama; build sistemde versioned linking (-lboost_system-mt-1_xx) dikkati gerekir. CI'a Boost güncellemesi öncesi build test'i koymak şart.



