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)
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