Document

はじめての
initial D
2008/03/01 D-BOF
k.inaba
http://www.kmonos.net/
軽く自己紹介
 k.inaba (稲葉 一浩)
 日本語訳 「プログラミング言語D」
 解説サイト 「わかったつもりになるD言語」
 Dで書いて公開してるアプリ
 Diki
 YukiWikiMini クローン in D
 QBga32.dll
 zlib と libbzip2 を使った圧縮書庫の展開
ってどんな言語?
一言で言うと…
変化の激しい言語
0.148
0.166
1.005
0.147
突然2.000
正規表現
lazy
文字列mixin
const/invariant
正規表現
マッチ演算子
0.124
マッチ演算子
廃止
1.006
static if
0.89
CTFE
0.174
0.57 mixin
tupleof
0.40
0.148
関数のネスト
テンプレー
2.007
scope文
0.126
ト
クロージャ
内部クラス
0.15
0.99の次が
0.100だった!
モジュール
0.71
0.43プロパティ
0.37 auto
(現scope)
演算子
オーバーロード
グラフにすると
 そんな感じでした
まとめ
今日のDは
明日のDではない
今日の
言語
特徴1
 見た目は C や Java 系統
DでもCでも
動くコード
int main()
{
int c = 1;
printf(“it’s %c code”,‘c’/+c++/+1);
return 0;
}
特徴2
 ネイティブコンパイル
 速い
 DLLとか何も考えずに作れる
コンパイルして
dmd hello.d
…
./hello
Hello, D-BOF!
実行
特徴3
 でもスクリプト言語っぽくも使えるよ
#!
ガベコレ
#!/usr/local/bin/rdmd
import std.regexp;
void main()
{
int[string] wordCount;
…
正規表
現
連想配列
(ハッ
シュ)
特徴4
 コンパイル時 eval !
 いろいろ柔軟です
Tuple!(real, “x”, real, “y”) pt;
pt.x = 3.14;
pt.y = 1592;
文字列から
その名前の
フィールドを持つ
クラスを生成
そのた特徴
 オブジェクト指向っぽい機能
 普通に
 クラス
 インターフェイス
 ミックスイン
class Hoge {
mixin Signal!(string);
 関数型っぽい機能
 普通に
 クロージャ
 テンプレート
 微妙に遅延評価
Observerパターンを
実装した
メソッドパッケージ
void something()
{ emit(“event!!”); }
}
Hoge h = new Hoge;
h.connect(&obsvr.watch);
end