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