[Öncelikle not: Ben her sorunun kendi küçük konusu olmasından yanayım. Çünkü bu forumlara ileride de insanlar gelecek ve arayarak buldukları konular içinde, işlerine yarayanı başlığından tanıyacaklar.]
Derleyici, 'ı='ı'' diye tanımlanan değişkenin, kullanıldığı ortam içinde hiç değiştirilmediğini görürse, sanki hiç tanımlanmamış ve her yerde sabit olarak ''ı'' yazılmış gibi derler. Bunlar derleyicilerin sıradan işlerindendir; hem programcılar bu konuları derleyici kadar iyi bilemezler, hem de daha üst düzey kavramlarla düşünmeleri daha yararlıdır.
Evet, sanki C bilgisi yararlı olacak gibi geliyor... Öğrenilen bazı şeyleri sonradan unutmak gerekir; örneğin C'deki fonksiyondan hata döndürmek yerine, D'de hata atmak (throw exception)...
Evet, invariant'ın yerine artık immutable kullanılacak; ama invariant da hâlâ destekleniyor. Bir başka deyişle, "invariant deprecated" oldu; yani ileride bir zamanda desteklenmeyebilir.
std.date içinde kodun harcadığı süreyi ölçen benchmark diye bir şablon varmış:
import std.stdio;
import std.date;
void main()
{
writeln("birinci: ", benchmark!(birinci_yöntem)(10_000_000));
writeln("birinci: ", benchmark!(ikinci_yöntem)(10_000_000));
}
int birinci_yöntem()
{
int a = 42;
a %= 7;
return a;
}
int ikinci_yöntem()
{
int a = 42;
int bölüm = a / 7;
int kalan = a - bölüm * 7;
return kalan;
}
Geri kalan soruların cevapları çok uzun olabilir. Bence bunları Ders Arası bölümüne ayrı ayrı yazarsak, herkes küçük örneklerle anlatır. D.ershane de yavaş yavaş daha ayrıntılısını...
enum: Değerlerinin isimleri olan bir tamsayılar kümesi tanımlar (C'deki kavramla aynı, ama yazımı farklı)
version: Bulunulan ortam ve programın kendi sürümüne göre davranmasına yardım ediyor
size_t: C'deki gibi, o ortamın büyüklük ifade etmeye uygun türü. Örneğin dosya uzunluğu için 'ulong''un eşdeğeri olabilir
cast: Otomatik olarak dönüşemeyecek yerde zorla tür dönüştürmek (C'de ve C++'da da olan bir kavram)
new: Nesne hayata geçiriyor (C++ ile aynı)
in, out, body: Sözleşmeli programlama (contract programming) fonksiyona girildiğinde (in) ve çıkıldığında (out) çalıştırılacak kodları (assert'leri) barındırıyor. O durumda body de fonksiyonun asıl kodları oluyor.
throw: hata (exception) atıyor (C++ ile aynı)
foreach: for döngüsünün daha raconlu olanı :) (C++'da başlığında for_each olarak var; ama D'ninki yapılacak işi yani isimsiz fonksiyon olarak da alabiliyor)
scope: Normalde yaşamları çöp toplayıcı tarafından sonlandırılan nesneyi hemen bu kapsamdan çıkılırken sonlandırıyor (C++'da her nesne böyledir)
Gerisini bilmiyorum. :)
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]