September 17, 2009

Alıntı:

>

cmp olayını bilerek söylemiyordum; sürpriz yapacaktım... :-D Kolay gelsin! ;-)

Biz bütün bunları görmedik okumadık bunlar yaşanmadı Ali hocam :-D . Sürprizi beklemeye devam ediyoruz.Hatta Ne sürpriz mi biri sürpriz mi yapacak ?. Unuttuk gitti bile :-D

Alıntı (canalpay):

>

Süprizi bozdum galliba :-D
Esat bey isterseniz sizde başkasından birini seçin. Bende kalanlarından en kolayını bakar yapmaya çalışırım.

- void tolowerInPlace(C)(ref C[] s);

Ben bu fonksiyonu seçeyim dicektim zaten :D

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

September 17, 2009

Alıntı (esatarslan52):

>

Bİraz araştırınca std.process in böyle bir olanak sunduğunu öğrendim. Buradan bakabilirsin.

Çok teşekkürler. Kodlarına baktım C'den almışlar kodları. Şimdi merak ettim de bütün kütüphaneler diğer kodları C gibi kütüphanelerden mi alıyor ? Örneğin Tango. Ben hep dilin kendi iç olanakları ile yazılmış yada çok daha alt seviye dillerle yazılmıştır diye düşünüyordum. Neyse bu sohbeti başka konuda devam ettirsek iyi olur gibi.

Alıntı (acehreli):

>

Konsoldan deneme hiz'da olduğu gibi parametre verebiliriz ama "int a = 5;" gibi derleyicinin anlayacağı hiçbir şey veremeyiz. Derleme olayı çoktan bitmiştir. Biz o dizgiyi tarayarak kendimiz değişkenlere benzer şeyler yapabiliriz ama o başka ve belki de gereksiz bir hikaye... Veya zaten Python vs. var.

Yani bu yazacağım uygulamanın çağırırken değer veremeyeceğimi söylüyorsunuz. Önce programı çağırıp sonra programa değer vereceğim demek oluyor.

Ama bende çağreler bitmezz :-d Bir bat dosyası(Hayatımda hazırlamadım :-D Hatta ne olabileceğini tam olarak tahmin bilmiyorum.) hazırlayıp bu işi halledebilirim. Ama uğraştığıma değmez. :-) Aklımda saçma sapan bir sürü çözümler geldi ama ben 'system() 'fonksiyonu ile halledeceğim.

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

September 17, 2009

Esat Bey sizde string.d'ye yardım etmek istiyordunuz. Bende hemen kafamdan düzeltilmesi gereken fonksiyonları ekleyeyim.:

- int cmp(C1, C2)(in C1[] s1, in C2[] s2);
  • CaseSensitive yes olabilen bütün fonksiyonlarda yesli hali düzeltilmesi gerekiyor.
- void tolowerInPlace(C)(ref C[] s);
- void toupperInPlace(C)(ref C[] s);

Ben bunları görüyorum sizin eklemek istediğiniz bir şey var mı ?

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

September 17, 2009

Alıntı:

>

Bunlar şablonlu aynı zamanda. Bu iyi en azından bunları yazmakla uğraşırken D nin şablonlarında da biraz ilerlemiş oluruz. Ben cmp ile uğraşmaya başlıyorum ozaman.

Zaten şablonlu olduğu için sona bıraktım. Büyük ihtimalle bunları çevirmeyi beceremem. mesela T'yi Ali Bey'in gösterdiği kadar anladım ama C ne oluyor ?
Ama kütüphanemiz phobos kadar iyi olacak :-D Sırf C'den almışlar. Bizde sırf phobostan alıyor ı i 'yi ekliyoruz.
Birde

for (;;)

ne oluyor. Bana sonsuz döngüden başka bir işe yaramaz gibi gelsede özel anlamı olduğu belli.

Alıntı (acehreli):

>

cmp olayını bilerek söylemiyordum; sürpriz yapacaktım... :D Kolay gelsin! ;)

Süprizi bozdum galliba :-D
Esat bey isterseniz sizde başkasından birini seçin. Bende kalanlarından en kolayını bakar yapmaya çalışırım.

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

September 17, 2009

Alıntı (canalpay):

>

Ama break gibi oracıkta döngüden çıkıyor mu ? string Koduna baktığımda çıkmıyor gibi gözüktü ama belli ki oracıkta çıkıyor.

return döngü ile beraber fonksiyondan da çıkar(fonksiyonu sonlandırır).

import std.stdio;

void dön()
{
   for (int i = 0; ;i++) {
       //Aksi olduğu sürece döngde kalır
       if (i == 550000000) {
           return;
       }
   }
}

int main()
{
   for (int i = 0; ;i++) {
       //Aksi olduğu sürece döngde kalır
       if (i == 9000000)
           break;
   }

   writeln("Döngüden çıkıldı");
   writeln("Yeni bir döngüye girdi");

   dön();

   writeln("Fonksiyondan çıkıldı");

   return 0;
}

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

September 17, 2009

Alıntı (acehreli):

>

Tabii Phobos için "sağlam" diyemeyiz ama olsun... :D

Olsun zaten bizde onun için yama yapıyoruz ya zaten. Ama D gerçekten kütüphane açısından bir şey yapmalı.

for (;;) nasıl doğru bilmişim. Hatta iddaya girerim while(true) göre daha hızlı çalışıyordur. Derleyici istediği kadar akıllı olsun. Ama break ile çıkışı göremedim ondan sordum.

Alıntı (esatarslan52):

>
  • void tolowerInPlace(C)(ref C[] s);

