
Tanıtım
D, Walter Bright tarafından C++'dan türetilmiş üst düzey bir sistem programlama dilidir. Büyük C++ ustalarından Andrei Alexandrescu'nun Neden D isimli makalesi tanıtıcı bilgiler verir.
Kod Örnekleri
Girilen iki sayıyı toplayan örnek kod;
import std.stdio;
import std.cstream;
 
void toplama()
{
	int data1;
	int data2;
	int data3;
	writeln("lutfen  1. sayiyi gir");
	din.readf(&data1);
	writeln("lutfen 2.sayıyı gir");
	din.readf(&data2);
	writeln("sayilarin toplami",data3=data1+data2);
	writeln("cikis icin  bir harf yaz entera bas");
	din.readf(&data1);
}
 
void main()
{
	toplama();
}
Klasik "merhaba dünya!" kodu;
import std.stdio;
void main()
{
    writeln("Merhaba dünya!");
}
Türkçe Harfler
D'nin en güzel taraflarından birisi, kaynak kodlarda Unicode karakterlerin de kullanılabilmesi. UTF-8 Olarak kaydetmeniz yeterli.
import std.stdio;
void main()
{
    Türkçe_harf_dene();
}
void Türkçe_harf_dene()
{
    writeln("ğüşiöçıĞÜŞİÖÇI");
}
Aralıklar ve UFCS
D'de eleman erişimi aralık soyutlaması ile sağlanır. Aşağıdaki program sonsuz bir FibonacciSerisi aralığı tanımlamakta ve onu Phobos algoritması take() ile kullanarak yalnızca ilk 10 değeri yazdırmaktadır:
import std.stdio;
import std.range;
struct FibonacciSerisi
{
    int baştaki = 0;
    int sonraki = 1;
    enum empty = false;
    int front() const @property
    {
        return baştaki;
    }
    void popFront()
    {
        int ikiSonraki = baştaki + sonraki;
        baştaki = sonraki;
        sonraki = ikiSonraki;
    }
}
void main()
{
    FibonacciSerisi().take(10).writeln();
    /*
     * Yukarıdaki satırda UFCS (uniform function call syntax)
     * olanağının yararını görüyoruz. Aynı satır daha
     * alışılmış işlev çağrısı söz dizimi ile de
     * işletilebilirdi:
     *
     *  writeln(take(FibonacciSerisi(), 10));
     */
}
Çıktısı:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
İç İşlevler ve İsimsiz İşlevler
İşlevler başka işlevlerin içerisinde tanımlanabilirler. Hatta, isimsiz olarak ifadeler içerisinde bile tanımlanabilirler. (lambda functions, function literals, veya delegates)
import std.stdio;
void main()
{
    /*
     * Örnek olsun diye bir iç işlev kullanılıyor; onun yerine
     * serbest işlev da olurdu.
     *
     * Bu işlevin üç parametresi:
     *
     * baş:   hesaplanacak ilk değer
     * son:   hesaplanacak son değerden bir sonrası
     * hesap: parametre olarak tek bir int alan ve int
     *        döndüren bir temsilci
     */
    void içİşlev(int baş, int son, int delegate(int) hesap)
    {
        foreach (i; baş..son) {
            /* Parametre olarak verilen fonksiyonu kullanarak
             * bir hesap yapıyoruz*/
            immutable sonuç = hesap(i);
            writefln("%s: %s", i, sonuç);
        }
    }
    writeln("kareler:");
    /*
     * Yukarıdaki iç işlevin burada isimsiz bir işlev ile
     * çağrılmakta olduğunu görüyoruz.
     *
     * Burada üçüncü parametre bir 'işlev hazır değeridir'
     * (lambda function). Parametre olarak gönderilen işlevi
     * hemen ifadenin içinde tanımlıyoruz.
     *
     * Parametre almayan bir fonksiyon sabiti olsa daha da
     * kısa olarak yazılabilirdi:
     *
     *  içİşlev(3, 10, { return 5; } );
     */
    içİşlev(3, 10, (int sayı){ return sayı * sayı; } );
    writeln("iki katlar:");
    /* Bu çağrı ise D'nin => söz diziminden yararlanıyor. */
    içİşlev(1, 7, sayı => sayı * 2);
}
Çıktısı:
kareler:
3: 9
4: 16
5: 25
6: 36
7: 49
8: 64
9: 81
iki katlar:
1: 2
2: 4
3: 6
4: 8
5: 10
6: 12
  

