@@ -23,11 +23,12 @@ türlü başına oturup da bir post yazmayı başaramadım. Artık o akşam bu a
2323
2424Başta belirtmek isterim ki, bu yazıda C++'ın ne tarihine gireceğim ne de çok bilinen
2525yok işte variable türleri budur, pointerlar şunlar, referanslar bunlar gibi şeylerden
26- bahsetmeyeceğim. Çünkü büyüklü küçüklü herkes "Ben C++ gurusuyum" diyip oturup Bejarne diye bir
26+ bahsetmeyeceğim. Çünkü büyüklü küçüklü herkes "Ben C++ gurusuyum" diyip oturup Bjarne diye bir
2727adam C'nin şu sorunlarını görmüş hede hödö diye bir sürü Wikipedia bilgisini oturup
2828paylaşıyor. Ama bununla kaldığın zaman C++'ın gurusuyum demek havuzda yüzüp Manş Denizini
2929geçebilirim demek gibi bir şey. Neyse lafı uzatmadan Modern C++ hikayeleri anlatalım biraz da.
3030
31+
3132# C++'ın Orta Çağları: C++98 ve C++03
3233
3334Tarihte C++ 90'ların sonunda bugünkü bildiğimiz ilk iskeletini C++98 ile ISO ortaya attı. Ardından
@@ -40,12 +41,10 @@ hatta verilerin başlangıç tanımlamaları gibi konularda bile C++ oldukça il
4041Örneğin çokça bildiğimiz aşağıdaki tanımlama C++'ın o dönemlerinde yoktu:
4142
4243``` cpp
43-
4444class MyClass {
4545public:
4646 int value = 5; // C++98/03'de derleme hatası verir.
4747};
48-
4948```
5049
5150Bu dönemlerin ardından daha öncesinde bahsettiğim Java ve C# gibi dillerin popülerliği ile 2003-2005
@@ -61,7 +60,8 @@ adlandırıldı.
6160daha ifade gücü yüksek ve geliştirici dostu hale getiren özellikler tanıttı. Standart kütüphanelerde
6261oldukça büyük değişiklikler yapıldı ve C++11 ile birlikte C++'ın modern çağı başlamış oldu diyebilirim.
6362
64- ## Buz Devri Öncesi C++'ın Sorunları
63+
64+ ## Buz Devri Öncesi C++'ın Sorunları
6565
6666Esasında C++ dili oldukça güçlü bir dildi, o zamanlar bile... Ancak geliştiricileri konforsuz hale getiren
6767bazı sıkıntılar var idi.
@@ -73,10 +73,8 @@ gireceğim. Özellikle iteratörler gibi karmaşık türler için tür bildiriml
7373Örneğin bir iteratör tanımlamak için aşağıdaki gibi bir şey yapmanız gerekiyordu:
7474
7575```cpp
76-
7776std::vector<int> vec = {1, 2, 3, 4, 5};
7877std::vector<int>::iterator it = vec.begin();
79-
8078```
8179
8280Bellek yönetimi ve eşzamanlılık eksikleri de C++'ın en baş ağtırıcı sorunlarıydı. C++'ın ham işaretçileri
@@ -87,6 +85,7 @@ C++'ı pek tercih edilmeyen bir dil haline getirilmişti.
8785Bu açıdan bakldığında C++11 bir güncellemeden çok daha fazlasıydı; adeta bir devrimdi. Standart,
8886uzun süredir var olan sorunlara çözüm getiren ve dili daha modern, güvenli ve verimli hale getiren
8987düzinelerce özellik tanıttı ki şimdi bunlardan birkaçına değinelim.
88+ ---
9089
9190# Modern C++'ın Temel Bazı Yenilikleri
9291
@@ -168,6 +167,7 @@ Son olarak `auto` ile `decltype` arasındaki farkı vurgulamakta fayda var:
168167* auto türler (types) üzerinde çalışır,
169168* decltype ise ifadeler (expressions) üzerinde çalışır.
170169
170+ ---
171171
172172## Uniform Initialization (Birörnekli Başlatma)
173173
@@ -197,6 +197,7 @@ Birörnekli başlatma, tehlikeli dönüşümleri de derleme aşamasında engelle
197197int x = 3.14; // İzin verilir ama kesme (truncation) olur
198198int y{3.14}; // Hata: daraltıcı dönüşüm
199199```
200+ ---
200201
201202## Akıllı İşaretçiler ve Bellek Yönetimi
202203
@@ -276,6 +277,7 @@ int main() {
276277 return 0;
277278}
278279```
280+ ---
279281
280282## Lambda Fonksiyonlar
281283
@@ -294,6 +296,7 @@ std::for_each(vec.begin(), vec.end(), [](int value) {
294296
295297Bu örnekte ` std::for_each ` algoritması, ` vec ` vektöründeki her bir eleman için lambda fonksiyonunu
296298basitçe çağırır. Bu sayede algoritmaları daha okunabilir hale geldi.
299+ ---
297300
298301## Eşzamanlılık ve Paralellik
299302
@@ -322,6 +325,7 @@ Windows'ta da Linux'ta da macOS'ta da aynı şekilde çalıştırabilirsiniz.
322325C++11 ayrıca ` std::async ` ve ` std::future ` öğeleriyle asenkron görev yönetimini
323326(async task management) de destekler. Böylece manuel olarak ` std::thread ` yönetmek yerine,
324327asenkron olarak çalıştırılan işlerden dönüş değerleri alabilirsiniz.
328+ ---
325329
326330## Meta Programlama Şablonlar ve Derleme Zamanı Hesaplamaları
327331
@@ -377,6 +381,7 @@ int main() {
377381
378382Bu tarz metaprogramlama, kütüphane geliştiricileri veya çerçeve (framework) yazarları
379383için özellikle yararlıdır.
384+ ---
380385
381386# Sonraki Blog Yazılarıma Referans Niteliğinde...
382387
0 commit comments