Ana içeriğe geç

Yan yana

CvsC++

C ile C++ arasındaki fark nedir?

Güncellendi 2 dk okuma6 fark

Kısaca

C, 1970'lerin başından kalma küçük, prosedürel bir sistem dilidir; ondan doğan C++ ise sınıflar, şablonlar ve zengin bir kütüphaneyle çok daha büyük bir dildir.

C

C, belleğe doğrudan erişim sağlayan, derlenen ve düşük seviyeli bir programlama dilidir; işletim sistemlerinde, sürücülerde ve gömülü yazılımlarda kullanılır.

C sayfasını oku

C++

C++, C'yi sınıflar ve şablonlarla genişleten; bellek ve performans üzerinde düşük seviyeli kontrolü koruyan, derlenen ve statik tipli bir dildir.

C++ sayfasını oku

C ve C++ karşılaştırması

ÖzellikCC++
ParadigmaProsedürelÇok paradigmalı: prosedürel, nesne yönelimli, generic
Dilin büyüklüğüKüçük ve basitBüyük ve karmaşık
Bellek yönetimimalloc ve free ile elleRAII, yıkıcılar ve akıllı işaretçiler
Standart kütüphaneMinimalZengin: container'lar, algoritmalar, string'ler, thread'ler
Generic kodMakrolar ve void işaretçilerŞablonlar (template)
Tipik kullanımÇekirdekler, gömülü sistemler, sürücülerOyunlar, tarayıcılar, veritabanları, yüksek performanslı uygulamalar

Fark, açıklamalı

C, 1970'lerin başında Bell Labs'te Dennis Ritchie tarafından Unix işletim sistemini yazmak için geliştirildi. Kompakt ve donanıma yakındır: fonksiyonlar, struct'lar, işaretçiler ve malloc ile free kullanılan elle bellek yönetimi. C++ ise Bjarne Stroustrup tarafından 1979'da "C with Classes" (sınıflı C) olarak başlatıldı ve ilk ticari sürümü 1985'te çıktı; C kodunun çoğu küçük değişikliklerle C++ olarak derlenebilir.

C++ bunun üzerine çok şey ekler. Sınıflar ve kalıtım nesne yönelimli tasarımı destekler, şablonlar genel (generic) kodu mümkün kılar; RAII de kaynakları nesne ömürlerine bağlar, böylece yıkıcılar (destructor) ve std::unique_ptr gibi akıllı işaretçiler belleği, dosyaları ve kilitleri otomatik serbest bırakır. Standart kütüphane de C programcılarının elle yazacağı container'ları, algoritmaları, string'leri ve thread'leri sunar.

C, sadeliğin ve öngörülebilirliğin en önemli olduğu işletim sistemi çekirdeklerinin, gömülü yazılımların, aygıt sürücülerinin ve diller arasındaki kararlı arayüzlerin dili olmaya devam ediyor. C++ ise soyutlamalarının hızdan vazgeçmeden büyük kod tabanlarını yönetmeye yardım ettiği oyun motorlarına, tarayıcılara, veritabanlarına, alım satım sistemlerine ve yüksek performanslı uygulamalara hâkimdir.

Sık yapılan bir yanlış, C++'ın yalnızca ekstraları olan C olduğunu ya da modern C++'ın C gibi yazılması gerektiğini düşünmektir. Deyimsel (idiomatic) C++ çıplak new ve delete'ten kaçınır, standart container'ları ve akıllı işaretçileri kullanır ve RAII'ye dayanır; C++'ta C tarzı kod yazmak güvenliğinin çoğundan vazgeçmek demektir. Rust da her iki alanda yeni sistem kodu için bir alternatif hâline geldi.

Hangisini kullanmalısınız?

C şu durumlarda doğru seçim:

  • Donanıma yakın gömülü yazılım, çekirdek ya da sürücü yazıyorsunuz.
  • Minimal bir çalışma ortamına ve çok öngörülebilir bir çıktıya ihtiyacınız var.
  • Başka diller için kararlı bir kütüphane arayüzü yazıyorsunuz.

C++ şu durumlarda doğru seçim:

  • Oyun motoru gibi büyük ve performansa kritik bir uygulama geliştiriyorsunuz.
  • Hızdan vazgeçmeden sınıflar ve şablonlar gibi soyutlamalar istiyorsunuz.
  • RAII ile otomatik kaynak yönetimi istiyorsunuz.

Sık sorulan sorular

C++'tan önce C öğrenmeli miyim?

Gerekli değil. Önce C öğrenmek belleği ve işaretçileri açıkça öğretir, ama modern C++ en iyi baştan RAII ve standart container'lar gibi kendi deyimleriyle öğrenilir.

C++, C'den daha mı hızlı?

Performansları karşılaştırılabilir düzeydedir. İki dilde de iyi yazılmış kod benzer hızda makine koduna derlenir; C++ soyutlamaları da kullanılmadıklarında hiçbir maliyeti olmayacak şekilde tasarlanmıştır.

C ve C++ kodu birlikte kullanılabilir mi?

Evet. C++ C fonksiyonlarını doğrudan çağırabilir; C++ kodu da extern "C" ile fonksiyonlarını dışarı açarak C programlarının ve başka dillerin onları çağırmasını sağlayabilir.

Daha fazla

Ayarlar