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ıl | Olay |
|---|---|
| 1972 | C dili yaratıldı (Dennis Ritchie) |
| 1979 | "C with Classes" ortaya çıktı (Stroustrup) |
| 1983 | C++ adı resmi olarak kullanıldı |
| 1998 | C++98 — İlk ISO standardı |
| 2011 | C++11 — Modern C++ devrimi |
| 2014 | C++14 — İyileştirmeler |
| 2017 | C++17 — Structured bindings, std::optional |
| 2020 | C++20 — Concepts, ranges, coroutines |
| 2023 | C++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.
| Özellik | C | C++ | Java | Python |
|---|---|---|---|---|
| Paradigma | Prosedürel | Çoklu (OOP, prosedürel, fonksiyonel) | OOP | Çoklu |
| Hız | ⚡ Çok hızlı | ⚡ Çok hızlı | 🔵 Hızlı | 🐢 Yavaş |
| Bellek yönetimi | Manuel | Manuel + akıllı işaretçiler | Otomatik (GC) | Otomatik (GC) |
| Öğrenme zorluğu | Orta | Zor | Orta | Kolay |
| Derleme | Derlenen | Derlenen | Derlenen + JVM | Yorumlanan |
| Platform | Platforma bağlı | Platforma bağlı | JVM ile taşınabilir | Taşınabilir |
| Tipik kullanım | OS, gömülü | Oyun, OS, finans | Kurumsal, Android | Veri bilimi, web, scripting |
| İlk sürüm | 1972 | 1983 | 1995 | 1991 |
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:
| Dil | Sü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:
autoanahtar kelimesi — tip çıkarımı (type inference)Lambda ifadeleri — anonim fonksiyonlar
nullptr— güvenli null pointerAkıllı işaretçiler —
unique_ptr,shared_ptrRange-based for döngüsü
Move semantics — performans artışı
C++17 — Olgunlaşma
std::optional,std::variant,std::anyStructured bindings —
auto [x, y] = pair;if constexpr— derleme zamanı kararstd::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/deleteile 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.
AI Asistan
Sorularını yanıtlamaya hazır