Thread overview
Transmogrifier
Apr 24, 2011
erdem
Apr 24, 2011
erdem
Apr 24, 2011
mert
Apr 24, 2011
erdem
Apr 24, 2011
mert
Apr 25, 2011
erdem
May 02, 2011
erdem
April 24, 2011

Bunu konu dışı olarak açtım. Çünkü bir kısmı konu dışı bir kısmı konu içi olmuş oluyor.

Şimdi konu dışı olan kısım. Bu transmogrifier içine koyduğumuz bir şeyi başka bir şeye çeviren bir kutu mu. Bu mudur :)

http://images2.wikia.nocookie.net/__cb20070709025203/candh/images/5/5a/Transmogrifier_zap.png

Konuyla alakalı kısmına gelince bir diziyi ilklendirilmemiş olarak bırakıp, çalışma anında ilklendirmek için buradaki gibi başına 'void' koyuyoruz. Bu tür bir kullanım özellikle geçici bellek görevi gören büyük diziler için faydalı oluyor.

class Transmogrifier {
   double[128] alpha = void;
   size_t usedAlpha;

   this() {
       // usedAlpha = 0 ve alpha'yı ilklendirilmemiş olarak bırak
   }
}

Buradaki örnekte 'Transmogrifier' sınıfı kullanılan 'alpha' miktarını değeri başlangıçta sıfır olan 'usedAlpha' isimli başka bir değişkende tutuyor. 'Transmogrifier''ın ilklendirilirken (kurucu işlevinde) 'usedAlpha' 0 değerini alıyor 'alpha' ilklendirilmemiş olarak kalıyor.

Kodumuz 'alpha[usedAlpha .. $]' aralığındaki elemanlara bir değer yazılmadan kesinlikle bu aralıktaki bir elemanın değerini okumamalıdır.

İngilizcesini de yazıyorum:

As 'usedAlpha' grows, the code must never read elements in the interval 'alpha[usedAlpha .. $]' before writing them.

Şimdi ben bu sınıfın gerçeklemesini düşünemiyorum. Yani bu sınıfa hangi durumda ihtiyaç duyarız. Sınıfın gerçekleme kısmı nasıl olur.

İkincisi bir diziyi ilklendirmemiş olarak bırakıp nasıl geçici bellek görevi gördürebiliriz.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 24, 2011

Alıntı (acehreli):

>

Yukarıdaki Transmogrifier'ı C++'taki std::vector'ın eşdeğeri olarak düşünebiliriz. Kapasitesi 128 ama kullanılan eleman adedi sıfır.

Teşekkürler. Bu karşılaştırma sayesinde ne yapılmak istendiğini anladım :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 24, 2011

Erdem merhaba,
Galiba Tdpl ile ilgili bir çalışma yürütüyorsun, Sanırım bir çeviriydi. Peki o gerçekleştirdiğin çalışmayı benim de takip etme olanağım var mı?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 25, 2011

Yok çalışma yürütmüyorum :)

Yürütmüyorum derken sadece okuyorum. Şu an nesneler ile ilgili bölümdeyim.

Alıntı (Erdem):

>

Bu konuda Scott Meyers'ın The D Programming Language kitabında bir giriş yazısı var. Aslında bu bölümü çevirebilseydik çok süper olurdu ;-)

Eğer yukarıdaki alıntı yüzünden öyle düşündüysen benim hatam. Telif hakları yazara ait olduğu için Scott Meyers'ın giriş yazısını çeviremiyoruz anlamında kullandım. Eğer benim kullanımımdan böyle bir şey anlaşıldıysa özür :huh:

Aslında en iyisi dershanedeki türkçe dersler okunduktan sonra ikinci kitap olarak TDPL okunabilir. Eğer temel bir D bilgim olmasaydı oldukça zorlanabilirdim. Ama şimdi fıstıklı kadayıf gibi :)

Ben Amazondan aldım:

http://www.amazon.com/D-Programming-Language-Andrei-Alexandrescu/dp/0321635361

