September 19, 2010

Alıntı:

>

Tam ayrılmamış olabilirler. :) Andrei acil bir hareketle sanki gönüllerini almayı başardı. :) Göreceğiz...

Şaşırmadım. Anladığım kadarıyla Andrei qt'yi çok önemsiyor. Bence bu D için hayırlı bir şey olur. D geliştiricileride durumu görmüş olur. Beklemeye artık takatı olmayan sabırsız D topluluğu :-P

Alıntı:

>

İşte böyle. :/ Yeni öğrenenlerin işini güçleştiriyor. Onun için de birisi kullanışlı bir kaç işlev yazdığını söylemişti. Sırf yeni öğrenenler için eklemeyi düşünürlerse yararlı olacak. Şöyle bir şey:

auto yaş = oku!int("Yaşınız?");

oku işlevi girişten bir int okuyacak ve onu döndürecek.

Aynısını düşünüyordum :-)

Sanırım en doğrusu döngü ile karakter karakter okunması. Bunun için phobosun std.stdio modülünün bir işlevini göremedim ben.

Alıntı:

>

Bence Phobos çok iyi bir kütüphane olma yolunda.

Bence phobosun sadece D ile yazılan modülleri çok iyi. Ayrıca okunabilirliği yüksek. Biraz hatalı olabiliyor ancak çok çabuk kapatabiliyorlar. Modüllerde hala tamamlanmamış üyeleri var ama hızla tamamlanıyor. Ancak C'nin işlevinden yamalanmış işlevler çok sorunlu ve çabuk hatalarını düzeltemiyorlar.

Alıntı:

>

Her dilde herşey yapılabileceği için

Ben en çok bunu merak ediyorum. Örneğin hiç bir kütüphane kullanmadan nasıl D için bir girişten karakter okuyan bir işlev yapılabilir? Yada C ile. Çok merak ediyorum.

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

September 19, 2010

Alıntı (Kadir Can):

>

Sanıyorum ki bu büyük bir bug.

Bu aslında çok ilginç bir konu. Bir çok ayrıntıyla ilgisi var. :)

Ne yapmaya çalışıyoruz? Bir giriş akımından belirli bir Unicode kodlamasına uyan bir karakter çekmeye çalışıyoruz.

O kadarı kolay, ama bu gerçekten mümkün mü?

Örneğin benim açtığım bir hata vardı: din.readf "false" veya "true"yu bool değer olarak okuyamıyordu: http://d.puremagic.com/issues/show_bug.cgi?id=3223 Mantıklı bir istek: eğer bool değerler "false" ve "true" olarak yazdırılıyorlarsa, bunun tersi de bulunmalı.

Ama bu aslında int'ler için bile geçerli değil: çıkışa art arda 4 ve 2 yazdırsak "42" olarak yazılıyor; ama girişte "42" varken iki tane int okumaya kalksak birincisi 42 oluyor, ikincisi ise girişte karakter belirene kadar bekliyor. Yani aslında aradığımız simetri giriş çıkış işlemlerinde doğal olarak yok.

Tekrar "false" ve "true"ya dönersek, diyelim girişte "truva" diye karakterler var. bool bir değer okumak istediğimizde "tru"nun okunacağını ama sonra 'v'nin beğenilmeyeceğini düşünürüz. Bu durumda bir hata atılmalıdır (int beklendiğinde "abc" geldiğinde atılıyor.).

Hata atıldığı zaman, o ana kadar okunmuş "tru"ya ne olmalıdır? Giriş akımından çekilmiş ve kayıp edilmiş mi olmalıdır, yoksa daha sonraki bir işlemde girişten string okumak istendiğinde "truva" okunsun diye elde bekletilmeli midir?

Onu olabilmesi için stdin akımının kendisine ait bir ara belleğinin bulunması gerekir. Çünkü standart giriş, programın dış dünyasına bağlı bir akımdır. Örneğin konsolda çalışan bir programa giriş karakterleri konsol ortamı tarafından teker teker verilir. Konsola "bu karakterleri şimdilik beğenmedik, lütfen geri al" diyemiyoruz. O yüzden stdin nesnesi her aldığı karakteri bir ara bellekte bekletmek durumundadır. O ara belleğin büyüklüğü ne kadar olmalıdır? "false"tan anlaşıldığına göre, bool olarak kabul edilemeyen bir karakter dizisi geldiğini en fazla 5 karakter okuduktan sonra anlayabiliyoruz. Yani bu ara bellek 5 karakterlik olabilir.

Ama bu 5 değeri bool için geçerli. Kendi türlerimizi okurken bir hata atılsa? Belki de kendi türümüzün nesnesi bin karakter okuduktan sonra mutsuz oluyordur. O bin karakter de saklanmalı mıdır?

Bunların yanıtları stdin'in ne tür bir aralık olarak kabul edildiği ile ilgili. Bir giriş aralığı mı (input range), yoksa bir ilerleme aralığı mı (forward range)?

Bunların yanıtlarını ben de bilmiyorum. Bunları yalnızca basit olması gereken bu konunun aslında bazı karışıklıklar içereceğini göstermek için yazdım.

