← Kursa Dön
📄 Text · 15 min

C++ Nedir? Tarihçesi ve Felsefesi

Programlama dünyasına adım atıyorsun ve karşına onlarca dil çıkıyor: Python, Java, JavaScript, Rust... Peki neden C++? Bu derste C++'ın nereden geldiğini, neden bu kadar önemli olduğunu ve 2025'te hâlâ neden öğrenmeye değer olduğunu konuşacağız.

Hazırsan başlayalım.


Bir Dilin Doğuşu: C'den C++'a

C Dili — Her Şeyin Başlangıcı

1972 yılında Dennis Ritchie, Bell Labs'ta C dilini yarattı. Amaç basitti: UNIX işletim sistemini yazmak için güçlü ama donanıma yakın bir dil gerekiyordu. C bu işi mükemmel yaptı. Hızlıydı, taşınabilirdi (portable) ve donanıma doğrudan erişim sağlıyordu.

Ama C'nin bir eksikliği vardı: büyük projelerde kodun yönetimi zorlaşıyordu. Binlerce satır fonksiyon, birbiriyle bağlantısız veri yapıları... Proje büyüdükçe kaos da büyüyordu.

Bjarne Stroustrup ve "C with Classes"

1979'da Danimarkalı bilgisayar bilimci Bjarne Stroustrup, doktorasını yaparken Simula adlı bir dille tanıştı. Simula'da "sınıf" (class) kavramı vardı — verileri ve fonksiyonları bir arada tutabiliyordun. Stroustrup bu fikre bayıldı ama Simula çok yavaştı.

Stroustrup'un kafasında bir ampul yandı: *"C'nin hızını Simula'nın organizasyonuyla birleştirsem?"*

İşte böylece "C with Classes" doğdu. 1983'te bu dile resmi adı verildi: C++. Buradaki ++ C dilindeki artırma operatöründen geliyor — yani "C'nin bir adım ötesi" demek.

Zaman Çizelgesi

YılOlay
1972C dili yaratıldı (Dennis Ritchie)
1979"C with Classes" ortaya çıktı (Stroustrup)
1983C++ adı resmi olarak kullanıldı
1998C++98 — İlk ISO standardı
2011C++11 — Modern C++ devrimi
2014C++14 — İyileştirmeler
2017C++17 — Structured bindings, std::optional
2020C++20 — Concepts, ranges, coroutines
2023C++23 — En güncel standart

C++11 bir milat gibidir. Ondan önceki C++ ile sonraki C++ neredeyse farklı dillerdir. Bu kursta biz modern C++ (C++17/20) öğreneceğiz.


C++'ın Felsefesi

Stroustrup'un C++ için birkaç temel ilkesi var. Bunları anlamak, dilin neden böyle tasarlandığını kavramana yardımcı olacak.

"Kullanmadığın şey için ödeme yapma"

Bu C++'ın altın kuralıdır. Eğer bir özelliği kullanmıyorsan, o özellik programının hızını düşürmez. Python'da çöp toplayıcı (garbage collector) her zaman arka planda çalışır — kullansın ya da kullanmasın. C++'ta böyle bir zorunluluk yok.

"Donanıma yakın, ama soyutlama gücüyle"

C++ hem düşük seviyeli (low-level) işler yapabilir — doğrudan bellek adresleriyle oynayabilirsin — hem de yüksek seviyeli (high-level) soyutlamalar sunar — sınıflar, şablonlar (templates), akıllı işaretçiler (smart pointers).

"Programcıya güven"

C++ seni korumaz, sana güvenir. Belleği yanlış kullanırsan program çöker. Bu bir dezavantaj gibi görünebilir ama aslında tam kontrol demektir. Yarış arabası sürmek gibi düşün: güvenlik bariyeri yok ama istediğin hızda gidebilirsin.

🏎️ Analoji: C++ bir Formula 1 aracı gibidir. Sürmesi zordur, öğrenmesi zaman alır ama ustalaştığında rakipsiz hıza ulaşırsın. Python ise otomatik vitesli konforlu bir sedan — kullanması kolay ama pist yarışında şansın yok.


C++ Nerelerde Kullanılır?

C++ sadece akademik bir dil değil. Günlük hayatında dokunduğun neredeyse her teknolojinin arkasında C++ var.

🎮 Oyun Geliştirme

Unreal Engine tamamen C++ ile yazılmıştır. Fortnite, PUBG, GTA V gibi AAA oyunların motorları C++. Neden? Çünkü oyunlar saniyede 60 kare (frame) üretmek zorunda ve her milisaniye önemli.

💻 İşletim Sistemleri

Windows, Linux ve macOS'un çekirdeğinde C ve C++ var. İşletim sistemi donanımla doğrudan konuşmalı — bu iş için yorumlanan (interpreted) bir dil kullanamazsın.

🤖 Gömülü Sistemler (Embedded Systems)

Arabanın fren kontrol ünitesi, kalp pili, Mars gezgini (rover)... Hepsinde C veya C++ çalışıyor. Bu cihazlarda bellek sınırlı, işlemci gücü kısıtlı. Her byte önemli.

