C/C++ C++ öğreniyorum gün 2

GC null olmasını beklemek zorunda değil. Dataya referans kaybolduysa devreye girer. Kullanan yoksa temizler datayı.

GC'nin yanlış takip etmez genelde. Ancak takibin kendisi başlı başına performansa etkisi olan bir şey. Garbage collected dillerin en hızlısı Java bile C++'tan yavaş çalışacak, hemde minimum %30-40 gibi bir performans kaybından bahsediyoruz.

Java memory management için muazzam şeyler yapıyor. Tartışmasız. Ancak bu memory management'ın otomasyonu, daha önce de bahsettiğim gibi performansta düşmelere sebep oluyor.

Ek olarak GC her zaman ihtiyaç duyduğumuz bir şey değil. Daha güvenli bir yaklaşım mı? Evet. Rapid development dediğimiz, aşırı hızlı geliştirme yapılan uygulamalarda, GC'ye sahip olmak daha az bellekle alakalı bug ile program yazmana olanak sağlıyor. Fakat şart değil. C++'ta eğer belirli ilkelere uyarsan, zaten GC'nin yaptığı her şey otomatik olarak gerçekleşiyor çünkü dilin dizaynı böyle.

Örneğin sadece datasını kullanacağın bir değişkeni const ref olarak alırsan, kopyalamadan kaçınmış olursun. Eğer kendi üstünde değişiklik yapman gerekiyorsa ama nesnenin orijinalini bozmak istemiyorsan kopyalarsın. Referans aldığın nesneler sana ödünç verilmiştir, işin bittiğinde sahiplerine senin üzerlerinde yaptığın değişiklikler ile birlikte geri dönerler.

Kısaca anlatmaya çalıştığım şey GC'nin şart olmadığı ve olmamasının ciddi bir problem teşkil etmediği. Hatta belirli durumlarda olmamasının daha hayırlı olduğu. Tamamen projenin ve ürünün gereksinimlerine göre karar verdiğimiz bir şey.
GC'ın devreye girmesini beklemek zorunda değiliz aslında onu zaten C++ bakımı için örnek vermiştim. Spring kullanıyorum ve nesnelerin yaşam döngüsü Spring tarafından yönetiliyor. Spring'in Dependency Injection mekanizması sayesinde, gerekli olan nesneler otomatik olarak oluşturuluyor ve kullanıldıktan sonra GC tarafından temizleniyor. Bu nedenle, manuel olarak bellek yönetimi yapmama gerek kalmıyor.

Tam olarak bakım dediğim kısım buydu. C++ biraz uğraştırabiliyor. Ben direkt kontrolü devrediyorum.

Tabii hocam C++ dilinde belki Spring gibi bir Framework olabilir.

Java memory management için muazzam şeyler yapıyor. Tartışmasız.
Hocam zaten Java dünyanın en iyi programlama dili
1723921658073.png
.
 
Son düzenleme:
Tam olarak bakım dediğim kısım buydu. C++ biraz uğraştırabiliyor. Ben direkt kontrolü devrediyorum.

Tabii hocam C++ dilinde belki Spring gibi bir Framework olabilir.
Tekrar söylüyorum. Tam olarak bakım değil. Belirli ilkelere uyarsan GC şart değil. Dilin yapısı zaten çöp toplamaya gerek kalmayacak şekilde dizayn edilmiş durumda. Sadece senin bu yapıyı takip etmen yeterli. Prensiplere uyuyorsan, çöp toplamaya gerek yok. Şart değil. Bunu anlatmaya çalışıyorum. Kafana çok takmana da gerek yok çöp toplama varmış yokmuş diye.
 
Tekrar söylüyorum. Tam olarak bakım değil. Belirli ilkelere uyarsan GC şart değil. Dilin yapısı zaten çöp toplamaya gerek kalmayacak şekilde dizayn edilmiş durumda. Sadece senin bu yapıyı takip etmen yeterli. Prensiplere uyuyorsan, çöp toplamaya gerek yok. Şart değil. Bunu anlatmaya çalışıyorum. Kafana çok takmana da gerek yok çöp toplama varmış yokmuş diye.
Yok Unity3D'de GC'nin çalışma sıklığı kontrol edilmeli.

Hocam GC hakkında niye uzun yazı yazdın ben anlamadım aslında.
Kendin alt konuları açtın ben tümden hepsini Java'ya devrettim yazmıştım. Sen devam ettin GC'ye.
 
C++'ın zorluğu üzerine konuşuyorum.
Hocam bilen biri için zorluğunun yanında iyi bir program yönetimi de sağlıyor, onu anladım.
Zorluğu hakkında konuşuyorduk aslında iyi güzeldi ama siz çok durdunuz GC üzerine. Sonra kavgaya gidiyorduk az kalsın.

Ben de aslında diğer konulardan da bahsettim biraz. OpenGL durumu olsun, bağımlıklıkların
yönetimi olsun falan. C++ zor bir dil gerçekten. Günümüzde donanım üreticileri ve Unreal dışında fazla kullanımı var mı bilmiyorum. Ayrıca SDL/SDL2 kütüphanesi ile oyun yapmaya çalıştım ve videolar izledim ama ben gerçekten kullanmayı hiç istemiyorum. Açıkçası projeleri hızlı ayağa kaldırmak ve algoritmalarla yönetebilmek daha cazip geliyor.
 
Son düzenleme:

Technopat Haberler

Yeni konular

Geri
Yukarı