Stroustrup'tan Öğrenilen: C++ Tasarım Kararları Neden Böyle?
C++ neden bu kadar karmaşık? Neden her şey için birden fazla yol var? Bjarne Stroustrup, dilin yaratıcısı olarak bu soruların cevabını tasarım felsefesinde gizli tutmuş: performans, geriye uyumluluk ve programcının özgürlüğü.
Stroustrup'un temel ilkesi şu: "Kullanmadığın şey için ödeme yapma." C++ hiçbir gizli maliyet koymaz. Eğer sanal fonksiyon istemezsen, virtual anahtar kelimesi yazmazsın ve hiçbir overhead olmaz. Garbage collection istemezsen, çalışmaz. Bu, Java ya da Python gibi dillerin tersine bir yaklaşım. Oradaki tasarım: "Güvenlik ve kolaylık her şeyden önce gelir." C++'nın tasarımı ise: "Makine ne yapar, sen de onu kontrol et."
İkinci büyük karar: geriye uyumluluk. C++ hala C koduyla çalışır. Neden? Çünkü Stroustrup, C'nin gücünün sistem programlamada yattığını biliyordu. Eğer C kodunu kırsaydı, milyonlarca satır legacy kod tehlike altına girerdi. Bu yüzden int *p = malloc(sizeof(int)); hala çalışır, ama aynı zamanda auto p = std::make_unique<int>(); da yazabilirsin.
Üçüncü ilke: seçim hakkı. Bellek yönetimi için ham pointerlar, unique_ptr, shared_ptr, garbage collection (bazı derleyicilerde) seçebilirsin. Sınıflar için inheritance, templates ya da composition kullanabilirsin. Bu esneklik, başlangıçta kafa karıştırıcı görünse de, büyük projelerde çok değerlidir.
Pratik örnek: bir sayı dizisini işlemek.
1#include <iostream>2#include <vector>3using namespace std;45int main() {6vector<int> sayilar = {1, 2, 3, 4, 5};78// Eski C stili (hala çalışır, ama tavsiye edilmez)9for (int i = 0; i < 5; i++) {10cout << sayilar[i] << " ";11}12cout << endl;1314// Modern C++ stili (güvenli, temiz)15for (int sayi: sayilar) {16cout << sayi << " ";17}18cout << endl;1920return 0;21}Çıktı:
11 2 3 4 521 2 3 4 5İkisi de aynı sonuç verir, ama ikinci yol daha güvenli. Stroustrup'un tasarımı, sana her iki seçeneği de bırakır. Hız gerekiyorsa eski yolu, güvenlik gerekiyorsa yeni yolu seç.
C++'ın karmaşıklığı, aslında esnekliğin bedeli. Stroustrup, "sana güç vereceğim, ama sorumluluğu da senin" demiş. Bu felsefe, sistem programlamacıları, oyun geliştiricileri ve yüksek performans gereken alanları C++'a bağlı tutuyor.
0 yorum