💰 Finans ve Yüksek Frekanslı Ticaret (HFT)

Wall Street'te mikrosaniyeler milyonlarca dolar eder. Yüksek frekanslı ticaret sistemleri C++ ile yazılır çünkü en hızlı seçenek budur.

🌐 Tarayıcılar ve Veritabanları

Google Chrome (Chromium), Mozilla Firefox, MySQL, MongoDB — hepsi C++. Milyonlarca kullanıcıya aynı anda hizmet veren yazılımlar performans ister.

🧠 Yapay Zeka ve Makine Öğrenimi

TensorFlow ve PyTorch'un Python arayüzü var ama arka plandaki ağır hesaplamalar C++ ile yapılıyor. Python sadece güzel bir ambalaj.


Dilleri Karşılaştıralım

Aşağıdaki tablo C++'ı diğer popüler dillerle kıyaslıyor. Hiçbir dil "en iyi" değildir — her birinin güçlü olduğu alan farklıdır.

ÖzellikCC++JavaPython
ParadigmaProsedürelÇoklu (OOP, prosedürel, fonksiyonel)OOPÇoklu
Hız⚡ Çok hızlı⚡ Çok hızlı🔵 Hızlı🐢 Yavaş
Bellek yönetimiManuelManuel + akıllı işaretçilerOtomatik (GC)Otomatik (GC)
Öğrenme zorluğuOrtaZorOrtaKolay
DerlemeDerlenenDerlenenDerlenen + JVMYorumlanan
PlatformPlatforma bağlıPlatforma bağlıJVM ile taşınabilirTaşınabilir
Tipik kullanımOS, gömülüOyun, OS, finansKurumsal, AndroidVeri bilimi, web, scripting
İlk sürüm1972198319951991

Hız Karşılaştırması — Somut Örnek

Aynı algoritmayı (1'den 100 milyona kadar toplama) farklı dillerde çalıştırdığında yaklaşık sonuçlar:

DilSüre
C++~0.1 saniye
Java~0.3 saniye
Python~8 saniye

Bu fark küçük programlarda önemli değil ama milyonlarca işlem yapan sistemlerde hayati.

// C++ ile 1'den 100 milyona kadar toplama
#include <iostream>

int main() {
    long long toplam = 0;
    for (int i = 1; i <= 100'000'000; ++i) {
        toplam += i;
    }
    std::cout << "Toplam: " << toplam << std::endl;
    return 0;
}

Dikkat: Koddaki 100'000'000 yazımı C++14 ile gelen digit separator özelliği. Sayıları okumayı kolaylaştırır ama değeri değiştirmez.


C++'ın Güçlü ve Zayıf Yanları

✅ Güçlü Yanları

  • Performans: Derlenmiş (compiled) dil olduğu için makine koduna çok yakın çalışır.

  • Kontrol: Bellek, donanım, sistem kaynakları üzerinde tam kontrol.

  • Taşınabilirlik: Kodu bir kez yazıp farklı platformlarda derleyebilirsin.

  • Devasa ekosistem: 40+ yıllık kütüphane birikimi, dev topluluk.

  • Çok paradigmalı: Prosedürel, nesne yönelimli ve fonksiyonel programlamayı destekler.

❌ Zayıf Yanları

  • Karmaşıklık: Dil büyük ve öğrenmesi zaman alır.

  • Bellek hataları: Yanlış kullanım segmentation fault, bellek sızıntısı (memory leak) gibi hatalara yol açabilir.

  • Derleme süresi: Büyük projelerde derleme dakikalar alabilir.

  • Hata mesajları: Template hataları bazen sayfalarca uzunlukta olabilir.

💡 İpucu: C++'ın zor olması seni korkutmasın. Modern C++ (C++17/20) eski versiyonlara göre çok daha güvenli ve kullanıcı dostu. Akıllı işaretçiler (smart pointers) gibi araçlar bellek hatalarını büyük ölçüde ortadan kaldırıyor.


Neden 2025'te Hâlâ C++ Öğrenmeli?

"Python varken neden C++ öğreneyim?" diye düşünebilirsin. Haklı bir soru. İşte cevapları:

1. Temeli Anlamak

C++ öğrendiğinde bilgisayarın nasıl çalıştığını anlarsın: bellek nasıl yönetilir, CPU nasıl talimat işler, veri bellekte nasıl tutulur. Bu bilgi seni her dilde daha iyi bir programcı yapar.

2. İş Piyasası

C++ geliştiricileri en yüksek maaş alan yazılımcılar arasındadır. Özellikle oyun, finans ve gömülü sistem sektörlerinde C++ bilmek büyük avantaj.

3. Performans Kritik Uygulamalar

Yapay zeka, otonom araçlar, robotik, gerçek zamanlı (real-time) sistemler... Bu alanlar büyüyor ve hepsinde C++ kullanılıyor.

4. Diğer Dilleri Öğrenmek Kolaylaşır

C++ öğrendikten sonra Java, C#, Rust gibi dillere geçmek çok kolay olur. Ama tersi zor — Python'dan C++'a geçiş acı verici olabilir.

5. C++ Gelişmeye Devam Ediyor

C++ ölü bir dil değil. Her 3 yılda yeni standart çıkıyor. C++23 zaten burada, C++26 yolda. Topluluk aktif, dil modernleşiyor.

// Modern C++20 ile basit bir örnek
#include <iostream>
#include <vector>
#include <algorithm>
#include <ranges>

int main() {
    std::vector<int> sayilar = {5, 3, 8, 1, 9, 2, 7};

    // Ranges ile filtreleme ve dönüştürme
    auto sonuc = sayilar
        | std::views::filter([](int n) { return n > 3; })
        | std::views::transform([](int n) { return n * 2; });

    for (int s : sonuc) {
        std::cout << s << " ";  // 10 16 18 14
    }
    std::cout << std::endl;

    return 0;
}

Bu kod C++20'nin ranges özelliğini kullanıyor. Evet, bu C++ — Python kadar okunabilir olabiliyor!


C++ Standartları ve "Modern C++" Kavramı

C++ sürekli evrim geçiren bir dil. ISO tarafından standartları belirleniyor. İşte önemli dönüm noktaları:

C++98/03 — Klasik C++

İlk standart. STL (Standard Template Library) burada geldi. Güçlü ama kullanımı zahmetliydi.

C++11 — Modern C++ Devrimi

Bu standart her şeyi değiştirdi:

  • auto anahtar kelimesi — tip çıkarımı (type inference)

  • Lambda ifadeleri — anonim fonksiyonlar

  • nullptr — güvenli null pointer

  • Akıllı işaretçiler — unique_ptr, shared_ptr

  • Range-based for döngüsü

  • Move semantics — performans artışı

C++17 — Olgunlaşma

  • std::optional, std::variant, std::any

  • Structured bindings — auto [x, y] = pair;

  • if constexpr — derleme zamanı karar

  • std::filesystem — dosya sistemi kütüphanesi

C++20 — Büyük Adım

  • Concepts — şablon kısıtlamaları

  • Ranges — veri işleme zincirleri

  • Coroutines — eşzamanlı programlama

  • Modules — header dosyalarına alternatif

  • std::format — modern string formatlama

// C++98 tarzı vs Modern C++ karşılaştırması

// Eski yol (C++98)
std::vector<int> v;
for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
    std::cout << *it << std::endl;
}