İkincisi sadece 10 küsür lira kargo parası verdim ki bu hiç bir şey değil. 10 günde de elime ulaştı. Daha önce de keman yastığı vs.. bazı aksesuarlar almıştım. Onlar da çok kaliteli çıktı. Bence kitabın fiyatı da gayet makul sayılır. O yüzden eğer dershanedeki dersleri bitirdiysen tavsiye ederim :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 25, 2011

Almayı düşünüyordum ne zamandır. Aslında zamanlama olarak derslerin bitişine denklemem daha iyi olacak diye ertelemiştim ben de aynı sebepten. Kitap bu; geldiği anda kokusuna dayanamıyor insan, açıp okumaya dalıyor sonra kaptırıyor kendisini. Bölünmüş olmak da içime sinmiyor açıkçası. Önce kendi kitabımızdan yürüttüğüm programım sonlansın diye bakıyorum. Daha arayüzler konusundayım. Ancak bu noktada daha fazla ilerlemeden önce forumdaki ders arası ve dil üzerine olan bölümlerde tartışılmış konuların üzerinden geçmeyi planlıyorum ki iyice pekişsin bilgilerim. İleriye doğru gidiş geçilenler yarımyamalak kavrandığında karmaşa yaratmaktan başka hiçbir işe yaramıyor. Bunlar bittikten sonraki Uygun bir zamanda siparişimi geçeceğim o halde.
Link ve bilgi için teşekkürlerimle

mert

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 24, 2011

Alıntı (erdem):

>

Bu transmogrifier içine koyduğumuz bir şeyi başka bir şeye çeviren bir kutu mu. Bu mudur :)

Ben "transmogrify"ı "transform" ile uyduruk bir son ekin birleşmesi olarak düşünüyordum. 42 ve foo'nun arkadaşı olarak türemiş sanıyordum. Şimdi öğrendiğime göre gerçekten varmış öyle bir sözcük. Biçimini değiştirmek (belki de biraz yamultmak :)) anlamına geliyormuş.

Alıntı:

>

Yani bu sınıfa hangi durumda ihtiyaç duyarız. Sınıfın gerçekleme kısmı nasıl olur.

Benim anladığım, o örnekteki sabit uzunluklu dizi aynı C ve C++ dizileri anlamına geliyor. Kendisi için yer ayrılmış ama o elemanlar ilklenmemiş. Bence onlara doğrudan değer atamak kadar kolay olmalı.

Alıntı:

>

İkincisi bir diziyi ilklendirmemiş olarak bırakıp nasıl geçici bellek görevi gördürebiliriz.

Atama ile olabilir. Yukarıdaki Transmogrifier'ı C++'taki std::vector'ın eşdeğeri olarak düşünebiliriz. Kapasitesi 128 ama kullanılan eleman adedi sıfır. elemanEkle() diye bir işlevi olabilir:

   void elemanEkle(int değer)
   {
       alpha[usedAlpha] = değer;
       ++usedAlpha;
   }

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 25, 2011

Yukarıdaki örneği bir vektör sınıfına çevirmeye çalıştım. Ortaya böyle bir şey çıktı :)

Bu arada C++'nin gerçek 'std::vector' gerçeklemesini hatırlamıyorum. Öylesine yazdım.

class Vektör {
   double[128] kapasite = void;
   size_t elemanAdedi;

   void elemanEkle(int değer) {
       kapasite[elemanAdedi] = değer;
       ++elemanAdedi;
   }

   void yazdır() {
       foreach (i; 0 .. elemanAdedi) {
           writeln(kapasite[i]);
       }
   }

   this() {
       // elemanAdedi 0 ve kapasiteyi ilklendirilmemiş olarak bırak
   }

}

unittest {
   auto vektör = new Vektör;
   vektör.elemanEkle(7);
   vektör.elemanEkle(5);
   vektör.yazdır;
   writeln("Vektörün eleman sayısı: ", vektör.elemanAdedi);
}

void main() {}

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 02, 2011

Tam olarak transmogrifier buymuş :)

http://bit.ly/120FQL

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]