D言語

ライブラリの作り方が何となく分かってきたかも

配列のライブラリが全然ないので試しにuniq()作ってみた。 とりあえずは動く。 T[] uniq(T)(T[] ary){ T[] tmp; int j; tmp.length = ary.length; tmp[0] = ary[0]; foreach(int i, val; ary){ if(i == 0 || tmp[i-1] != val){ tmp[j] = val; j++; continue;…

D言語関係のソースの取得方法

ここでD言語のライブラリとかが開発・管理されている。 バージョン管理はSubversionで管理されている。 トップページにはMercurialとgitもサポートしていると書いてある。 http://www.dsource.org/ とりあえずSubversionでの取得方法が分かったのでメモ。 xx…

D言語のクロスコンパイラってあるかな

D言語であと気になるのはクロスコンパイラの存在。 本家から ××というCPU向けの自作のDコンパイラを書くにはどうしたらよいですか? Burton Radons が バックエンド を公開しています。参考となるでしょう。 ということは、基本的にはまだ公式のクロスコンパ…

D言語のクラスは閉じている?

以下のようなコードをコンパイルするとエラーになる。 たぶんクラスは閉じている。 class Hoge{ void hoge(){writelfn("aaaa");}; } class Hoge{ void hoge(){writelfn("bbbb");}; } Rubyで上記と同等のコードだとこんなかんじ。 これで問題なく動作する。 c…

スクリプト形式での実行はコンパイルしている

っぽい。 dmd -runで実行中にlsしたら、コンパイル済みのファイルがあった。 そして実行が終わると、実行ファイルが削除されていた。 Rubyみたいに実際のシェルスクリプトじゃないのね。 上で書いたrdmdにも「擬似シェルスクリプト」ってあるし。 もしかして…

フィボナッチで速度調査2

昨日の続き。 haru-sさんからコメントをもらったので試してみた。 スクリプト形式での実行はキャッシュされませんでしたっけ? $ time ./fib.d 50 real 2m53.168s user 2m52.727s sys 0m0.028s 4$ time ./fib.d 50 real 2m52.568s user 2m52.279s sys 0m0.04…

フィボナッチで速度調査

フィボナッチで調査。 C言語とD言語で比較してみる。 ソースはfib()関数だけならば同じ。 int fib(int n) { if (n == 1 || n == 2){ return 1; } else{ return fib(n-1) + fib(n-2); } } C言語(gcc) $ time ./fib 50 real 3m11.824s user 3m11.512s sys 0m0.…

ひさしぶりにさわり出した

2.0にもなってしばらく経つしそろそろいいかなと思って調べた。 Linux環境前提で。 コンパイラは2つある。DMDとGDC。 DMDは本家のコンパイラ。Shellスクリプト形式でコンパイルしなくても動かせるのが便利。 DMDのダウンロードはここから。 Ubuntuならばdeb…