ネイティブ言語でありながら、JavaやC#のような特徴をもち、 かつスクリプト言語のような性質をもつライブラリをもっており、 高速CGIを簡単に書くことが可能です。
用は改行を文字列定義に含めることができるということ。
printf(`content-type: text/html hello world!`);
と書ける。
Perl等で作成されている1台のサーバで運用しているようなケースで、 チャットやゲームなどマシンパワーを食うCGIを作る際や、巨大掲示板を作成する場合 起動の速いCやC++が使われますが、Dもネイティブ言語なので同様に高速なCGIを書くことができます。
文字列操作の多いCGIのプログラムに正規表現があると非常に便利です。 D言語では標準ライブラリとして正規表現を実装しているのでわざわざ正規表現ライブラリを探してくる必要はありません。
正規表現を用いる場合にエスケープシーケンスを使わない文字列表現があるので、"\\\\"を`\\`と書けエスケープシーケンスに変換する余計な頭をつかうことなく正規表現を書くことができます。
split,join,replace等スクリプティング言語並の簡単に用いることができる関数群(std.string)が用意されています。
正規表現や、簡単で高機能なライブラリはスクリプト言語で書くような感覚でCGIを書くことが可能です。そのため、高速な処理を必要としないような大きなアプリケーションにも対応できます。コンパイル速度が速いのもスクリプト言語に近いといえる要因でしょう。
例
char[][char[]] hash; hash["c"]="1ccc"; hash["a"]="2aaa"; hash["b"]="3bbb"; hash["d"]="4ddd"; foreach(char[] tmp;hash.sort){ printf("%.*s\n",tmp); }
出力
2aaa 3bbb 1ccc 4ddd
プリプロセッサの排除等によりコンパイルが高速です。ですから、コンパイルする手間はかかりますが、時間待ちのストレスを感じずに作業を行うことが可能です。
2chやニュースグループで話題になっていたのですが、できちゃいます。隠し機能的ですが。 私は英語が苦手なので詳しいことは、わからーん。
JavaやC#同様ガーベジコレクタが内蔵されているのでメモリ管理がずいぶんと楽になります。
高負荷のCGIを作成するのにはネイティブ言語を使われることがあります。 スクリプト言語的な側面をもつので、仕様が大きなプログラムを書くことが可能となります。
ほとんど、Dで書かれたCGIはないので、作ればD言語界で有名になれる。
しかも、作ったものは高速で動作する。ウマー。
例
{ auto class lock = new Lock("lockfile"); char file = cast(char[])read("bbs.txt"); ロック時処理内容。 write("bbs.txt",dat); }
といった風に書くと、ブロック内ではロックがかかるようなライブラリを考えております。