Ben bu fonksiyonu seçeyim dicektim zaten :D

Bende upper olanını alayım. Zate lower alınınca upper da alınmış oluyor ama siz yapana kadar kendimi geliştireyim.
Alıntı:

>

T veya C demek programcıya kalmıştır. Geleneksel olarak T denir ama bence burada bir 'character' türü olduğunun üstüne basmak için C demişler. Aynı mantık...

Evet bunuda tahmin ettim :-) Ama yinede şablondan anlamadığım gerçek.

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

September 17, 2009

Alıntı (acehreli):

>

Arkadaşlar, konuları daha küçük başlıklar altında tartışalım mı... tr.string gibi başlıklar çok genel oluyor. :)

Farketmez ben her yerde sorumu sorarım. :-) Zaten buda çok sayfalı olmaya başladı. Ama bu ayrıntılı başlıklarıda çokta abartmamak gerekir.

Alıntı (acehreli):

>

Eksik söylemişim. :) Tabii return fonksiyondan çıkarken döngüyü de geride bırakır. :)

Ama break gibi oracıkta döngüden çıkıyor mu ? string Koduna baktığımda çıkmıyor gibi gözüktü ama belli ki oracıkta çıkıyor.

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

September 17, 2009

Alıntı:

>

derleyici sandığınız kadar akıllı değilmiş

Derleyiciler işlerini derleme zamanında yaparlar ve bitirirler. N+1 konusu, çalışma zamanında gelen dizginin uzunluğu ile ilgili olduğu için derleyiciler bu konuda bir şey yapamazlar.

Derleyici, gelen dizginin uzunluğundan bağımsız olarak hızlı kod üretmeyi hedefler, ama burada yaşadığımız olay algoritmayla ilgiliydi. Zaten bu yüzden kütüphanelerdeki string sınıfları (örneğin C++'nın std::string'i), boyunu arttırmak gerektiğinde hep %50 kadar arttırır. Nasıl olsa artmak gerekti, yine gerekir, diye... Daha sonradan %50 yerine, daha büyük bir oranda arttırmanın daha iyi olduğu da gösterilmiştir. Bu, belleğin etkin kullanımıyla ilgilidir ve tesadüfen de altın orana eşittir! :) Dizginin boyunun 1.61 katı olarak büyümesi gerekir...

Bu arada, bende 9 değil, 7.5 saniye bekliyor. ;)

Makefile'a hiz_testi diye yeni bir hedef ekledim. Artık normal geliştirme zamanımızdan yemeyecek ama kendimiz istersek make'i hiz_testi ile şöyle başlatacağız:

make hiz_testi

capwords, bir dizgi içindeki bütün kelimelerin yalnızca baş harflerini büyük yapar: "ddili forum" -> "Ddili Forum".

assumeUnique, "tek olduğunu varsay" anlamındadır; bir fonksiyonun dış dünyaya "bu döndürdüğümün tek referansını size veriyorum, kendim içeride bir kopyasını tutmuyorum" demesiymiş.

std.contracts modülünde bulunuyor.

Biz de şimdiye kadar yazdığımız ve 'immutable' dizgi (örneğin dstring) döndüren bütün fonksiyonların sonunda bunu kullanabiliriz.

Ali

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

September 17, 2009

Alıntı (canalpay):

>

code.google.com'da projemize issues mi ne ona ekledim.

Ben de oraya yanıt yazdım. Bu forumda devam etmekle yanlış yapıyoruz aslında değil mi? :) trileri'nin bütün sohbetinin orada olması belki daha iyi olurdu.

Alıntı:

>

Birde denemeye debug aktif ederekte hız testini yaptırmasını sağlayabiliriz.

Olabilir. dmd'nin kodun ne kadarının denendiğini ("cover" edildiğini) gösteren -cov diye bir seçeneği var. İleride onu da eklemek, bütün fonksiyonların bütün akış yollarının denendiğini de garanti edecek.

Ayrıca -profile diye bir seçeneği var. Normalde programın geçirdiği zamanın ne kadarının nerede harcandığı bilgisini verir ama dmd'ninkinin nasıl kullanıldığını henüz bilmiyorum.

-cov güzel bir çıktı veriyor ama...

Alıntı:

>

Aslında orjinal fonksiyonlarında hızlarına bakmamız gerek.

İyi fikir. Aslında deneme.d, orijinalle bizimkinin farkının örneğin %bilmemKaç'tan fazla olmadığına bakmalı...

Ali

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

September 17, 2009

Bu deneme'yi neden sevmedin? Hepimize her make dediğimizde büyük zaman kazancı sağlıyor. Bana 15 saniye kadar beklemek 4-5 kereden sonra dert olmasaydı bu değişikliği yapmazdım zaten. :)

Eğer geçerli bir neden varsa, bence değişiklik listesinde

http://code.google.com/p/trileri/source/list

üzerine tıklayıp satır satır açıklamalarıyla 'negative' puan da verebilirsin.

Bunu wiki'ye eklemek gerek ama bilmeyenler vardır diye kısaca:

  • yukarıdaki listedeki bir değişikliğe tık

  • 'Affected files'ın altındaki satırlardan birisinin yanındaki diff'e tık

  • yorum yapılacak satıra çift-tık (çok güzel yapmışlar :) Bizim kullandığımız Review Board da buna benzer şekilde çalışıyor)

  • Save

  • en sonunda Submit'e tıklamayı UNUTMAMAK

  • ek olarak, bir önceki ekranın altındaki Positive (uygundur), Neutral (orta şekerli), Negative (uygun değildir)'lerden de birisini seçmek

Ali

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