特徴

・(特筆)言語仕様の安定感なし(爆)。コロコロ仕様が変わる。MLに英語で無責任なこと書いて投稿すると、仕様に取り入れられてビックリしたりする。

・既存のC言語のライブラリはほぼそのままリンク。

D is designed to fit comfortably with a C compiler for the target system. D makes up for not having its own VM by relying on the target environment's C runtime library. It would be senseless to attempt to port to D or write D wrappers for the vast array of C APIs available. How much easier it is to just call them directly.

http://www.digitalmars.com/d/interface.html

(D言語は、C言語のコンパイラとフィットするようデザインされている。D言語専用 のVMは使わない。target environment の C runtime library に rely する。
C言語で書かれた多くのAPIルーチンをD言語にポートしたり、D言語用のwrappersを書くなどということは意味がない(would be senseles)。 それらを直利用できる(just call them directly)というのはなんとすばらしい(easier)ことか!)

・したがって、printf()だのそのあたりはそのまま。
・可変長配列が自由。つまり「JAVAを越えたコンパイル言語なり」。これはまた、可変長文字列が自由に使えるということを意味する。

##げげ、はてなの仕様で、[と]が見えなかったりする。エスケープできるのか?

char[] str;

・配列結合演算子 ~ 。これは、つまり可変長文字列の結合ができる(コンパイラ型だよ、繰り返すけど)ということを意味する。

char[] str,str1,str2;

str = str1 ~ str2;

連想配列が使える。下記サンプルのようなウルトラな型宣言ができる。

char[char [] ] assoc;

assoc["hoge"] = "bohe";

もちろん、int[char [ \]\] assoc_i; とかも可(keyを文字列、valueを整数にする連想配列だね)。
#[のエスケープができない。はてなの仕様(涙)。

ここまで書いたらついでに、

foreach(char[] val; assoc){
puts(val);
}

とすれば、すべてのvalueが取り出せる。valのところを2個書けば、1個目がkeyで2個目がvalue

foreach(char[[\]\] key, char[[\]\] val; assoc){
puts(key);
}

#[のエスケープができない。はてなの仕様(涙)。

もちろん、(通常の)配列で取り出すメソッドもある(.keysと.values)。
こんな感じ↓

char bs = assoc.values;
a = join(bs, "::") ;
puts(a);

(charはご想像のとおり、「文字列の(通常)配列」)



ねーもうこれだけでなんか書いてみたくならない?
で、もちろん

・クラスに関する機能満載。ガーベジコレクションは自動。もちろんプログラムからトリガーを与えるも可。関数内に関数が定義できるから無駄なpubメンバー不要とかとか。