| |
| Posted by Ali Çehreli (acehreli) in reply to kerdemdemir | PermalinkReply |
|
Ali Çehreli (acehreli)
Posted in reply to kerdemdemir
| BLIT, "bit level transport"un kısası. (Evet, orada I olmamalı ama öyle.) D, yapı nesnelerini istediği gibi bir yerden yere kopyalama hakkını saklı tutar(dı) çünkü yapı nesnelerini salt değerler olarak görürdü. Yapı nesneleri daha karmaşık amaçlar için de kullanılmaya başlanınca bu "shallow copy" sorun çıkartacağından, ortalığın BLIT sonrasında düzeltilmesi işlemleri "BLIT sonrası" anlamına gelen post-blit işlevine yerleştirildi.
Yani, nesnenin bitleri orada oraya taşınır; post-blit varsa çağrılır. Ama, işin güzeli, post-blit yaşamları sona ermek üzere olan geçici nesneler için çağrılmaz çünkü bunun sonucunda durumun düzeltilmesi gereken iki nesne değil, tek nesne vardır. Çünkü kaynak geçici nesne bir yere kopyalanmıştır ve yaşamı sona ermiştir; yani, sonuçta bir yerden bir yere "taşınmıştır." Bitlerin bir yerden başka bir yere geçirilmelerine dayanan "move" işlemi C++'ın da çok uzun zamandır çözmeyi hayal ettiği bir sorundur ve sonunda "rvalue reference" diye adlandırılmış olan bir olanakla çözülmüştür.
Özellikle Weka, post-blit'in yetersiz olduğu ve C++'taki gibi işleyen gerçek anlamda kopyalayıcının gerektiği konusunda bastırınca D'ye de "copy constructor" geldi ve DConf 2019'da açıklandı. Post-blit ile olan farklarını yukarıdaki bağlantıda görebilirsin. Ben de kitabı düzeltecek kadar ayrıntılı bilmiyorum.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
|