March 15, 2012

Alıntı (Salih Dinçer):

>

Özellikle ref kullandım çünkü amacım 'bulDeğiştir()' benzeri bir işleve ulaşmak.

Yani bitBul değişecek ve bulDeğiştir mi olacak? O zamam tamam. Yoksa bu haliyle şu kodun derlenemiyor olması kısıtlayıcı oluyor:

   immutable ubyte[] veriler = /* ... */

D'de değişkenler için immutable'un const'tan daha kullanışlı olduğunu kabul ediyoruz. Buna rağmen birisi herhangi bir nedenle şöyle tanımlamış olsa, o da derlenemiyor:

   const ubyte[] veriler = /* ... */

Eğer bitBul olarak kalacaksa çok kısıtlayıcı, çünkü immutable değişkenlerin içinde de bit vardır. "Neden bulamıyoruz?" diye düşündürüyor. :)

Ali

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

March 15, 2012

Alıntı (Salih Dinçer):

>
  • Bit.oku (immutable: veri[]) ~ read, fetch
  • Bit.bul (immutable: veri[], size_t: kelime) ~ find, search
  • Bit.kes (ref: veri[], uint: konum) ~ cut, delete
  • Bit.koy (...) ~ change, swap (yerine koy)

Onu beğendim. Her işlev öz iş yapmalı. bulDeğiştir() yerine bul() ve değiştir() farklı olmalı.

Alıntı:

>

Bu son işlevde üç defa XOR kullanarak veriye (ayrıca maske ile) müdahale edebileceğimi düşünüyorum.

Aslında maske oluşturma işlemlerini de gözden geçirmeni öneririm. Şu bölümün problemlerinde maskeYap() diye bir işlev var:

http://ddili.org/ders/d/bit_islemleri.html

Oradaki yöntem daha hızlı olabilir.

Alıntı:

>

Ben bu 'bit yeniği'ni (immutable) hala çözemedim.

Anlamana yardım edeceğinden değil ama immutable'ın son derece yardımcı bir olanak olduğunu söyleyeyim. Değişmezlik kavramı çok önemlidir. Sistem dilleri arasından C++'a 'const' olarak geldi, C'ye de eklendi. Ama 'const' "kesinlikle değişmez" demek değildir, "bu referans aracılığıyla değişmez" demektir. immutable bu sorunu çözer.

Özet: immutable'dan şüphen olmasın. Şimdilik o bölümdeki ilkeleri gözeterek kodla. Örneğin değişmeyecek olan değişkenleri immutable olarak işaretle. Bence o kodlama biçimini eninde sonunda yararlı bulacaksın.

Alıntı:

>

Fark ettiniz mi; yukarıda yazdığım kodların birinde (işlevlerin içindekiler), const ifadesini de tek başına kullanmışım ve derleme hatası almamışım!

'const' olarak işaretlediğinde "bunu değiştirmeyeceğim" diyorsun. Değiştirmeye çalışmadığın sürece derleme hatası almazsın.

Alıntı:

>

çalışma zamanında orada var olmadıklarını

Çalışma zamanında yalnızca makine kodu kaldığına göre evet, herşey büyü. :)

Ali

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

March 18, 2012

Konuyla bağlantılı olarak şurada (http://ddili.org/forum/thread/748) bir süre Ali hocamdan çok kıymetli bilgiler öğrendik...

Alıntı (zafer:1331979211):

>

Sanırım projeye bu konu altından devam ediyorsunuz. Bu konularda çok acemi olduğumu belirtmiştim ama Salih'in yazdıklarını okuduktan sonra dayanamadım ve elimden geldiğince katkı sağlamaya karar verdim. Neticede amaç öğrenmek :)
Yanlış anlaşılmayan neden olmasın diye yukarıda naklettiğim başlıktan alıntıya cevap vermeliyim. O başlıkta sizeof ve size_t konularını tartıştık. Moderatör arkadaşlar belki başlığın açıklamasına bunları ekleyebilir. Zaten Ders Arası kategorisinde olduğu için henüz tam kavrayamadığımız dersleri irdelik.

Evet, bence burada devam etmeliyiz. Üstelik Zafer katkı sağlamaya devam edeceğini belirtmiş. Belki önceki sayfadaki önerim ilgi çekmemiş olabilir. Şimdi ki önerim ise bu sınıfın bel kemiği olan okuma işlevinin, olmazsa olmazı diyebileceğimiz bir özellik bizi bir adım daha ileri götürecektir...

Öneri: Aramaya Devam Et

Belki ayrıntılarda takılıyorum ama sanırım önemli bir kısmı gözden kaçırmışım. Tamam, bir şekilde arayıp buluyoruz ama peki aramaya devam etmesini istesek n'apacağız? Elbette kaldığı yeri bir kenara not etmeliyiz ki aklıma yapı (struct) kurmak geliyor. Böylece çok daha sağlam bir temel üzerinde devam edebiliriz. Belki ileride (eğer sınıf büyürse) kısıtlamalara mağruz kalmadan yolumuza daha rahat ilerleyeceğiz. Bence File sınıfı bize destek olabilir. Tıpkı dosya okumak gibi farzedelim.

Şimdi biraz düşünelim isterseniz. Dileyen herkes çözümünü sunabilir. Farklı çözüm de bulsak birini seçmemiz gerekecek. Seçim için belki de kriter esneklik olabilir. Çünkü aynı yapıyı başka işlevlerde de kullanacağız. Ben esneklikte çok iyi değilim (malumunuz iyi strict code yazarım!) ve Ali hocamın yönlendirmelerine ihtiyaç duyduğumu belirteyim...:)

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

1 2 3 4
Next ›   Last »