// Modern yol (C++11 ve sonrası)
std::vector<int> v = {1, 2, 3, 4, 5};
for (auto sayi : v) {
    std::cout << sayi << "\n";
}

Aradaki farkı gör. Modern C++ okunabilirlikte devrim yapmış.

⚠️ Dikkat: İnternette bulacağın birçok C++ kaynağı eski standartlarda yazılmış olabilir. new/delete ile bellek yönetimi, raw pointer kullanımı gibi eski kalıplar görürsen dikkatli ol. Bu kursta modern yöntemleri öğreneceğiz.


İlk Adım: Geliştirme Ortamını Hazırla

C++ yazmaya başlamak için bir derleyiciye (compiler) ihtiyacın var. İşte seçenekler:

Derleyiciler

  • g++ (GCC): Linux'ta varsayılan, en yaygın. Windows'ta MinGW ile kullanılır.

  • clang++: Apple'ın tercih ettiği derleyici. Hata mesajları daha okunabilir.

  • MSVC: Microsoft Visual Studio ile gelir. Windows'ta popüler.

IDE ve Editörler

  • Visual Studio Code + C/C++ Extension — Hafif, ücretsiz, çok popüler

  • CLion — JetBrains'in C++ IDE'si, güçlü ama ücretli

  • Visual Studio — Windows'ta tam donanımlı IDE

Online Derleyiciler (Başlangıç İçin)

  • [Compiler Explorer (godbolt.org)](https://godbolt.org) — Assembly çıktısını da gösterir

  • [cpp.sh](https://cpp.sh) — Basit ve hızlı

  • [replit.com](https://replit.com) — Tam geliştirme ortamı

Kurulum detaylarını bir sonraki derste göreceğiz. Şimdilik kavramları anlamak önemli.


Özet

  • C++, Bjarne Stroustrup tarafından 1979'da C dilinin üzerine nesne yönelimli özellikler eklenerek oluşturuldu.

  • Performans kritik alanlarda (oyun, işletim sistemi, finans, gömülü sistemler) vazgeçilmez bir dil.

  • "Kullanmadığın için ödeme yapma" felsefesiyle tasarlanmış — minimum overhead, maksimum kontrol.

  • Modern C++ (C++11 ve sonrası) eski C++'a göre çok daha okunabilir, güvenli ve kullanıcı dostu.

  • C ve Python gibi dillerle karşılaştırıldığında hız avantajı çok belirgin — büyük ölçekli projelerde bu fark kritik.

  • 2025'te C++ öğrenmek, bilgisayarın temellerini anlamak ve yüksek maaşlı kariyer fırsatlarına kapı açmak demek.