1 名前:デフォルトの名無しさん [2008/04/14(月) 15:16:22 ] プログラミング言語 D (D Programming Language) について語るスレッドです。 過去スレは >>2 ■本家 ttp://www.digitalmars.com/d/ ttp://www.kmonos.net/alang/d/ (和訳) ■コンパイラ ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家) ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド) ■参考URL ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究) ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF) ttp://dsource.org/ (dsource) ttp://tinyurl.com/3da5oa (C/C++に疲れた人のD言語) ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語) ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか) ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座) ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画) ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games) ■ IDE ttp://dronten.googlepages.com/dscite (DSciTE) ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks) ttp://www.dprogramming.com/entice.php (Entice Designer) ttp://www.dsource.org/projects/descent (Descent) ttp://www.dsource.org/projects/poseidon (Poseidon)
862 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 02:17:44 ] <俺:妄想> int a; ref(int) b = a; // 型コンストラクタ ref(int) func(ref int p) { // 参照渡し・参照戻し return p; } auto c = func(a); // is(typeof(c) == ref(int)) </俺:妄想>
863 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 02:18:38 ] htodをもう少しどうにかしてほしいな。 手直し箇所が多すぎて、気軽にCのライブラリを使いたいと思えない。
864 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 04:31:45 ] Tangoユーザの方0.99.7はどうよ?
865 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 04:36:28 ] >>848-849 ttp://f17.aaa.livedoor.jp/~labamba/?BugTrack とりあえず張っておくからw
866 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 05:14:19 ] >865 まかせた
867 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 06:19:14 ] >>864 とりあえずなんかMemory.diでエラーが出る。 ちょっとソースのぞいてみたらなんか明らかにおかしいところがあった 130: enum BlkAttr; : uint 131: {
868 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 08:29:18 ] まったくDの開発陣は・・・テスト自動化しろよな せっかく言語がunittestとかDbCとか用意してるのに全然活用してないじゃん うぉるたんがたまにテスト通さないのは破壊的な変更しまくるからだろうけど
869 名前:851 mailto:sage [2008/07/27(日) 12:55:38 ] いろいろな意見ありがとうございます とりあえず、更新を待ってwktkする言語だというのは伝わってきた 面白そうなので少し触ってみようと思います
870 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 15:43:10 ] もし、うぉるたんが死んだり、引退したりしたら、Dも終わるのか? うぉるたんの跡を継ごうっていう人は出てくるのだろうか。
871 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 15:46:19 ] きっとD++がでるよ。
872 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 16:18:50 ] >>868 激しく同意。単体テスト用意しれと思うなぁ。 復帰テストはしているようだけど膨大だからかなりの時間かかってそうだし。
873 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 16:23:25 ] 単体テスト以前にコンパイルしてないんじゃ…
874 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:26:32 ] >>862 それは static int a;や int* a;と似たような宣言で ref int b; がスマートな気がする その場合は a == c って事でいいのかな ポインタを使わないようにした代わりにこれがあればポインタの代用がかなり効きそうだな GC周りに矛盾が生じないなら入れてほしいな
875 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:45:10 ] >>874 int* a; はどっちかっていうと、 const int a; // constは変数を修飾 よりは const(int) a; // constは型を修飾 に近いんじゃない? それで、refは変数の情報な気がするから、ref(T)はいらないと思う。
876 名前:デフォルトの名無しさん [2008/07/27(日) 19:58:19 ] dmd2.017 + dsource.org->Win32api Bindings で、ウィンドウプロシジャの中から例外を投げて、 main関数に書いたcatchで拾おうとすると失敗するんだけど、こういうもんだっけ?
877 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 20:03:18 ] >>876 そういうもん。 コードの流れは、 メッセージループ -> | user32 | -> ウィンドウプロシージャ なんで、例外は戻ってこれない。
878 名前:876 [2008/07/27(日) 20:17:30 ] >>877 即レス感謝。 前いけてた気がしたのは漏れの気のせいでした。 べんきょんなったす。
879 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 20:55:11 ] えぇぇ、メッセージループの外のcatchで例外とれてるんだけどこれは何?
880 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 20:56:21 ] writeflnとかで自動的にtoString()が呼び出されると、メンバのアドレスが変っちゃうんだけどなぜ? 明示的に呼び出せば、そんなことにはならなかった アラインメントの問題?GCの問題?
881 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 21:01:53 ] >>880 コード付きで頼む
882 名前:880 mailto:sage [2008/07/27(日) 21:34:07 ] 値渡しされてるだけだったorz 正直すまんかった >>881 ちなみに双方向リンクリスト、つまりSTLのlistみたいなやつ
883 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 22:46:18 ] Dの頭のままC#でdelegate使おうとしたら いちいち宣言しなきゃいけないって面倒だなとおもた
884 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 22:49:31 ] >>883 ラムダ式でおk
885 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 23:03:16 ] C#3.0からFunc<,>とか使えるんじゃなかったっけ。
886 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 00:33:49 ] GTK On Dって名前にすれば GOD ってライブラリ名にできるのにそういう風にしないのは やはり向こうは日本と神の感覚が違うから気軽に使えないのかな
887 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 00:57:59 ] こういう場合onっていう言い方は正しいのか? あんまり聞かない気がする。
888 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 01:01:34 ] じゃ featuring だ
889 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 01:04:05 ] overとか
890 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 01:08:01 ] ならopponだ … oppon 〜は「…を〜と組み合わせて」という意味になる今作った単語
891 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 01:14:40 ] oppai なんでもできる証拠なの〜
892 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 01:28:19 ] GTK of D
893 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 02:01:32 ] Tango の 0.99.7 でバックスラッシュを含んだパスが蹴られるようになったけど、さすがに面倒だぜ。 import tango.io.Console; import tango.io.FileSystem; import Path = tango.io.Path; void main(char[][] args) { auto dir = Path.parse(FileSystem.toAbsolute(Path.standard(args[0]))).path; Cout(dir).newline; } 自分の実行ファイルのディレクトリのフルパスが欲しいとき、もうちょと短く書けないかな。
894 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 05:11:20 ] www.digitalmars.com/d/archives/digitalmars/D/dwt/ dwtのはずなのにアナウンス 中身はちゃんと別みたいだけど
895 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 16:00:33 ] std.openrjって、どうしてあるの?誰が使ってるの? というか、動かないんだけど
896 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 16:15:14 ] もうなくなるor/andなくなったんじゃなかったのか
897 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 17:49:37 ] >893 記述が長ったらしい代わりにバイナリが小さくなるのがTangoの芸風でしょ。 ちなみにPhobosなら import path; して dirname(rel2abs(args[0])) だ。
898 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 23:53:45 ] 1.0 と 2.0 の違いって何? C# の 1.0 と 2.0 ぐらいちがったりするの?
899 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:03:46 ] dmd1 致命的なバグが無い限り更新されない dmd2 前進的で素晴らしい変更によってソースを書き直す必要が出来る このスレを読む限りMは2を使った方がいいらしいぞ
900 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:10:10 ] 最近はライブラリも2に対応してるし、1を使う理由ってあんまない気がするなあ。 安定性求めるなら他の言語を当たったほうがいいだろうし。
901 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:20:34 ] DMDScriptが使いたいだけで1使ってます
902 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:26:29 ] 変更点そのものは、 www.kmonos.net/alang/d/2.0/features2.html に出てる。
903 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 02:02:27 ] >>900 喧嘩売られてるような気がするのは俺の気のせいだろうな 移行しない理由が聞きたいんだよな
904 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 02:04:10 ] 何が言いたいのかさっぱり理解できない
905 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 02:12:21 ] gdc(mingw)をうまくビルドできるならば 2.0に乗り換えてみたいところだがね。 エラーが回避できなくてあきらめた。
906 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 07:38:52 ] >>903 どう考えても気のせいです
907 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 07:39:36 ] >>902 popenだけはdmd1にも入れてほしい
908 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 09:38:02 ] ところでお前ら typeof(*this)って使ってるかな? クラス名とどっちがいい?
909 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 11:51:29 ] ジェネリックコードじゃなければクラス名の方がいい 時期尚早な過最適化は悪 by Effective C++ ?
910 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 11:57:08 ] TangoやDWTが1にしか対応してないから2使えない、って人もいるんじゃね。 >909 "premature optimization is the root of all evil." なら、出典はKnuth様 (1974年)。
911 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 12:46:20 ] 先進的な変更で言語がよくなってそれと同時に自分のコードがかっこよくなる この喜びが毎月のように得られるのはDくらい それが私がDを使う理由・・・信じて
912 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 14:28:09 ] static foreachまだなのかなあ。 そんな複雑な変更でもない気がするんだけど、 うぉるたんは他にやりたいことあるんだろうか。
913 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 16:13:48 ] DMDってテンプレート再帰でタプル作るとホントすごいメモリ喰うな…
914 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 00:59:01 ] D言語はアセンブリの夢を見るか
915 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 22:25:38 ] gc切って、delegateぶん回したらすんごいメモリをくう・・・ あたりまえかもしれんが、scopeとかで回避できんから すんごい困った
916 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 00:26:38 ] www.dsource.org/projects/blaze これのDemoすごいなあ
917 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 00:42:39 ] あ、これ俺も遊んだwww 結構楽しいんだよなこれ
918 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 01:49:17 ] PC初期に近いの面白さだよね。
919 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 02:24:57 ] 俺の1時間を奪う憎い奴だ
920 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 08:26:23 ] template Hoge(){ if(true){} } void f(){ mixin Hoge!() } なんでif使えないの〜泣
921 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 08:34:29 ] >>920 つ static if
922 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 11:35:46 ] template mixin は宣言しか書けないのね
923 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 12:43:23 ] Lisper C++er Der なんちゃって、えへへ
924 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 13:02:18 ] >923 PythonistaにならってDistaはどう? すくなくとも発音はしやすいよw
925 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 13:41:25 ] typeof(*this) opDot() { return *this; }
926 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 14:36:01 ] 痔主多? やDなぁそんなの
927 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 15:33:24 ] D Langer
928 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 16:08:02 ] グローバル変数をスレッド間で共有できないのをディフォルトにしよう、 という案を検討してるらしい。 bartoszmilewski.wordpress.com/2008/07/30/sharing-in-d/ これだと現行のコーディングとはスタイルが随分かわっちゃうけど、 マルチスレッドの安全性を考えたら良い案だと思う。
929 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 17:00:35 ] >>924 Dildo 発音しやすいよ
930 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 17:12:17 ] 1Der 2Der
931 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 17:17:02 ] 3ダー!!
932 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 17:32:21 ] 猪木?
933 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 18:00:29 ] >>928 むしろグローバル変数いらなくね? あと例えばプロパティはsynchronized付きになるとか(俺には善し悪しがよくわからんけど) これからのマルチコアの世界に向けて最適化していった方がいいのかも
934 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 18:17:45 ] locklessがもてはやされる時代に標準でsynchronized付きとか狂気の沙汰としか。
935 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 18:33:27 ] そういうもんか マルチスレッドプログラミングの安全性ももっとコンパイル時に保証できないのかな
936 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 22:24:48 ] 各スレッドが触る変数を確定できるかどうかが勝負という感じかなあ。 pureなら触る変数はプロシージャからのスタックの積み方で決まるから、 そのへんはもう少し楽になる気がする
937 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 00:14:52 ] Martianじゃないか?いろんな意味で。
938 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 00:24:55 ] static typeof(this) opCall(T...)(T args) { return new typeof(this)(args); } newすら書くのが面倒。そんなあなたに
939 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 00:26:02 ] pure判定が通るなら原則として大丈夫だと思う。副作用がないということだし。 もうすこし緩めるとスレッドローカル変数しか触らなければ安全だと思うが、これは未実装。
940 名前:924=928 mailto:sage [2008/08/01(金) 01:51:55 ] >937 ああ、そっちの方が全然いいですね。 ところでGtkDのRC1が8月1日リリース予定なわけだがwktk
941 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 15:00:45 ] こうか template Constructor{ >>938 } class A{ mixin Constructor; } void main(){ A x = A(); } そういえばstructとclassをコンパチブルにできるのかなー
942 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 18:37:17 ] 構造体のコンストラクタってまだないの?
943 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 19:04:45 ] >>942 ずっと無いと思うよ? 「構造体はPODであるべき」って頑なになってるから。 static opCallで代用するしかないんじゃね
944 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 19:20:33 ] バグかなバグかな? --- main.d --- import func; void main(){ line(); } --- fund.d --- void line(uint lineNum = __LINE__){ } $ dmd main.d func.d __LINE__ Internal error: e2ir.c 612
945 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 19:22:41 ] いけね、ファイルを分けなくても再現した。 void line(uint lineNum = __LINE__){} void main(){ line(); }
946 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 22:10:27 ] 2007年のカンファレンスで構造体にコンストラクタつけるとかなんとか言ってなかったか? 俺の記憶違いかな?
947 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 23:16:19 ] リテラルあるしなあ……。
948 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 01:59:50 ] gdcのsvnで手に入る一番新しいやつ。 std/c/windows/com.d interface IUnknown { HRESULT QueryInterface(IID* riid, void** pvObject); ULONG AddRef(); ULONG Release(); } ではなくて、 interface IUnknown { static HRESULT QueryInterface(IID* riid, void** pvObject); static ULONG AddRef(); static ULONG Release(); } が正しいような気がする。 後者じゃないとビルドできないし。
949 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 14:25:36 ] >>948 んなばかなあ
950 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 14:35:23 ] >>948 何で前者でエラーになるのか知らないけど、staticは無いと断言できる。
951 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 14:44:56 ] 大体staticで何をカウントしてるんだ
952 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 23:13:01 ] comが何なのか良く知らないので、 エラー回避のためにstaticにしたんだが、 やっぱりおかしいのか。 libphobos/std/c/windows/com.d:240: error: '*LTHUNK0' aliased to undefined symbol '_D3std1c7windows3com9ComObject14QueryInterfaceMWPS3std1c7windows3com4GUIDPPvZi' libphobos/std/c/windows/com.d:240: error: '*LTHUNK1' aliased to undefined symbol '_D3std1c7windows3com9ComObject6AddRefMWZk' libphobos/std/c/windows/com.d:240: error: '*LTHUNK2' aliased to undefined symbol '_D3std1c7windows3com9ComObject7ReleaseMWZk' みたいなエラーがでるんだが、 LTHUNK0なんてソースのどこにも出てこないし謎。 試しにいろいろいじって、たまたまstaticにしたらうまくいったという話。 まあ、comプログラミングなんかしないから、 別に通ればなんでもいいのだが。
953 名前:デフォルトの名無しさん [2008/08/03(日) 13:39:36 ] さっきちょっと思いついたんだけど変数の変更を一時的に禁止する様な機能ある? const(hoge, fuga) { // hoge, fugaは変更禁止 } // 変更OK
954 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 13:54:21 ] void main() { int hage = 42; (const typeof(hage) hage = hage) { writeln(hage); // 42 hage++; // error }(); } dirtyすぎる…
955 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 14:06:48 ] 最近ここで晒されるソースを見ても何がなんだかです。
956 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 14:17:12 ] >>953 pureとか予約語になってるんだし,要望したら入れてくれるんじゃね?
957 名前:953 [2008/08/03(日) 14:41:00 ] >>954 バグ回避目的なのに手段が真逆に向かっている様なw
958 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 15:09:29 ] なんか、バグが云々って言ってたので、 よくわかりませんが、つたない英語で投稿してみました。 www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.bugs&article_id=14747 適当なので、怒られてたり、意思が通じてなかったりしたら すいませーんっと。
959 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 15:14:46 ] ああ、bugzillaに投稿とかのほうがよかったんだろうなぁとか 思ったけど、いいや。やる気ないので、スマヌです。
960 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 15:16:56 ] これじゃ、何かいてるかわからないな。 >846 >847 >848 ここらへんの話です。 暑くて駄目だwww
961 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:13:57 ] 一時変数の名前はhigeを使ってください
962 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:43:12 ] >>953 既出みたいなもんだけど関数のconst引数じゃダメなの? class A{const void pp(){}} void f(const A a){ a.pp; } void main(){ A a = new A; f(a); }
963 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:45:56 ] 値型でもこう int i=1; g(i); void g(const ref int i){ i++; // error }
964 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:47:26 ] sakuraiさんが久しぶりにDの話題してるの見たw