Girişten char, wchar, ve dchar okumanın da aslında bu konulara dokunduğunu farkettim. Bunun nedeni, bu üç türün aslında bir kodlama ile ilgili olmaları. Her kod dizisi geçerli bir Unicode karakterine karşılık gelmiyor olabilir. O yüzden, "tru" örneğinde gördüğümüz gibi, o ana kadar okunanların bir ara bellekte tutulması gerekebilir.

İşte böyle. :/ Yeni öğrenenlerin işini güçleştiriyor. Onun için de birisi kullanışlı bir kaç işlev yazdığını söylemişti. Sırf yeni öğrenenler için eklemeyi düşünürlerse yararlı olacak. Şöyle bir şey:

auto yaş = oku!int("Yaşınız?");

'oku' işlevi girişten bir int okuyacak ve onu döndürecek.

Ali

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

September 19, 2010

Alıntı (canalpay:1284831992):

>

C'den alınmış ve daha çok hata katılmış phobos :-)

C kütüphaneleriyle başladığı herhalde doğrudur ama Phobos'ta C ile yapılamayacak çok olanak var. (Her dilde herşey yapılabileceği için "C'de çok okunaksız veya güçlükle yapılabilecek" demek daha doğru olur. :))

Alıntı:

>

Düzelebileceğinide sanmıyorum. Çünkü zamanında çok karışık yazmışlar. std.array gibi modüller iyi yazılsada daha önce yazılmış modüller çok karışık yazılmış ve geliştiriciler bile anlamıyor büyük ihtimalle. :-)

Artık çok sayıda geliştiricisi var. Sorun, bu insanların hayatlarını başka yerlerde çalışarak kazanmalarının gerekiyor olması. (Andrei Facebook'ta çalışıyor.)

Alıntı:

>

Aslında phobos ya da direk C kütüphanesini yamalayarak küçük basit bir giriş çıkış kütüphanesi yazılabilir. Ya da artık projelerde direk C kütüphanesini mi kullansak?

Çok yetersiz olur. C, üst düzey kavramları ifade edemiyor. C++ o konuda C'den çok daha iyi ama D'nin yanında o da çok yetersiz kalıyor.

Bence Phobos çok iyi bir kütüphane olma yolunda. En azından benim yanılgım, herşeyin kitap çıktıktan sonra hemen düzeleceğini sanmak oldu.

Ali

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

September 19, 2010

Alıntı (Kadir Can):

>

Yanlış anlamayın dostlarım ama sanırım D her sürümünde bir karanlığa doğru gidiyor.

Ben öyle görmüyorum. Her sürümde daha hatasız ve kitaba daha uygun olarak geliyor. (Andrei'nin kitabının dilin tanımına tam uyacağı söylenmişti; onun için kitabın anıyorum. :))

Alıntı:

>

QtD'ciler de ayrıldı.

Tam ayrılmamış olabilirler. :) Andrei acil bir hareketle sanki gönüllerini almayı başardı. :) Göreceğiz...

Ali

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

September 19, 2010

Alıntı (canalpay):

>

Alıntı:

>

Her dilde herşey yapılabileceği için

Ben en çok bunu merak ediyorum. Örneğin hiç bir kütüphane kullanmadan nasıl D için bir girişten karakter okuyan bir işlev yapılabilir? Yada C ile. Çok merak ediyorum.

O yapılamaz. :)

Bunun nedeni, programın giriş ve çıkışının programın bizim yazdığımız parçası tarafından değil, bizim yazdığımız parçayı başlatan çalışma katmanı (D runtime (veya C runtime)) tarafından hallediliyor olması.

Standart giriş ve çıkış denen akımlar, bizim programımıza bir şekilde bağlanarak geliyorlar. Onlarla iletişim de o bağlantılardan anlayan bir katman tarafından halledilebilir. Onu sunan kütüphaneler kullanmak zorundayız.

Aslında bu konularda çok deneyimli değilim ama benim bildiğim öyle. :)

Ali

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

September 20, 2010

Bence yine de bir anti-bug sürümü gerekli.

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

September 23, 2010

readf ile ilgili sorularımı sordum ve ilk önce doğru olduğunu söylediler. Daha sonrada:

"It appears that char a; readf("%s", &a); should work, but maybe it was forgotten. You may want to file a bug report."

dediler. Ama ben bu emin olamadığım sorunun hata olup olmadığından emin değilim. Ne yapmalıyım?

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

September 23, 2010

tamam yaptım. http://d.puremagic.com/issues/show_bug.cgi?id=4922

Pek uğraşmadan girdim ancak yeterli bilgi olduğunu sanıyorum.

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

September 23, 2010

Bence yine de hatayı kaydet:

http://d.puremagic.com/issues/

Hatanın CC alanına beni de acehreli olarak eklersen sevinirim.

Ali

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

September 23, 2010

Çok güzel. Teşekkürler.

Ali

Not: "readf doesn't work ..." gramer olarak daha doğru

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