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)
401 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:03:47 ] しっかりしたライブラリなら、 dsss build --doc でドキュメントが生成できるのな。知らなかったぜ。 dsss net install は未だに成功した試しがないんだがw
402 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 08:04:55 ] dmdとcandydocで作るのと一緒のやつだっけ? そういえばdmd -doc使ってないなあ プロファイラとコードカバレッジとユニットテストが dmdでできるのは重宝しているが
403 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 10:45:14 ] >>400 foreach (v; aa.keys.sort) {...} とかじゃ不足?
404 名前:403 mailto:sage [2008/06/09(月) 10:48:26 ] 微妙に間違えた。 キーで回すんだから foreach (k; aa.keys.sort) と書かなきゃ。
405 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:45:00 ] 値でソートしたり、値が一致したときにキーにフォールバックしたりしたいの。
406 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:03:57 ] >>404 まだ微妙じゃないのか? foreach (v, k; aa.keys.sort) じゃね? >>405 >フォールバック ちくしょう、おいらにゃ意味がわかんねぇ
407 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:01:16 ] >>406 書くならこうだろう。 foreach (i, k; aa.keys.sort)
408 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:19:56 ] 今無性にimport文でワイルドカード使いたい。Javaみたいに。ニュースグループではそんな無駄な 機能いらねぇよ派が多数だったみたいだけどな。Tango のライブラリとか細かすぎていちいち 書くの面倒になっちゃうよ。DFL みたいに all.d みたいなファイルを用意しておけば、まぁ 似たようなことはできそうなんだけど。
409 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:45:53 ] Tangoにもまとめてimportする用のモジュールあるじゃん。
410 名前:408 mailto:sage [2008/06/10(火) 03:40:56 ] …あ。tango.group なんてあるのね。>>409 のお陰で得した気分だ、ありがとう
411 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 04:09:13 ] 処理速度ってC++より早いのか?
412 名前:デフォルトの名無しさん [2008/06/11(水) 08:37:58 ] また馬鹿げた質問を 単純ループのベンチマークでもとって比べるか?w
413 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 08:49:25 ] 処理速度気にするなら単純なコードでコンパイルして逆汗して比較汁 コンパイラの出来も同時に判る 組み込みやってた知り合いはそれやってたらできたてのコンパイラのバグみつけた
414 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:00:11 ] string s = Format!("Arg %s = %s", "foo", 27); を実行しようとすると、 cannot implicitly convert expression ("Arg %s = %sfoo27") of type const(char[]) to invariant(char)[] て怒られた。 なんでstringで受けられないの? ってことと、あと文字列が連結されてるだけで置換されてない……。 公式のサンプル通りなんだけど、ドキュメント古くなってる? 俺がなんか変なことしてるのかな。
415 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:33:38 ] metastringsのソース見れば分かるけど返ってくるのはconst char[]なので, stringでは受けられないんじゃないかなぁ(実際はconst(const(char[]))かな). 使うときはいつもautoなので気にしてなかった. それと,Formatの中ではchar[]で分岐してるので, ここをconst char[]に修正しないとまともにフォーマットされない.
416 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:46:29 ] Formatはconst/invariant導入されてから壊れっぱなしだな。 めったに使わないから不自由はしてないけど
417 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:23:07 ] trunkにあるから書き換えてくれていいよ!
418 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 12:28:58 ] D言語楽しい!
419 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:41:53 ] さいきんBill Baxterさんが本家メイリングリストに出てこないなぁ。 お忙しいのか?
420 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:27:19 ] >>418 The old collection package will be deprecated prior to Tango 1.0. こういうところがだろ?wwわかります。
421 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:09:15 ] ttp://www.dsource.org/projects/tango/forums/topic/523 これか なんでいきなりそんなことになんのよw あまりにもbetaがbetaとして機能してねえw
422 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:11:20 ] D言語使いには勇者が多いw
423 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 14:05:08 ] linux版のThreadクラスって、処理が終わってもリソース開放しないのな Threadクラスはガベコレが見てるから、別クラスを作るわけにもいかないし phobos書き換えないと使えないってどんだけ std.fileもなんかおかしいし linux版ってもしかしてだれも使ってない? windowsから移ってきてみたら、びっくりだ
424 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:36:39 ] たまにはソースとか読んでみようと思ったのに、 コンパイラにくっついてるのってひょっとしてフロントエンドの部分だけ? コード生成とか最適化とかの部分はどっか別のところにある?
425 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:10:26 ] >>424 その辺はdmcと共有してて非公開だったと思う
426 名前:デフォルトの名無しさん [2008/06/13(金) 16:24:39 ] >>424 フロントエンド部分だけがGDC用に公開されてる。
427 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:58:39 ] ttp://www.dsource.org/ みれないようわーん
428 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 20:35:38 ] >>427 もう見える
429 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 02:14:13 ] dsource.org の鯖はあんまり栄養状態が良くないよな。鯖そのもの だけじゃなく、プロジェクトも abandoned なのが多いし。
430 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 02:34:32 ] windows やら unix やらばかりじゃなくて、 組み込みとかにも目を向けて欲しいんだが。
431 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 02:37:06 ] 組み込みでGCやなんやはオーバースペックじゃないか? まあ、最近は組み込みっていってもWindows動いてたりするけどさ。
432 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 02:41:09 ] 最近の言語では一番組み込みに適用できそうな予感 ある程度のスペックのあるターゲットになるだろうけど
433 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 07:51:10 ] >>429 終わってるプロジェクトとそうでないものを区別して欲しいな 最終更新日時でソートするだけでもいいけど
434 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 11:44:06 ] tango、現trunkにて、tango.util.logパッケージでも破壊的な変更が… いいぞ、もっとやれ(笑)
435 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:55:46 ] うぉるたんからして破壊的な変更大好きだし。
436 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:06:52 ] D好きはマゾですか
437 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:12:28 ] 破壊的な仕様変更は普及してない時期にしかできないw
438 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:27:41 ] つまりDはいつまでも破壊的に変更できるわけですね!
439 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:32:35 ] プロトタイプは一旦作ってソースを捨てるのが 正しい方法らしいからいいんじゃねw
440 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 20:10:22 ] >>439 金と時間に余裕がなきゃできないけどなw 一度やってみたいよ。
441 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 22:27:46 ] >>439 ,440 ありがとう、やってみる。
442 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:11:12 ] >>441 何をだろう・・・
443 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:26:51 ] >>441 はうぉるたん
444 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:35:24 ] TangoがDの命名規則に従う伏線とか…
445 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:45:37 ] >>443 やめてくれww
446 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:48:48 ] tango.text.Regex の正規表現のコンパイルの遅さに萌え
447 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:09:02 ] gdc on MinGWのビルドがうまくいかん。 2.x系が使いたいんだが、 最近のバイナリってどっかにないかな?
448 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:04:51 ] をるたんそろそろ更新をあたえてくれ〜
449 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:03:08 ] tango.text.Regexがdebugビルド不可なのは、何の意図なのだろうか
450 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:03:47 ] debugなんてのは臆病者のやることだ。
451 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:21:22 ] 臆病者と馬鹿者のどっちになるかってことだな。
452 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:54:06 ] うぉるたんやプロパティの+=はまだかいの
453 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:08:26 ] さっき食べたでしょ
454 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:50:05 ] C++のstd::vectorぽいことをしたいのですが 動的配列+phobosのalgorithmで頑張る? →push_backしたい。 →remove_if等が存在しないような? tangoのcollectionを使う? →sortやremove_ifをしたい場合、toArrayで配列にしないと無理? →stable_sortが存在しないような? いまいちこれだという方法が無い気がするのです。 なにか良いライブラリ等ありますでしょうか。
455 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:47:21 ] →push_backしたい。 int[] a; a ~= other; →remove_if等が存在しないような? 2.x系なら ttp://www.digitalmars.com/d/2.0/phobos/std_algorithm.html#inPlace int[] arr = [ 1, 2, 3, 4, 5 ]; // eliminate even elements auto r = eliminate!("(a & 1) == 0")(arr); assert(r == [ 1, 3, 5 ]); assert(arr == [ 1, 3, 5, 4, 5 ]); で無理かな?
456 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:30:55 ] Version D 2.015 Jun 17, 2008 PICマイコン対応…と夢想しかけた。
457 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:36:30 ] * Function templates can now deduce the return type if they are declared with auto. 戻り値型推論キター * Added Constraints to templates. どうせならconceptまで実装してくれよ。
458 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:44:30 ] (1) auto func(T)(){ return 1; } (2) auto func(){ return 1; } (1)は通るのに(2)は通らない。けち臭いなあ
459 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:57:25 ] auto func()(){ return 1; } でおk
460 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:58:50 ] ああ、テンプレートはパラメータなしでもよかったのか。 でも、ばっちいお…
461 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:29:31 ] 戻り値の型推論!! でもなんで無名関数とテンプレートだけなんだ * Added Constraints to templates. これは何かすげーなw
462 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:32:20 ] テンプレートの型推論のルーチンを 使い回すのが難しいコードになってるとか邪推。
463 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:51:41 ] 無名関数の戻り型推論って結構まえからできなかったっけ?
464 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:01:38 ] そだね 今回できるようになったと言ってるわけじゃないんだわ
465 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:14:16 ] auto f()(){ typeof(return) a; return a; } void main() { f(); } コンパイラしんじゃうよー
466 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 01:03:34 ] Constraintにキーワードifつかっちゃったのか。 なんか気持ち悪いな
467 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 01:37:43 ] 予約語はできるだけ増やさない、みたいな方針があるのかな。 前から結構使いまわしてるよね。
468 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:05:49 ] ちょっとlibpngが使いたいと思ってポートがあるかなと思って検索してみたら、 こんなスレがひっかかってちょっとワロタ D言語でエロゲーつくって ttp://pc11.2ch.net/test/read.cgi/gamedev/1091256780/
469 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:09:43 ] DからDirectXってそんなに面倒そうでもなさそうなんだがな・・・・・? Cとのインターフェースはあるんだから
470 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:12:49 ] すでに実例あり ttp://video.google.com/videoplay?docid=-3577027688253678001&q=D%E8%A8%80%E8%AA%9EBOF+2008-03-01&ei=mUFZSJScBobCwgO55s2IDg .hから.dにするときにマクロの展開だけが面倒
471 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:21:43 ] >>470 正真正銘プロの犯行に吹いたw
472 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:27:09 ] >>470 なんという勇者w DirectXなんてほとんど使ったことないが、 面白そうだからちょっといじってみるか
473 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:32:51 ] >>468 まったく人がいなくて吹いた。 SDL+OpenGLのほうがポーティング揃ってるし、DirectX使うより楽だとおも。 たしかゲーム用にラップしたライブラリあったし。 あとフリーゲームの『去人たち』って、エロじゃないけどノベルゲで、D言語で作ってたはず。 ただシステム糞重くてうわーって感じだったけど。
474 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 09:45:23 ] >>465 呼び出す側で古代C言語みたいにvoid型でキャストしよう。
475 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 12:14:53 ] DのIDLコンパイラとか誰か作ってないのかなあ
476 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:15:34 ] >>469 DirectXはCOMオブジェクトだから、ポーティングの仕方がCライブラリとはちょっとだけ違う。
477 名前:デフォルトの名無しさん mailto:構文上無理かね? [2008/06/19(木) 16:37:52 ] ここまで型を書かなくてよくなったら もういっそのこと無名関数テンプレートが欲しくなったんだがw auto dg = (T,U)(T t, U u){ return t+u; }; するとこうなって auto dg = (auto t, auto u){ return t+u; }; 最終的にはこうか?w auto dg = (t, u){ return t+u; }; これなんてマクロ?
478 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 16:40:21 ] つーか、macroキーワードが使える日が早く来ればそれでいいんだよ…
479 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 16:50:40 ] 無名関数テンプレートが欲しいのは分かるが、できるとしても alias (T,U)(T t, U u){ return t+u; } dg; が精一杯。
480 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 17:09:07 ] >>477 どうぞ。 auto dg = new class { auto opCall(T, U)(T t, U u) { return t + u; } };
481 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:27:30 ] writeln(typeid(typeof((int i){}))); 2.015でデリゲート型の引数が表示されないんだけど、前からだっけ?
482 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 21:08:46 ] >>470 この会社に入りたい
483 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:04:03 ] >>481 前からじゃない? ↓1.0 codepad.org/CREaEBun
484 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 02:58:03 ] なんでBufferedFileはデストラクタでcloseしないんだ とおもってソース見てみたら、そもそもデストラクタなかった。 どうなってんだよ。
485 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 03:26:35 ] > これはつまり、 デストラクタからはメンバオブジェクトを参照できないことを意味しています。 これがなければデストラクタも使い物になるというものの…
486 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 03:57:45 ] とりあえず必要だと思うのは、scopeメンバ変数だな。 コンストラクタで一回だけ初期化できて、オブジェクトがdeleteされるときに道ずれにdeleteするの。
487 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 04:04:44 ] Tango導入しようかなあ… phobosは統一性なさすぎて辛い…
488 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:30:25 ] >>485 ファイルハンドルのような開放しなければならないメモリはガベコレの外にあるのだから、デストラクタに開放処理を書いても問題ないと思うけどね。
489 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:33:35 ] IDisposable的なhackが必要になるってことか。
490 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 15:29:12 ] >>485 これって、メンバオブジェクトをdeleteすることも認められないのかな?
491 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 18:20:16 ] あーもー英語使わなくてもphobosのtrunkにコミットできたい
492 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:39:11 ] staticメンバにリストを作って管理とか無理かな
493 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 21:29:05 ] >>486 そんなのイラネwwww って思ったけど、必要だな・・・
494 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 21:45:08 ] >>488 たしか、デストラクタって呼ばれる保証はないんじゃなかったっけ? だとしたら確実に行われなければならない処理をデストラクタに書くことはできないと思うのだけど。
495 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:10:12 ] デストラクタからcloseとかの後始末関数を呼べばいいよ。 scope変数に入れたときは、必ずスコープアウトするときにデストラクタ呼ばれるから。
496 名前:デフォルトの名無しさん [2008/06/21(土) 23:15:25 ] C++で言うところの純粋仮想関数のように、 抽象クラス側のメンバ関数定義において 派生クラスで必ず上書きをする事を明示する修飾子ってありますか?
497 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:19:56 ] abstract
498 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:26:36 ] >>497 ありがとうございます!
499 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:27:51 ] abstract属性
500 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 03:41:51 ] auto outfile = new FileConduit("output.txt", FileConduit.WriteCreate); auto file = new FileConduit("hogehoge.txt"); auto buf = new BufferInput(file); while (buf.fill(buf) != IConduit.Eof) { auto str = buf.slice(buf.readable); Cout.output.write(str); outfile.write(str); } Tango なんだけど、Conduit から入力したものを複数の Conduit(?) に出力したいとき、 こういう風に一回バッファを介すしかないの?なんだか妙に生ぐさいやり方で気持ち悪いんだけど、 もっと良い方法ない?Conduit, Buffer, Input/OutputStream のあたりの仕組みが全く理解できない