HomeYazılım

C++ Nedir ve Modern C++ Dili

Yazılım

my-portfolio

İstiklal Şairi Mehmet Akif Ersoy
Tamamen Yerli Üretim Olan 10 Milli Silahımız
Sarıkamış şehitlerimize saygı ve rahmetle

Merhaba, C++ nedir, kullanım alanları nerelerdir ve bizim bu eğitim serisinde nasıl ilerleyeceğimiz hakkında bilgiler bulabileceğiz. Sizlerde takipte kalarak Temel Seviye C++ ‘dan başlayarak, İleri Seviye Modern C++ kullanımında ilerleyip bu alanda kendimizi geliştirebiliriz…

C++ Nedir

Çoğunlukla sistem kaynaklarına yüksek performansla erişim gerektiren, işlem hızı gereksinimlerinin yüksek olduğu, hafıza yönetiminin elle yapılabildiği düşük seviyeli ve birden fazla programlama yaklaşımına destek veren bir dil olarak nitelendirilebilir. Başlangıç olarak C dilinin üzerine nesne yönelimli programlama yaklaşımının uygulanması fikri ile tasarlanılmaya başlayan C++’ya zaman içerisinde exception, template metaprogramming, smart pointer, asenkron ve paralel işlem desteği gibi eklentilerle oldukça çok geniş ve derin bir detay seviyesine erişmiştir. Temelinden ötürü hemen hemen her C programı, C++ derleyicisi aracılığıyla da derlenebilmektedir.

Derlenen programlar, direkt hedef sistemin işlemcisi tarafından işlenebilen yönergeler barındırdığı ve manuel hafıza yönetiminden ötürü kullanımı oldukça zor, hata yapma riski doğru programlama disiplinleri uygulandığı durumlarda dahi yüksek bir dildir. Fakat bunlarla beraber, çalışma zamanı performansının yüksek kesinlikte öngörülebilmesi sayesinde interaktif ve yüksek görsel içeriğe sahip uygulamalarda veya çalışma performansının kestirilebilir davranış sergilemesi gereken senaryolarda kullanımı için oldukça idealdir.

Saydığımız özellikler ve çok daha fazlası zaman içerisinde dil standardına eklendiği için, eğitimlerimizde çoğunlukla C++14 ve C++17 standartlarına uyan yaklaşımlarla örnekler vermeye gayret edeceğiz. Dilin en güncel sürümü olan C++20’ya sade bir lisanla nadiren değinmeyi hedefliyoruz, zira çoğunlukla kullanılan derleyiciler tarafından henüz yeterince desteklenmemektedir.

Kullanım Alanları

Yüksek performans gereksinimi olan uygulamalarda, sistem kaynaklarının diğer programlama dillerine nispeten daha açık bir yöntemle yönetilmesi gereken senaryolarda çoğunlukla kullanım gören C++, ekseriyetle bilgisayar destekli tasarım ve mühendislik uygulamaları, endüstriyel, medikal ve benzeri gömülü sistemlerde kullanılmaktadır. Bu programlama dilini kullanarak tasarlanmış olan uygulamalara örnek olarak:

  • Bilgisayar oyunlarının büyük bir kısmı
  • Grafik motorları(Unreal Engine, CryEngine, Unity)
  • Solidworks, Catia, Ansys, Matlab/Simulink gibi mühendislik uygulamaları
  • Windows işletim sistemi(Kernel ve bazı düşük seviye kısımlar hariç)
  • İşletim sistemi kütüphaneleri
  • Donanım sürücülerinin bir kısmı
  • Tensorflow (Backend)
  • OpenCV
  • Veritabanı yönetim sistemleri(MySQL, MS-SQL)

Her ne kadar yukarıda tanımladığımız uygulamalar C++ kullanıyor olsa da, kimi kısımlarında farklı programlama dilleri de kullanılmaktadır. Mesela, işletim sistemi çekirdeklerinin en kritik kısımları assembly ve C ile birlikte tasarlanırken, daha dış seviyelerde ise zaman zaman C++ kullanılmaktadır. Benzer şekilde, veritabanı yönetim sistemlerinin bazı kısımları C ile yazılırken, diğer kısımlarında C++’dan da yararlanılmaktadır.

Gömülü sistemlerde C++ kullanım oranı yıllar geçtikçe bilhassa daha güçlü sistemlerin tasarlanmasıyla yükselse de, düşük güç tüketimli sistemlerde kullanım oranı C’ye nispeten oldukça düşüktür. Bu durumun önündeki en büyük engel derleyici desteğinin zayıflığı ve derleme sonrası oluşan programda istenilmeyen kodların oluşması denilebilir. Bu duruma örnek olarak geçici nesne içeren fonksiyon bloklarında oluşturulan construct/destruct çağrıları ve exception mekanizmasının kod yapısını muğlak bir vaziyete getirmesi verilebilir.

Derleyiciler ve Hata Ayıklayıcılar

C++ dili, günümüzde ISO tarafından yönetilen bir standart olduğundan ötürü farklı kurumlar ve gruplar tarafından tasarlanmış derleyiciler aracılığıyla derlenebilir. Mesela, Microsoft ve Intel kurumları ile GNU ve LLVM projelerinin farklı standartları destekleyen(C++11,17 gibi) derleyicileri mevcuttur. Malesef, standartta açıkça belirtilmeyen kısımlardan ötürü dilin davranışı derleyiciler arasında farklılık gösterebilmekte, hatta derleyiciler standartta belirtilmeyen ek dil ve kütüphane özelliklerine de destek vermektedirler. Bu yüzden birden fazla platform için C++ tabanlı uygulama geliştirilmesi kodun birden fazla derleyiciyle derlenmesini ve program davranışlarının doğrulanmasını gerektirir.

Windows ve alakalı işletim sistemlerinde kullanılabilen Microsoft Visual Studio aracılığıyla hem derleyici(MSVC++) hem de hata ayıklayıcı birlikte gelmektedir.

Linux eksenli açık kaynak kod dünyasında genellikle kullanılan derleyici GNU projesi tabanlı g++ iken, GDB de hata ayıklayıcısıdır.

Microsoft ve GNU eksenlerine paralel olarak açık kaynak kodlu LLVM projesine bağlı clang derleyicisi ve LLDB hata ayıklayıcısı örnek verilebilir.

Belirttiğimiz bu derleyicilerin dışında çeşitli gömülü sistem veya entegre devre üreticilerinin de kendilerine has derleyicileri mevcuttur, fakat dilin güncel standartlarına destekleri masaüstü veya mobil platformlardaki kadar iyi değildir.

 

YORUMLAR

SİTE YORUMLARI: 1