Forum: Ders Arası RSS
auto hakkında düşüncelerim..
auto kelimesinin kullanımına yönelik bilgiler
zafer #1
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: auto hakkında düşüncelerim..
Merhaba,

Dersanede okudum bölümlerle ilgili daha fazla bilgi almak ve aklıma takılan soruları gidermek amacıyla dersane bölümünü bitirdikten sonra foruma geçerek o bölümle ilgili mesajları inceliyorum. Kesinlikle çok yararlı oluyor. Dersane ve forum birbirini harika tamamlıyor. D dilini Türkçe öğrenmek isteyenler için burası harika bir kaynak, katkıda bulunan tüm arkadaşlara bende teşekkürlerimi iletmek isterim.

Biraz muhalefet gibi olacak ama kusura bakmayın fikrimi söylemeden geçemeyecem :) Öncelikle auto kelimesi kesinlikle çok güzel ve kullanışlı olmuş dile eklenen güzel özelliklerden birisi ama bence aşırı kullanımı sıkıntılı oluyor. Örneğin forumdaki bazı kodları incelerken bakıyorum herşeye auto yazılmış neyin hangi tipte olduğunu anlamak biraz zor oluyor en azından benim için böyle. Neticede bence auto kelimesinin aşırı ve gereksiz kullanımı kodun okunurluğunu düşürüyor yada yeni başladığım için bana öyle geliyor olabilir düşüncesiyle sizlerinde fikrini merak ediyor ve soruyorum. siz bu konuda ne düşünüyorsunuz?
https://github.com/zafer06 - depo
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
(Öncelikle forumu canlandırdığın için teşekkürler. Daha önce de konuştuk ama böyle tekrarlar herkes için çok çok yararlı oluyor.)

Ben çoğunlukla katılıyorum. :) Çoğu durumda olduğu gibi yararlarıyla zararlarını ölçerek kullanmak gerek.

Yalnızca bütünlük amacıyla bir kaç şeyi hatırlatacağım:

  • Bölüm başlığı olarak 'auto' kullanmama rağmen "Başka belirteçler de türün otomatik olarak anlaşılması için yeterlidir" demiştim. Aslında auto yerine const, immutable, vs. de kullanılabiliyor: http://ddili.org/ders/d/auto.html

  • Ama çoğu durumda 'auto' kullanılıyor.

  • C++11'de yalnızca 'auto' kullanılabildiği için baştan ben yanılmış ve yalnızca 'auto' kullanılabiliyor sanmıştım.

Bence 'auto' C++11'de de olduğu gibi, türün sağda açıkça belli olduğu durumlarda kullanılabilir:

    UzunBirTürİsmi u0 = UzunBirTürİsmi(42)// <-- tür gereksizce tekrarlanıyor
    auto u1 = UzunBirTürİsmi(42);            // <-- burada tür açıkça belli 

Aklıma gelen başka bir kullanımı da türün bizi gerçekten ilgilendirmediği durumlar olabilir. Örneğin işlerini özel aralık nesneleri ile tembel olarak halleden algoritmaların dönüş türlerini bilmemek bazen daha iyi olabiliyor.

Şu bölümde güzel bir örneği var: http://ddili.org/ders/d/araliklar.html

Orada şöyle bir kullanım var:

    writeln(take(cycle(take(FibonacciSerisi(), 5)), 20));

O zincirleme kullanımı herhangi bir nedenle açık olarak yazmak zorunda kalsak şöyle oluyor (ben açıklama amacıyla öyle yazmıştım; yoksa aşağıdaki gibi açıkça yazmak çoğu durumda gerekmez):

    auto seri                      = FibonacciSerisi();
    auto başTarafı                 = take(seri, 5);
    auto tekrarlanmışı             = cycle(başTarafı);
    auto tekrarlanmışınınBaşTarafı = take(tekrarlanmışı, 20);
 
    writeln(tekrarlanmışınınBaşTarafı);

Sol tarafta türleri açıkça yazmak isteseydik ne gerekirdi diye şöyle öğrenebiliriz:

    writeln(typeof(seri).stringof);
    writeln(typeof(başTarafı).stringof);
    writeln(typeof(tekrarlanmışı).stringof);
    writeln(typeof(tekrarlanmışınınBaşTarafı).stringof);

Çıktısı:

FibonacciSerisi
Take!(FibonacciSerisi)
Cycle!(Take!(FibonacciSerisi))
Take!(Cycle!(Take!(FibonacciSerisi)))


Yani auto kullanmadan şöyle yazmak gerekirmiş:

    FibonacciSerisi seri                                            = FibonacciSerisi();
    Take!(FibonacciSerisi) başTarafı                                = take(seri, 5);
    Cycle!(Take!(FibonacciSerisi)) tekrarlanmışı                    = cycle(başTarafı);
    Take!(Cycle!(Take!(FibonacciSerisi))) tekrarlanmışınınBaşTarafı = take(tekrarlanmışı, 20);

Zafer'e katılıyorum ama yukarıdaki gibi iki durumda 'auto'nun yararlı olduğunu düşünüyorum.

