bu başlık foşik balkon insanının sınırlamaları sebebi ile böyle açılmıştır. *
c++, programlama dillerinin “ben seni adam ederim ama önce biraz süründürürüm” diyen eski usul hocasıdır.
python gibi omzuna kolunu atıp “gel kardeşim iki satırda hallederiz” demez. javascript gibi her şeyi affedip sonra production’da intikam almaz. java gibi seni kurumsal toplantıya zorla sokmaz. c++ gelir, masaya oturur, belleği gösterir ve “burası oyuncak değil” der.
ilk bakışta insanı biraz korkutur.
pointer vardır. reference vardır. header dosyası vardır. derleyici hatası vardır. template vardır. linker hatası vardır ki zaten kendisi ayrı bir psikolojik deneydir. kodu yazarsın, derleyici sana sanki mısır hiyeroglifi çözüyormuşsun gibi bir hata mesajı verir. sen de ekrana bakıp “ben sadece bir vektör oluşturmuştum” dersin.
ama c++’ın olayı da tam burada başlar.
bu dil sana bilgisayarın gerçekten ne yaptığını sezdirir. bellek nerede, nesne ne zaman oluştu, ne zaman yok oldu, kopya mı alındı, referans mı geçti, stack mi heap mi, constructor ne zaman çağrıldı, destructor niye bir anda sahneye çıktı… bunların hepsini yüzüne vurur.
başta eziyet gibi gelir. sonra anlarsın ki adam sana bedava disiplin vermiş.
c++ ile yazılan şeylerin bir kısmı zaten başka dillerin hayal kurduğu yerlerde çalışır. oyun motorları, gerçek zamanlı sistemler, gömülü yazılımlar, trading sistemleri, tarayıcı motorları, veritabanları, işletim sistemi bileşenleri, grafik motorları… performansın gerçekten para ettiği yerlerde c++ hâlâ masadadır.
çünkü c++ sana kontrol verir.
ama verdiği kontrolün yanında sorumluluğu da bırakır. “al kardeşim hız” der, sonra da ekler: “ama ayağına sıkarsan ben karışmam.”
yanlış pointer kullanırsan ağlatır.
memory leak yaparsan sessizce bekler.
undefined behavior’a girersen artık fizik kuralları değil, derleyicinin ruh hâli geçerlidir.
bir yerde `delete` unutursun, başka yerde evren kırılır.
modern c++ ile işler biraz daha insani oldu tabii.
`unique_ptr`, `shared_ptr`, `vector`, `optional`, `auto`, `move semantics`, `lambda` derken dil artık “her şeyi elle taşı” döneminden çıktı. ama yine de c++’ı hafife almak olmaz. çünkü modernleşmiş olsa da içinde hâlâ eski dünyanın karanlık koridorları duruyor.
c++ biraz sanayi ustası gibidir.
işi bilen adamın elinde şaheser çıkar.
bilmeyenin elinde hem proje yanar hem ekip.
bu yüzden c++ öğrenmek sadece syntax öğrenmek değildir. belleği, işlemciyi, derleyiciyi, veri yapılarını, performansı, ömür yönetimini ve bazen de sabrı öğrenmektir.
her projeye gerekir mi? hayır.
web sitesi yapacaksan c++ ile kahramanlık aramana gerek yok. basit panel yazacaksan c++ seçmek, çay demlemek için nükleer reaktör kurmaya benzer. ama yüksek performans, düşük gecikme, sistem programlama, oyun motoru, simülasyon, gömülü sistem, gerçek zamanlı hesaplama gibi dertlerin varsa c++ hâlâ ciddi bir silahtır.
özetle c++ şudur:
kolay değildir.
affedici değildir.
modası geçmiş değildir.
herkese göre değildir.
ama hakkını verene de hâlâ çok güçlü kapılar açar.
c++, programlama dünyasının “ben yaşlandım ama hâlâ bileğini büken çıkmadı” diyen emektar canavarıdır.
yaklaşırsan saygıyla yaklaşacaksın.
yoksa bir segmentation fault ile hayat dersi verir.
bu kategoride başlık yok.
yükleniyor…
yükleniyor…