Bütün programı da vereyim:

import std.stdio;
import std.range;
 
struct FibonacciSerisi
{
    int baştaki = 0;
    int sonraki = 1;
 
    static immutable bool empty = false;
 
    @property int front() const
    {
        return baştaki;
    }
 
    void popFront()
    {
        int ikiSonraki = baştaki + sonraki;
        baştaki = sonraki;
        sonraki = ikiSonraki;
    }
 
    FibonacciSerisi save() const
    {
        return this;
    }
}
 
void main()
{
    writeln(take(cycle(take(FibonacciSerisi(), 5)), 20));
 
    auto seri                      = FibonacciSerisi();
    auto başTarafı                 = take(seri, 5);
    auto tekrarlanmışı             = cycle(başTarafı);
    auto tekrarlanmışınınBaşTarafı = take(tekrarlanmışı, 20);
 
    writeln(tekrarlanmışınınBaşTarafı);
 
    writeln(typeof(seri).stringof);
    writeln(typeof(başTarafı).stringof);
    writeln(typeof(tekrarlanmışı).stringof);
    writeln(typeof(tekrarlanmışınınBaşTarafı).stringof);
}

Ali
zafer #3
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bence bu forum ve site harika umarım ben gibi daha çok kişi burayı keşfedip bu kaynaktan yararlanırlar. Özellikle forum bölümü dersaneyi tamamlayan bir yapı gibi olmuş bu durum D öğrenmek için site dışına çıkılmasına hiç ihtiyaç bırakmıyor neredeyse.

Tüm bu güzelliklerin yanında bana göre bazı aksaklıklarda mevcut öncelikle küçük bir kod merkezi olsa fena olmazdı. Açılan projeler ve forumda bir çok kod olmasına rağmen çoğu dağınık veya hatalı, başı sonu belli değil. Bunun yerine bilgisayara indirip çalıştırabileceğimiz hazır kodlar olsa küçük programlar şeklinde daha güzel olabilirdi. En azından ben başlanğıçta böyle bir ihtiyaç duydum. Yine kendi projemde kullandığım bazı (çok önemli) detay bilgileri forumlarda karşılaştığım kodların içinden öğrendim mesela.

Bunun dışında projeler var bir kısmı bitmeden bırakılmış sanırım. Bazısı google depolarında bazısı github depolarında, bana kalırsa bu projelerinde çalışan en son halleri bir zip dosyası olarak bu site üzerinden indirilebilmeli diye düşünüyorum.

Öneri ve düşünce çok ancak bunları söylemenin yapmaktan çok daha kolay olduğunun farkındayım bu sebeble bu siteyi bu hale getirenlere teşekkür etmek gerekir diyorum.
https://github.com/zafer06 - depo
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Güzel yorumlara bütün forum üyeleri adına teşekkür ediyorum. :)

Kod merkezi olarak ne düşünebiliriz? Başlı başına programlardan mı bahsediyoruz, yoksa belirli bir iş yapan işlevlerden mi?

Aklımıza gelen işlev veya programları listelersek başkaları için de yazacak program fikri olur. Hatta belki daha iyi yöntemler bularak geliştirebiliriz.

Ali
zafer #5
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Benim aklımda kendi başına bir iş yapan küçük programların sıkıştırılmış dosyalar halinde bir araya toplandığı bir kod merkezi vardı. Örneğin girilen ad, soyad bilgisini dosyaya kaydedip okuyan bir program gibi böyle bir program bir çok kayıt işlemi yapan proje için bir temel oluşturabilir. Benim kod merkezinden kastım bu tür programları bir arada tutan bir sayfa düzeni mesela.

acehreli:
Aklımıza gelen işlev veya programları listelersek başkaları için de yazacak program fikri olur. Hatta belki daha iyi yöntemler bularak geliştirebiliriz.

Bu fikre kesinlikle katılıyorum, malesef insan düşündüğü zaman aklına proje fikri gelmiyor özellikle yeni başlayanlarda bu büyük bir sorun. Böyle bir liste kesinlikle çok iyi olur, hatta yapıp formun bir köşesine iliştirmek ve sürekli güncellemek çok daha iyi olur düşüncesindeyim. Benim şimdilik aklıma gelenler

    • Dört işlem yapan bir hesap makinesi
    • Döviz kuru çevirici
    • Ünlü Hanoi kuleleri probleminin D ile çözümü
    • Sıralama algoritmalarının D ile gerçeklenmesi olabilir
    • IRC üzerinden D dilini taıtan bir IRC botu
    • Basit bir çevirici (converter) (wma->mp3 veya bmp->jpeg)

Bunlar aklıma gelenler tabi ki bunları yeniden gözden geçirip aradan elenecekleride eleyip bir listeye başlanabilir belki.
https://github.com/zafer06 - depo
Bu mesaj zafer tarafından değiştirildi; zaman: 2011-09-26, 00:46.
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Ders Arası RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-23, 23:30:00 (UTC -08:00)