D言語 Part19

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラミング言語 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)
2デフォルトの名無しさん:2008/08/04(月) 10:26:14
3デフォルトの名無しさん:2008/08/04(月) 10:27:28
■関連スレ

D言語なら俺に聞け
http://pc11.2ch.net/test/read.cgi/tech/1108172110/

D言語を広めるスレ
http://pc11.2ch.net/test/read.cgi/tech/1175432606/

D言語は多分コケると思っている人の数→
http://pc11.2ch.net/test/read.cgi/tech/1136288019/

【次世代言語】D言語でOSを作ろう【Monaの移植?】
http://pc11.2ch.net/test/read.cgi/tech/1128794438/

バイナリをゲロる言語の魅力って何?
http://pc11.2ch.net/test/read.cgi/tech/1160869311/

その他リンク
【Java/C/PHP/Perl/Ruby/Python/TeX】Eclipse M22
http://pc11.2ch.net/test/read.cgi/tech/1168166588/

eclipseってそんなに良いか?【エクリプス】
http://pc11.2ch.net/test/read.cgi/tech/1099300344/

統合開発環境Eclipseプラグイン開発QA
http://pc11.2ch.net/test/read.cgi/tech/1081517094/

"Code of the Nerds" Digital Mars C/C++
http://pc11.2ch.net/test/read.cgi/tech/1044210976/
4デフォルトの名無しさん:2008/08/04(月) 11:10:37
おつ
5デフォルトの名無しさん:2008/08/04(月) 12:08:50
いちもつ
6デフォルトの名無しさん:2008/08/04(月) 20:13:09
7デフォルトの名無しさん:2008/08/04(月) 20:20:52
愛嬌のある乙だ
8デフォルトの名無しさん:2008/08/06(水) 01:15:26
どうでもいいからnogcのキーワードがほしい。
ガベージコレクタを使わないことを静的に明示する。
あとscope強化してほしい。クラスメンバにscopeつけられるとか。
9デフォルトの名無しさん:2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
10デフォルトの名無しさん:2008/08/06(水) 14:17:07
埋めたてんなよ勿体無い
11デフォルトの名無しさん:2008/08/06(水) 14:34:09
2chにはGCがついていないので駄レスは回収されません
12デフォルトの名無しさん:2008/08/06(水) 19:44:19
だれがうまいことを
13デフォルトの名無しさん:2008/08/06(水) 22:08:09
動的配列のsizeofって何で参照のサイズなんだろ
全体のバイト数が欲しかったのに><
14デフォルトの名無しさん:2008/08/06(水) 22:12:09
>>13
勘弁してくれ
コンテナ作るときとか困るだろ?
15デフォルトの名無しさん:2008/08/06(水) 22:13:53
Dってパソコン用だよな…
マイコンとかそっちは、やっぱアセンブラかCだよな
16デフォルトの名無しさん:2008/08/06(水) 22:20:55
>>15
規模によるんじゃね?カーナビとか腕時計とか、それこそいろんな種類があるだろ
1716:2008/08/06(水) 22:22:03
>>15
すまん脊髄反射した。組み込みじゃなくてマイコンか
18デフォルトの名無しさん:2008/08/06(水) 22:33:00
組み込みも結構低いの使ってるのあるからそれでもいいんだけど
組み込みはDいけるのか
19デフォルトの名無しさん:2008/08/06(水) 23:05:51
組み込みでGCとかありえないからな
Dなんて無条件ボツ
20デフォルトの名無しさん:2008/08/06(水) 23:18:05
GC かからんような struct とかでがんばりゃなんとかなるでしょ。
ライブラリが鬼門だが、組み込みやる奴ならライブラリから作るだろうし。
今は invaliant があるから ROM 化しやすいはずだぞ。
21デフォルトの名無しさん:2008/08/06(水) 23:21:08
Dってtry~catchあるの?
22デフォルトの名無しさん:2008/08/06(水) 23:22:08
C#で言うところのGC.KeepAlive()的なものは無いの?
23デフォルトの名無しさん:2008/08/06(水) 23:23:28
今は高機能なデバイスはWindows載せてて.NETが走ってるような時代なんだから、
「組み込み」が必ずしも低リソースな環境での開発を意味するわけではないでそ
24デフォルトの名無しさん:2008/08/06(水) 23:29:22
携帯のJAVAもあるし、>>15でFAじゃないかな
25デフォルトの名無しさん:2008/08/06(水) 23:30:21
>>21
あるよ。
http://www.digitalmars.com/d/2.0/statement.html#TryStatement

>>22
obj = new Object;

// do something on obj

volatile keepAlive = obj;
26デフォルトの名無しさん:2008/08/06(水) 23:33:38
でもCって高級アセンブラって感じだよな、結局
やっぱカリカリにチューニングするにはそうするしか無いんだな
2725:2008/08/07(木) 00:31:52
今風の記法だと
 synchronized auto keepAlive = obj;
でした。

volatileないと不必要に同期処理入るのが気に入らんなあ。
最適化を抑制するのになんか別の書き方ないんだろうか。
28デフォルトの名無しさん:2008/08/07(木) 02:30:12
volatileブロックって2.0でボツになったんだっけ
29デフォルトの名無しさん:2008/08/07(木) 02:58:35
なんねーよボケ
ボツになるのはテメーのコードだけで十分だ
30デフォルトの名無しさん:2008/08/07(木) 03:00:21
いきなり火病られても困る
31デフォルトの名無しさん:2008/08/07(木) 08:13:53
>>29
どうしたんだよ
32デフォルトの名無しさん:2008/08/07(木) 12:21:10
すぐキレる若者の典型例>>29
しかし反省する様子はない
くり返し注意をしても無反応
いいかげん無視しようとみんなで話していると
ただ黙っていた>>29が初めて口を開いた。
いや、開いたのは下の口だった…。
33デフォルトの名無しさん:2008/08/07(木) 12:31:58
オナラすんな
34デフォルトの名無しさん:2008/08/07(木) 13:02:58
おれもくいたい
35デフォルトの名無しさん:2008/08/07(木) 14:08:41
std.dateって何か設計おかしくない?

d_time MakeDay(d_time year, d_time month, d_time date)

もう完全に型の意味ないじゃん。
36デフォルトの名無しさん:2008/08/07(木) 14:12:11
ちなみに使い方は、

writeln(toString(MakeDate(MakeDay(2008, 8, 7), MakeTime(14, 8, 41, 0))))

MakeDate,MakeDay,MakeTimeの引数・戻り値は表してるものが全部違うのに同じ型。
37デフォルトの名無しさん:2008/08/07(木) 14:51:42
dsourceつながんない
38デフォルトの名無しさん:2008/08/07(木) 19:33:21
>>29
http://www.kmonos.net/alang/d/2.0/statement.html
1.0にはあったVolatileStatementが消えてなくなってたからボツになったと思ってたんだけど
違うの?
39デフォルトの名無しさん:2008/08/07(木) 19:40:35
2.013で
> VolatileStatement を非推奨としました。代わりに SynchronizedStatement を使用してください。
だよ。
40デフォルトの名無しさん:2008/08/07(木) 19:44:40
なんだやっぱりボツなんじゃん
29は何なの
41デフォルトの名無しさん:2008/08/07(木) 21:34:45
volatile == synchronized なの?
42デフォルトの名無しさん:2008/08/07(木) 21:50:23
volatile === synchronized なの?
43デフォルトの名無しさん:2008/08/07(木) 21:54:18
volatileってこういうのだろ

unsigned int volatile *reg = (unsigned int volatile *)0xABCD1234; //なんかのレジスタ
while(*reg & 0x1){} //ポーリング

で、volatile付けないと最適化されて無限ループになっちゃうっていう
44デフォルトの名無しさん:2008/08/07(木) 22:06:33
>>41
命令の順序を入れ替えたり省略したりしないのがvolatile,
それに加えて複数の命令をアトミックにするのがsynchronized
45デフォルトの名無しさん:2008/08/08(金) 01:10:54
アトムと言われて
 アトムボーイ
 きりり
46デフォルトの名無しさん:2008/08/08(金) 11:55:32
TangoConferneceだってよ
行かないけど
47デフォルトの名無しさん:2008/08/08(金) 12:08:48
ConfigureとかでStaticとかSharedとかあるんですけど、これどういう違いがあるんでしょうか。
48デフォルトの名無しさん:2008/08/08(金) 12:47:57
何のconfigureか分からないけど,静的ライブラリとして生成するか共有ライブラリとして生成するかの違いじゃないかな.
49デフォルトの名無しさん:2008/08/08(金) 13:00:49
Tangoのカンファレンスやるらしい
http://www.dsource.org/projects/tango/forums/topic/563
50デフォルトの名無しさん:2008/08/08(金) 13:02:35
行ってみたいもんだな
51デフォルトの名無しさん:2008/08/08(金) 14:39:09
そろそろdmdの更新が来そうな気がするな。前回の更新から約1か月…
破壊的な変更があると盛り上がるんだが…
52デフォルトの名無しさん:2008/08/08(金) 14:39:31
>>48
なるほど、ありがとう。
53デフォルトの名無しさん:2008/08/08(金) 14:50:16
出力時に文字コードを変換できる変数
 kanji
が登場
 kanji.utf8
 kanji.sjis
 kanji.eucjp
などなど
54デフォルトの名無しさん:2008/08/08(金) 20:38:25
いまどきkanjiはねえよ
55デフォルトの名無しさん:2008/08/08(金) 20:53:16
>>54
やっぱりSUMOUのがよかったかな?
56デフォルトの名無しさん:2008/08/08(金) 21:44:01
メモリリークを検出する方法ってありませんか
57デフォルトの名無しさん:2008/08/08(金) 22:07:48
ガーベジコレクタを信じればいいと思うよ
58デフォルトの名無しさん:2008/08/08(金) 23:18:06
GCをOFFに出来ないのがDの最大の弱点だよな
59デフォルトの名無しさん:2008/08/08(金) 23:31:02
>>58
これじゃダメなのか?
http://www.kmonos.net/alang/d/2.0/phobos/std_gc.html

std.gc.disable();
60デフォルトの名無しさん:2008/08/09(土) 00:02:09
>>59
>>58の言いたかったことは、GCを使わない記述は現状非常に困難で、
std.gc.disable(); とかしたときでもメモリ使用量を増やすことなく
動作するプログラムが書けないねってことなんじゃないかと思った。
そんな俺は>>8
61デフォルトの名無しさん:2008/08/09(土) 00:30:36
>>59
それはGCの回収作業を一時的に止めるだけ。

言語仕様自体がGCの存在にいそんしてるから、GCを完全に無効にしてしまうと、
かなり気を使ってコードを書かないとメモリリークする。
62デフォルトの名無しさん:2008/08/09(土) 00:36:23
>>60-61
すまん
文章しか読まないで、文章の意味と意図を全然考えて無かった
63デフォルトの名無しさん:2008/08/09(土) 01:58:45
>>61
それはCなみに、ですか。それともC以上にですか?
64デフォルトの名無しさん:2008/08/09(土) 02:23:15
>>63
C以上に。

Cだとmallocに対応したfree書いとけばメモリリークしない。
C++でもnewした分だけdeleteすればいい。


でも、Dは違う!Dはすごい!!
うっかりしてるとコンパイラが勝手にnewしてる。
newとか.dupとか書かなくても独りでにオブジェクトが増えてる。
自分でnewしてないやつまでdeleteしないといけない。
配列リテラルとか全部deleteしないといけない。
65デフォルトの名無しさん:2008/08/09(土) 02:25:38
>>64
それは死にますね。というか、自力管理はほとんど不可能ではないでしょうか。
66デフォルトの名無しさん:2008/08/09(土) 02:30:58
>>65
や、便利機能を封印すればいいだけなんでできんことはないよ。

DのGCの自体もDで書いてあるわけだけど、GCに依存しないようにできてる。
ただ、見てみれば分かると思うけど、まんまCだから素直にC使ったほうがいいw
67デフォルトの名無しさん:2008/08/09(土) 05:24:50
GCを切りたい訳ではなくて、Dから呼び出してるライブラリでのリークを調べたいんですが
これはここで聞くべき事柄ではないですか?

正しい処理:
 Resource* res = dll_malloc();
  ...
 dll_free(res);

解放忘れ:
 Resource* res = dll_malloc();
  ...
//dll_free(res); ←これを忘れていないか調べたい
68デフォルトの名無しさん:2008/08/09(土) 05:48:07
メモリリークを検出するにはラッパ被せて追跡すればいいだけでしょ。
つまり、dll_malloc/freeのかわりにdebug_dll_malloc/freeにでもして、呼び出しの数かぞえる。

でもどうせなら折角GCあるんだし、オブジェクトでラップしてデストラクタで開放してやればリークしなくなるよ。
69デフォルトの名無しさん:2008/08/09(土) 08:15:03
D2.018

T[] a, b;
...
a[] = b[] + 4;

だそうです。
70デフォルトの名無しさん:2008/08/09(土) 08:23:19
これdmd1.0系列にも適用されるのな
71デフォルトの名無しさん:2008/08/09(土) 12:19:32
a[].foo() ってのは無しかい?
72デフォルトの名無しさん:2008/08/09(土) 12:23:15
foo(a);が1回だけ呼ばれます
73デフォルトの名無しさん:2008/08/09(土) 12:44:52
まだごくごく一部の構文でしか動かないみたい
74デフォルトの名無しさん:2008/08/09(土) 13:55:38
実装されるまで長かったなぁ配列演算
[]付けると配列演算なのね
75デフォルトの名無しさん:2008/08/09(土) 17:23:07
Version D 1.034   Aug 7, 2008
New/Changed Features

    * Now supports array operations.

ワロタ
76デフォルトの名無しさん:2008/08/09(土) 18:00:40
all base belong to us
77デフォルトの名無しさん:2008/08/09(土) 18:40:18
auto b = a[] * 3;
とかはできないのかー
78デフォルトの名無しさん:2008/08/09(土) 18:42:19
>>76
all your base are belong to us.
79デフォルトの名無しさん:2008/08/09(土) 21:38:19
C++脳だから、そんなに配列演算って便利かなー???と思うけど。
なんかいい例ないですかね。
80デフォルトの名無しさん:2008/08/09(土) 21:40:18
むしろstd::vectorを組み込みにしちゃいました的な感じじゃね
81デフォルトの名無しさん:2008/08/09(土) 21:45:36
>>79
利便性というよりはベクトル化が目的なんじゃないのかね。
お世辞にも構文的に使いやすいとはいえないし。
82デフォルトの名無しさん:2008/08/09(土) 21:54:27
C++にはvalarrayってのがありますけどつかった事ないですねぇ。

>>80
メモリ負荷を気にしないでpush_backできるなら結構すごいと思います。

>>81
最適化でSSE使うとかそっち方面の話ですか?
83デフォルトの名無しさん:2008/08/09(土) 22:18:29
でも現状SIMD使ってないみたいだな。
逆アセはしてないが、計った感じだと
84デフォルトの名無しさん:2008/08/09(土) 22:48:27
>>81
そうだと思う
85デフォルトの名無しさん:2008/08/10(日) 04:28:27
なんかインパクトに欠ける更新だな
86デフォルトの名無しさん:2008/08/10(日) 06:37:55
既存コードが通らなくなる変更じゃないと満足できない体に、もう……。
87デフォルトの名無しさん:2008/08/10(日) 06:43:25
皆さん2.0使ってるんですか?
1系の方がいい理由とかあるんでしょうか。
88デフォルトの名無しさん:2008/08/10(日) 06:46:33
あんまり仕様変更がなく安定している・・・
訳ではないな、すぐ↑で話題になったとおりw
89デフォルトの名無しさん:2008/08/10(日) 08:32:23
一応破壊的変更はないものと思ってよいのではないか?
90デフォルトの名無しさん:2008/08/10(日) 11:18:24
1系はEasyDとかもあって、Dを始める人には「Dってこんなんだよ!」っていうのがわかりやすいよな
91デフォルトの名無しさん:2008/08/10(日) 13:02:58
>>86
俺発見
92デフォルトの名無しさん:2008/08/10(日) 13:12:27
この砂上の楼閣っぷりがたまらないwwww
93デフォルトの名無しさん:2008/08/10(日) 13:37:40
D2.0のユーザは 少数の新しい物好きと 多数のマゾヒストにより構成される
94デフォルトの名無しさん:2008/08/10(日) 16:53:14
まるで封建社会ね
95デフォルトの名無しさん:2008/08/10(日) 16:57:36
違うな新しい性の目覚めだ
96デフォルトの名無しさん:2008/08/10(日) 17:22:35
そんなことより早くstatic foreachをください
97デフォルトの名無しさん:2008/08/10(日) 19:49:13
それなんですか
98デフォルトの名無しさん:2008/08/10(日) 22:09:08
性的にコレクションを嘗め回します
99デフォルトの名無しさん:2008/08/10(日) 22:31:36
双方向リストくだちぃ><
あとキューとかFIFOとか・・・みなさんはどうされてますか
100デフォルトの名無しさん:2008/08/10(日) 22:41:24
Tango
101デフォルトの名無しさん:2008/08/10(日) 22:45:10
tango使ってる
まあキューやスタックぐらいなら自力で書いてもいいかなとは思うが
102デフォルトの名無しさん:2008/08/10(日) 23:06:33
phobosは変なモジュールあるのに肝心な機能に限ってないし、
tangoは2.0で動かないから、自分専用ライブラリがだいぶ膨らんできた。
103デフォルトの名無しさん:2008/08/10(日) 23:22:34
>>102
公開してすっきりするんだ
104デフォルトの名無しさん:2008/08/11(月) 00:13:36
>>102
俺も。
Stack,Queue,TreeSet,TreeMap,HashSet,
SFMTバインディング,CURLバインディング,iconvバインディング,gmpバインディング
を自分で何とかしたよ。
105デフォルトの名無しさん:2008/08/11(月) 00:34:12
コンテナを構造体にするかクラスにするか
悩み続けたが、いまだに答えは出ていない
106デフォルトの名無しさん:2008/08/11(月) 01:49:28
構造体は
Stack x;
// なんかいろいろ処理
Stack y = x;
とかしたときにビットコピーされることを意識しないといけないから、
クラスのほうが混乱がなくていいんじゃないかと思う
…んだけど、なんでTangoは構造体に…?
107デフォルトの名無しさん:2008/08/11(月) 02:12:45
ビルトインの配列が参照型だから俺はクラスのほうが好みやな。

template Array(T){ alias T[] Array; }

みたいにしたら似た感じで扱える。
108デフォルトの名無しさん:2008/08/11(月) 03:43:51
ATL/WTL っぽいものなら、なんか出来つつある。
109デフォルトの名無しさん:2008/08/11(月) 09:30:23
さぁみんなの力をあわしてくれ!
110デフォルトの名無しさん:2008/08/11(月) 10:03:06
和製コレクションライブラリキタコレ!?
111デフォルトの名無しさん:2008/08/11(月) 11:37:56
tangoもそうだけど俺には標準ライブラリは無駄にでかすぎるぜ
112デフォルトの名無しさん:2008/08/11(月) 12:38:21
http://www.digitalmars.com/d/2.0/phobos/std_array.html が404だ (泣)。
1.0 の方も同様。
113デフォルトの名無しさん:2008/08/11(月) 12:55:47
>>108
多重継承とメッセージクラッカー(だっけ?)みたいなのどうした?
114デフォルトの名無しさん:2008/08/11(月) 19:44:21
TangoにJSONとかtrunkで導入されてるっぽいんだけど、標準ライブラリでそこまでする必要あんの?
115デフォルトの名無しさん:2008/08/11(月) 19:46:16
PhobosにOpenRJとか導入されてるっぽいんだけど、標準ライブラリでそこまでする必要あんの?
116デフォルトの名無しさん:2008/08/11(月) 20:08:47
117デフォルトの名無しさん:2008/08/11(月) 21:01:36
std.openrjとstd.outbufferは俺的2大ゴミ標準ライブラリだと
思うんだけど皆はどう思う?
118デフォルトの名無しさん:2008/08/11(月) 21:57:46
outbuffer使ったことないんだけど、なんの役に立つの?
119デフォルトの名無しさん:2008/08/11(月) 22:45:34
74LS07使ったことないんだけど、なんの役に立つの?
120デフォルトの名無しさん:2008/08/11(月) 23:54:28
>>113

bool onCreate(ref bool handled, LPCREATESTRUCT lpCreateStruct) {
 return true;
}
void onDestroy(ref bool handled) {
 PostQuitMessage(0);
}
LRESULT wndProc(UINT msg, WPARAM wp, LPARAM lp) {
 bool handled = false;
 LRESULT result = 0;
               
 mixin msgcrack!(handled, result, msg, wp, lp);
               
 MSG_WM_CREATE(&onCreate);
 MSG_WM_DESTROY(&onDestroy);
 MSG_WM_SIZE(&onSize);

こんな感じ。まだメッセージクラックでMSG_WM_〜とか作り始めたばっかりだからしょぼいけど、
でもちゃんと動くからよしとしてる。dmd 1.028 + phobos + win32 binding
121デフォルトの名無しさん:2008/08/12(火) 09:01:24
>>120 なるほど
WTLがやってる多重継承の使い方をどういう風にDに落とし込むかで悩んだことがあるのよね
122デフォルトの名無しさん:2008/08/12(火) 19:46:07
グループで開発してる言語ならともかく、一人で開発してる言語
なんて所詮、modula2と同様忘れられるさ
123デフォルトの名無しさん:2008/08/12(火) 19:48:40
どういうわけか知らんが、Dは1人で設計開発されてると思われてるんだよなぁ
趣味止まりじゃないってことを見せ付けてくれんか?
124デフォルトの名無しさん:2008/08/12(火) 20:19:07
Andreiかわいそす
125デフォルトの名無しさん:2008/08/12(火) 20:34:52
最終的な決定権を持つのが一人ということだったらPerlもPythonもRubyも同じだよな
126デフォルトの名無しさん:2008/08/12(火) 23:09:20
まともな標準ライブラリがないってのさえ初期のC++と同じだしな
127デフォルトの名無しさん:2008/08/12(火) 23:11:28
スクリプト言語でインタプリタ屋が決定権持つのは仕方ないだろ
Dは自分の所のコンパイラ識別子を予約語にしてるのが痛い
128デフォルトの名無しさん:2008/08/12(火) 23:21:00
>>127
具体的にどれのことを言ってるんだ?
129デフォルトの名無しさん:2008/08/12(火) 23:25:23
http://www.digitalmars.com/d/2.0/version.html

DigitalMarsという予約語がある

GNUはないのに
130デフォルトの名無しさん:2008/08/12(火) 23:33:34
バージョン識別子の意味を勘違いしてるか予約語の意味を勘違いしてるか。
後者かな。予約語とは、とかでググれ。
131デフォルトの名無しさん:2008/08/12(火) 23:57:50
>>129
DigitalMarsのコンパイラでGNUがdefineされてたらおかしいだろ…
132デフォルトの名無しさん:2008/08/13(水) 00:02:01
>>129
version (DigitalMars)
{
...
}
version (GNU)
{
...
}
両方動作しちゃいます
ってさすがに釣りにマジレス過去悪いな
133デフォルトの名無しさん:2008/08/13(水) 00:04:29
>>132
    ( ゚д゚)ポカーン

ポカーン(゚д゚ )

    ( ゚д゚ )
134デフォルトの名無しさん:2008/08/13(水) 00:37:10
え?これってDの仕様じゃなくてDigitalMarsのコンパイラの説明書なの?

"DigitalMars"という識別子は「DigitalMars製コンパイラ」という意味以外で使っちゃいけないって
Dの仕様で決められてるんだろ?
でも「GNU製コンパイラ」という意味以外で使っちゃいけないっていう意味の識別子は
仕様にはないんだろ?

そういう意味にしか取れないんだが
135デフォルトの名無しさん:2008/08/13(水) 00:44:38
DMDの仕様書じゃないの?
136デフォルトの名無しさん:2008/08/13(水) 00:47:51
正直どうでもいい
137デフォルトの名無しさん:2008/08/13(水) 01:02:18
コンパイラの仕様と言語の仕様をごっちゃにしてるのか。
138デフォルトの名無しさん:2008/08/13(水) 01:09:50
versionってDMDの拡張機能だろ
139デフォルトの名無しさん:2008/08/13(水) 01:11:34
また変なのが湧いてきた
140デフォルトの名無しさん:2008/08/13(水) 01:20:14
話題ふり
Tangoってどんなん?
141デフォルトの名無しさん:2008/08/13(水) 01:28:04
>>140
ぐぐれかす
142デフォルトの名無しさん:2008/08/13(水) 01:31:44
うぉるたんが新バージョンださないからスレが荒れてきた…
143デフォルトの名無しさん:2008/08/13(水) 01:52:07
こないだ出したばっか…
いや、>>142の言ってるのはもしかして伝説のD3.0系か?
144デフォルトの名無しさん:2008/08/13(水) 01:58:56
>>142
破壊度低くても新バージョン認めてやれよw
145デフォルトの名無しさん:2008/08/13(水) 09:00:19
>>144
わらかすなwwwwww
146デフォルトの名無しさん:2008/08/13(水) 09:11:26
「僕の考えたD 3.0」な流れだな
147デフォルトの名無しさん:2008/08/13(水) 13:49:32
例外発生時の発生したソースの行などを取得する方法ってないのですかねぇ。poseidonのデバッガは例外発生時に該当行でとまるので、どこかに情報を持ってそうなのですが。
148デフォルトの名無しさん:2008/08/13(水) 14:35:39
ddbgならpsやらusやら打ち込めばチラ見出来た気がする
149デフォルトの名無しさん:2008/08/13(水) 15:08:02
外部デバッガを使わずにプログラム自身にログを吐き出させたいので、
Exeptionのメッセージに該当箇所が入ってくれれば一番良いのですよね。
assertを例外で拾った場合はソース行も入ってるので、AccessViolation
も同様ならいいなぁとか。
150デフォルトの名無しさん:2008/08/13(水) 17:29:05
Visual D#マダー?
151デフォルトの名無しさん:2008/08/13(水) 17:48:51
>>150
それは早急すぎ。C#がC++++の意味だから、まずはD++を経なければならない…
あと、.net対応ならDマネージ拡張とか、D/CLIとかでもありだな。
152デフォルトの名無しさん:2008/08/13(水) 17:51:36
ああ・・・
++++だったんだ#・・・
153デフォルトの名無しさん:2008/08/13(水) 18:06:22
次はC丼だな
154デフォルトの名無しさん:2008/08/13(水) 18:07:02
castのコストっていかほどなんでしょうか?
キャストが不正だった場合、nullが返ってくるということは、
ランタイムで型をチェックしているんですよね
155デフォルトの名無しさん:2008/08/13(水) 18:11:08
C#はJavaユーザからだと乗り換えしやすそうだけど
Perl/Rubyあたりからだと、やっぱDの方がフレンドリーに思えるな・・・
156デフォルトの名無しさん:2008/08/13(水) 18:20:34
>>154
そういうチェックが入るのは、クラスオブジェクトをダウンキャストするときだけでしょ。
157デフォルトの名無しさん:2008/08/13(水) 19:40:28
>>156
なるほど、構造体とかならノーコストっすね
ありがとうございます
158デフォルトの名無しさん:2008/08/13(水) 23:09:49
まじで和製D2.0Phobos用コレクションライブラリを
整備しませんか
159デフォルトの名無しさん:2008/08/13(水) 23:21:36
それで言いだしっぺは何を提供してくれるんだね?
160デフォルトの名無しさん:2008/08/14(木) 00:02:20
ごめんなさい>< 準備します
161デフォルトの名無しさん:2008/08/14(木) 01:12:35
じゃあ俺はutil/brainfuck.dを提供することにしよう。
162デフォルトの名無しさん:2008/08/14(木) 03:44:41
auto o = new Object;
synchronized(o) {
 synchronized(o) {
  // do something
 }
}

こんな感じで同じオブジェクトで入れ子で複数回synchronized呼ぶのは安全ですか?
163デフォルトの名無しさん:2008/08/14(木) 05:19:04
>>155 それは興味深い なんで?
>>161 そんなもんはいらんwwwていうかもう作ってる人いるw
164デフォルトの名無しさん:2008/08/14(木) 06:57:45
opStarAssignが欲しいんだが…
165デフォルトの名無しさん:2008/08/14(木) 09:52:17
>>164
このままop〜Assign系を増やしても根本的な解決にはならんだろ
必要なのは参照じゃね?
166デフォルトの名無しさん:2008/08/14(木) 10:29:59
opStarが増えたからopStarAssignも欲しくなるんだよな
opStarは何のために増えたんだ?
167デフォルトの名無しさん:2008/08/14(木) 10:32:50
boost::spiritを移植するため
168デフォルトの名無しさん:2008/08/14(木) 10:47:20
 ノ         ___ノ        精神を加速させろ
(____,,--‐‐'''''"''':::::l.川     アイキャンレディゴー
  . |(●),   、(●)、.:|川 ゴーウェイ
  |   ,,ノ(、_, )ヽ、・,,.::::|リリ    
169デフォルトの名無しさん:2008/08/14(木) 20:26:19
D言語使いはD Lingualでどうだ
って流れに乗り遅れすぎだぞ俺
170デフォルトの名無しさん:2008/08/14(木) 20:35:32
おまいらはマゾだからDingoでいいよ
171デフォルトの名無しさん:2008/08/14(木) 20:40:03
Tinpoっぽいな
172デフォルトの名無しさん:2008/08/14(木) 21:42:10
っぽくねえよw
173デフォルトの名無しさん:2008/08/15(金) 00:29:28
Der
174デフォルトの名無しさん:2008/08/15(金) 00:54:04
Microsftが採用しない限り、無理だろ。

MIcrosoftが開発を発表したDとは
似てもつかないものだし。

我田引水的にいうと、C#などの言語はWindowsプログラミング
に徹した方がいい(MFCはもう古くさい)。

あとは、NativeのC++とC#をいかに透過的に連携させるかに
注力した方がいい。Windowsに関してはMFCよりもC#の方が
明らかにプログラムしやすい。

問題は、C++NativeコードとC#あるいはC++/CLIをいかに
透過的に結合させるかだ。
175デフォルトの名無しさん:2008/08/15(金) 01:01:36
Der 変態
176デフォルトの名無しさん:2008/08/15(金) 01:44:33
最初の3行以降はdと全く関係ないよね
177デフォルトの名無しさん:2008/08/15(金) 02:07:17
であですでむでん
178デフォルトの名無しさん:2008/08/15(金) 07:59:03
インターフェースと静的関数の関係がいくつか未定義な気がする


// 通る
interface A { static A opCall(); }

// 通る
interface A { static A opCall(); }
class Z : A {  }

// 通る
interface A { static A opCall(); }
class Z : A { static S opCall() { return new S; } }

// A.opCallが未定義であるとリンカが文句を言う
interface A { static A opCall(); }
class Z : A {  }
179デフォルトの名無しさん:2008/08/15(金) 08:02:27
180デフォルトの名無しさん:2008/08/15(金) 08:03:02
2つ目と 4つ目の違いがわからん
181デフォルトの名無しさん:2008/08/15(金) 08:10:44
ごめん

interface A { static A opCall(); }
class Z : A {  }

auto A = A();

と書いた場合A.opCallが未定義であるとリンカが文句を言う
182デフォルトの名無しさん:2008/08/15(金) 08:39:55
>>181
あたりまえじゃないの?
どこで定義しているの?
183デフォルトの名無しさん:2008/08/15(金) 08:43:11
>>182
当たり前なんだけど、
「そもそもinterfaceにstatic関数を定義できないのが正しいんじゃね?」
という議論が>179。
184デフォルトの名無しさん:2008/08/15(金) 12:04:57
そもそも静的関数はオーバーライドできないんだから
宣言した箇所で定義をつけてやらないと困ったことになるのは当然だろう。

インターフェイスをC++的に考えると純粋抽象クラスだから、静的関数を持てても問題ないと思う。
185デフォルトの名無しさん:2008/08/15(金) 12:23:18
テンプレートがあるんだから、
static virtualとかvirtualなコンストラクタとかが
あってもいいのではなかろうかと常々思う。
186デフォルトの名無しさん:2008/08/15(金) 12:56:53
>>184
待て待て後半で前半が覆されてるぞ
インターフェイスをC++的に考えると純粋抽象クラスだから,実装(静的関数)を持てちゃまずいんじゃないのか

>>185
static virtualは全然わからんが
virtualなコンストラクタって何のインスタンスができるんだ?
ビルトインでオブジェクトファクトリパターンでもやるのか?
できるのかなそれ
187デフォルトの名無しさん:2008/08/15(金) 13:39:23
>>186
静的関数はオーバーライドできないから、クラスの抽象性とは関係ない、といいたかった。
188デフォルトの名無しさん:2008/08/15(金) 13:45:03
>>185
静的関数を仮想化できて何の役に立つの?
静的関数は名前の通りコンパイル時に静的に解決されるから意味ないと思うけど。
189デフォルトの名無しさん:2008/08/15(金) 13:55:17
News見ている人に質問

The Death of D. (Was Tango vs Phobos)
のあたりの、あらすじを教えて
よくわからなくなってきた
190デフォルトの名無しさん:2008/08/15(金) 15:59:43
インスタンスの型によって振る舞いを変えるための virtual なわけで、
static 関数では対象となるインスタンスがないのにどう振る舞いを変えろと?
根本的にオブジェクト指向が分かってないんじゃないの?
191デフォルトの名無しさん:2008/08/15(金) 17:47:11
>>186
interfaceと同じスコープにファクトリを据えたいのは山々なんだよね
192デフォルトの名無しさん:2008/08/15(金) 18:31:13
>>190
Tango vs Phobos!?
興味深い
193デフォルトの名無しさん:2008/08/15(金) 18:51:00
>>191
そもそも、インスタンスがないのに、
ファクトリが自分がどの型であるべきなのかどうやって認識するの?
194デフォルトの名無しさん:2008/08/15(金) 19:01:57
この流れは…


Phobos、Tangoに続きTimpoライブラリをこのスレで作る…!?
195デフォルトの名無しさん:2008/08/15(金) 19:32:01
>>193
ファクトリって何か分かってる?
196デフォルトの名無しさん:2008/08/15(金) 19:45:29
わかってたらそんな頓珍漢なこと言わないだろう
197デフォルトの名無しさん:2008/08/15(金) 19:46:14
>>189 長すぎる・・・・・・・
198デフォルトの名無しさん:2008/08/15(金) 19:50:52
>>189
ウォルターが
Tangoのパブリックドメインやら
いろいろ言っているようなんだけど
199デフォルトの名無しさん:2008/08/15(金) 20:06:29
>>189
「PhobosにTangoマージしてくれ」
→をる「ライセンスをPhobosとコンパチにしてもらえないと困る」
200193:2008/08/15(金) 20:17:15
>>195
おいおい、マジでそんなあほなこと言ってるのか。
インターフェースは内部実装知らないから意味があるんだぞ。
内部実装知らない状態で、インターフェースにあるファクトリは何を作るべきなのか?
と聞いているんだが。

実際のところ、
interface IFoo
{
IFoo createObject();
}
として、
IFoo newObj = foo.createObject();
くらいでファクトリは十分なんじゃねーの?
それ以外でどういうものを期待してるんだ?

201デフォルトの名無しさん:2008/08/15(金) 20:25:42
>>193はどう見ても>>200のようには読めないのでどうもこうもない
>>200の話はごもっとも
202デフォルトの名無しさん:2008/08/15(金) 20:35:08
文字列とか受け取ってから、その文字列に応じたインスタンスが欲しいとか
そういう話だとすると、
それはそれ自体が実装だから元々インターフェースに置くべきではない。
class FooFactory
{
IFoo createObject(string fooType);
}
で十分でしょ。
interface に置いて何かが劇的に変わるかというと変わらない。
それにメンテナンス性が下がるよ。
インターフェースは原則として不変であるべきなのに、
新しい class FooNewClass とか追加したら、そのたびに interface の中いじることになる。
203デフォルトの名無しさん:2008/08/15(金) 20:39:53
外部から登録するようにすればインターフェイスを弄る必要はない。
204デフォルトの名無しさん:2008/08/15(金) 20:56:14
>>203
その場合、インターフェースが「内部状態」を持つことになりますが、
その辺についてはどうお考えで?
205デフォルトの名無しさん:2008/08/15(金) 21:03:36
>>204
べつにいいじゃん。

ただの抽象クラスでしょ。
206デフォルトの名無しさん:2008/08/15(金) 21:12:34
ただの,じゃなくて,純粋な抽象クラスだからなあ
207デフォルトの名無しさん:2008/08/15(金) 21:22:08
インターフェースと抽象クラスの違いがわからない人がいることに絶望した。
208デフォルトの名無しさん:2008/08/15(金) 21:26:48
てことでinterfaceにstaticメソッドを定義できちゃうのはまずいわな
リンクエラーになるくらいならコンパイル時にエラーになってもよいと思う
209デフォルトの名無しさん:2008/08/15(金) 21:43:26
>>207
どうちがうのか説明してくれ
210デフォルトの名無しさん:2008/08/15(金) 21:44:31
結局はインターフェイスを名前空間として使いたいだけなんだよね。
211デフォルトの名無しさん:2008/08/15(金) 21:48:26
インターフェイスは契約だって言いたいんだろうけど、
契約が自身に関係するメタ的な機能を持ってるのは何も問題があるようには思わない。
212デフォルトの名無しさん:2008/08/15(金) 21:52:47
クラスというのは is-a 継承のために存在する。
インターフェースは、ポリモーフィズム(多態性)の実現のために存在する。
鳥と飛行機は両方飛ぶけど、
鳥 is a 飛行機にも、飛行機 is a 鳥にもならない。
でも、インターフェースとしては両方 Flyable なわけですよ。

まともなオブジェクト指向やってる人なら常識なんだけどねぇ。
213デフォルトの名無しさん:2008/08/15(金) 21:54:03
>>212
それは抽象クラスとの違いの説明にはなってないよ

鳥 is a FlyingObject
飛行機 is a FlyingObject
214デフォルトの名無しさん:2008/08/15(金) 22:07:54
そうそう、クラスの意味を理解していないと、
>>213 みたいな勘違いをやりやすいんだよね。
実際そういう変な継承で物を作って、後で困るケースが多々ある。

で、抽象クラスというのは
鳩 is a 鳥
という関係での鳥にあたる。
ただの派生元クラスじゃんということにもなるけど、
実装を一部持たないものが抽象クラスになる。
まだ、中身はわからないけど、
そのクラスにはそういう属性や振る舞いがあることは確かだ
というためにある。
215デフォルトの名無しさん:2008/08/15(金) 22:11:11
>>209 C++で書くとこうかな
class A {
 virtual void foo();//仮想関数
 virtual void bar() = 0;//純粋仮想関数
}
仮想関数を1つでも持つクラスは抽象クラス(abstract class)という
すべてのメンバ関数が純粋仮想関数のクラスを純粋抽象クラス(==interface)という
これでおk?
216デフォルトの名無しさん:2008/08/15(金) 22:13:46
飛行機 is a 機械で、鳥 is a 動物
という継承が実際後で必要になってきてから、
飛行機 is a FlyingObject, 鳥 is a FlyingObject
という継承になってたりすると、あれー? ってことになる。
飛行機が物を食べるかどうかとか、
鳥にハンドルが付いているかどうかとか、真剣に考えたりすることに。
このへんは物をどう捉えるのかのセンスが問われるねぇ。
217デフォルトの名無しさん:2008/08/15(金) 22:14:02
論点がぼやけすぎてきて話がわかんねーなこれw
218デフォルトの名無しさん:2008/08/15(金) 22:23:20
interface FlyingObject にファクトリが付いていたとして、
何がインスタンス化されるのがお好みですか?
と言えばわかりますか?
219デフォルトの名無しさん:2008/08/15(金) 22:23:49
いや、>>216の書き込みにずいぶん納得した。
説明うまいね
220デフォルトの名無しさん:2008/08/15(金) 22:27:29
>>216
多重継承が必要という話ですね、分かります。
221デフォルトの名無しさん:2008/08/15(金) 22:32:18
Javaは偉大だ。
飛行機 extends a FlyingObject
鳥 extends a FlyingObject
222デフォルトの名無しさん:2008/08/15(金) 22:36:05
>>216
飛行機 is a 機械
ロボット is a 機械
ロボットは空を飛び、飛行機は原子力で動くわけですね。
223デフォルトの名無しさん:2008/08/15(金) 22:37:57
>>218
何でもいいから飛べる奴が欲しい。
224デフォルトの名無しさん:2008/08/15(金) 22:43:08
>>223
窪塚洋介がインスタンス化されました。
225デフォルトの名無しさん:2008/08/15(金) 23:18:15
>>224
揚力得られずに自由落下するだけのは飛ぶとは言わんと思うが。
226デフォルトの名無しさん:2008/08/15(金) 23:35:16
>>218
そんな変な例を出すから気持ち悪いだけで、

interface Singable { void sing(Song song); }
interface Danceable { void dance(Dance dance); }
class Singer : Singable;
class Dancer : Danceable;
class Otaku : Singable, Danceable;

という構成のときに、なんか歌が与えられて誰か適当に選んで歌って欲しいときに、

auto singable = Singable.createObject(song.genre);
singable.sing(song);

と書きたい。
もっとも、SingableFactoryを別に用意してもいいけど、
俺はSingableのメンバになってたほうが構文上美しいと思う。
227デフォルトの名無しさん:2008/08/15(金) 23:57:29
ファクトリ自体のポリモーフィズムについては考えないんですね。
「適当に選んで」
ってのが実装になっちゃうので、
その実装は色々考えられちゃうわけですが。
228デフォルトの名無しさん:2008/08/16(土) 00:09:17
実装を差し替える必要がなければ多態化する必要はないだろう…

それにこれは静的メソッドでファクトリを実装することの問題点であって、
インターフェイスのメンバでファクトリを実装することによる問題じゃない。
229デフォルトの名無しさん:2008/08/16(土) 00:13:34
>>199
マージされるのかな?
ワクワクしてきた
230デフォルトの名無しさん:2008/08/16(土) 00:21:27
インターフェースの静的メンバでファクトリを実装する問題だよね?

「インターフェースのメンバでファクトリを実装する問題」であるなら、
インスタンスが知っている情報に基づいてファクトリが動くべきで、
普通は、インスタンスの型と同じ型のまっさらなインスタンスができるか、
インスタンスのコピーかそれに毛が生えたようなものができるかってとこでしょう。

多態化しなきゃよいっていうなら、
素直に SingableFactory クラス作ればよいって返すだけなんだけど。
interface Singable に static なファクトリ乗っけても
後で多態化が必要だとわかった時に後悔するだけだ。
231デフォルトの名無しさん:2008/08/16(土) 00:34:56
>>230
インターフェースの静的メンバでファクトリを実装する問題であるのは確かだけど、
問題になってるのはインターフェイスだからではなくて静的メンバだからでしょう。
ファクトリを多態化できないという同じ問題は、
抽象クラスの静的メンバでファクトリを実装したときにも起こりうるよね。

でも、それでも実用上問題にならないことはあるんじゃないかな。
名前から一意にクラスが決まる場合とか。
232デフォルトの名無しさん:2008/08/16(土) 01:05:38
「実用上問題にならない」という考え方で設計するなら、
どんなスパゲッティコードでも動けばオッケーってことになりますよ。
(実際そういうなんちゃってオブジェクト指向で悩まされるんだ…)

「インターフェースは実装を一切知らないってのがミソ」
ということが分かっている人なら、
インターフェースに実装を置こうなんて絶対思わんでしょう。
233デフォルトの名無しさん:2008/08/16(土) 01:07:34
だから実装を知らなくても実装の一個を返すことぐらいできるよ
234デフォルトの名無しさん:2008/08/16(土) 02:28:48
インターフェースに static 実装をおかないことの利点って何?

そんなことやったこと無いけど、こうして議論になってるから
考えてみた。で、わからん。


あと、Java で常々思ってたけど、
インターフェースには DBC みたいなことを書けないんだよね。
それが書けるとうれしいんじゃないかなーとか。

どうおもう?
235デフォルトの名無しさん:2008/08/16(土) 02:41:57
>>189
ttp://lists.puremagic.com/pipermail/digitalmars-d/2008-August/thread.html
誰か「せっかくだから D2.0 でPhobos に Tango をマージしようぜ?」
うぉる「(ライセンス的に)Phobos は純潔なのよ!どこのものとも分からない Tango を
婿になんて迎えられないわ!前は勝手に Phobos が Tango のコードを盗んだなんて言いだす輩に
絡まれたんだからね、そんなのは Tango の中の人を洗い出して権利関係を明確にしてからの話だわ。
…べ、別に Tango と結婚させたくないわけじゃないし、こっちはもう Phobos のコードを
Tango にマージする許可はもう与えてあるんですからねっ!」

だいたい意訳するとこんな感じ?間違ってる?Phobos はコードを書き換えるときに
ttp://www.digitalmars.com/d/contributions.html
の手順を踏んでコントリビュータを明確にしてるんだけど、
Tango はそこが曖昧だからウォルたんは渋ってるってとこなんだろうな。
236デフォルトの名無しさん:2008/08/16(土) 03:33:07
>>235
そんな、ツンデレなウォルター嫌だ

でも、そんな感じの話が書いてあった
237デフォルトの名無しさん:2008/08/16(土) 09:03:20
FreeBSDみたいな事にはなって欲しくないし正しい選択だと思うよ
238デフォルトの名無しさん:2008/08/16(土) 09:29:29
>>235
ヲルさんはいい人だというのがわかったw
意訳ありがとう
239デフォルトの名無しさん:2008/08/16(土) 09:36:58
ReactOSはソースの潔白の検証で進行が止まってるしな
240デフォルトの名無しさん:2008/08/16(土) 10:15:07
class >>178-224 :「インターフェースは静的関数を持てるのか」
{
}
僕の方がOO理解してるんだいって主張は他でやってくれんか?
241185:2008/08/16(土) 10:22:34
unzipとかtarとかを拡張子から選び出して実行する、単純なフロントエンドを作ろうと思ったわけですよ。
対応フォーマットを追加したければ、Extractorを増やしてExtractorsに追加するだけ、みたいな。
Extractorsは可変長テンプレート引数にしたほうがいいかも。

class ExtractorCreator{
 alias TypeTuple!(TarExtractor, UnzipExtractor, LhaExtractor) Extractors;
 Extractor create(Path archiveFile){
  foreach(ExtractorType; Extractors){
   if(ExtractorType.isSupport(archiveFile)){
    return new ExtractorType();
  }
  throw new UnsupportedArchiveTypeException();
 }
}
class Extractor{
 static string[] SupportSuffixes();
 static bool isSupport(Path archiveFile){ return SupportedSuffixes.contains(archiveFile.suffix); }
 void extract(string archiveFile);
}
class TarExtractor{
 static override string[] SupportSuffixes(){ return [".tar", ".tar.gz"]; }
 override void extract(string archiveFile){ exec("tar xf " ~ archiveFile); }
}
... 略

派生クラスに対して「自身のメタ情報を表明せよ」って強制できれば、いい感じに書けないかなぁって。
242デフォルトの名無しさん:2008/08/16(土) 11:43:53
>>240
適当なキャラ付けで他人を小馬鹿にして興奮するオナニーも他でやってね。

中二病の子までDやるのか、最近は。
243デフォルトの名無しさん:2008/08/16(土) 11:57:13
>>241そんな静的にやらんでも
244デフォルトの名無しさん:2008/08/16(土) 13:22:10
要は、シングルトンだから new しなくてもいいじゃんくらいの意味なんだよな。
245デフォルトの名無しさん:2008/08/16(土) 15:18:29
命名規則の欠陥だと思う。以下のコード見たとき強くそう思ったけど、それに似ている気がする。
class FooError:Error{
  this(string message){super(message);}
  static class XXX:FooError{
  }
  static class YYY:FooError{
  }
}
throw new FooError.XXX();
246デフォルトの名無しさん:2008/08/16(土) 15:28:31
単純に static の意味が分かってないとみた。
247デフォルトの名無しさん:2008/08/16(土) 15:46:51
D言語のstaticは単なる名前空間の代わり。
class test{
  extern(C++) static int x(){return 10;}
}
はC++の
namespace test{
  int x(){return 10;}
}
と同等。
248デフォルトの名無しさん:2008/08/16(土) 16:22:26
>>241 僕は*Extractorを別ファイルにしやすいこっち派
class ExtractorCreator{
 static Extractor[] es;
 static void addExtractor(Extractor e){es ~= e;}
 static Extractor create(Path archiveFile){
  foreach(e; es)if(e.isSupport(archiveFile))return e;
  throw new UnsupportedArchiveTypeException;
  }
}
class Extractor{
 abstract string[] SupportedSuffixes();
 bool isSupport(Path archiveFile){ return SupportedSuffixes().contains(archiveFile.suffix); }
 abstract void extract(string archiveFile);
}
class TarExtractor : Extractor{
 static this(){ ExtractorCreator.addExtractor(new TarExtractor); }
 override string[] SupportedSuffixes(){ return [".tar", ".tar.gz"]; }
 override void extract(string archiveFile){ exec("tar xf " ~ archiveFile); }
}
class ZipExtractor : Extractor{
 static this(){ ExtractorCreator.addExtractor(new ZipExtractor); }
 override string[] SupportedSuffixes(){ return [".zip"]; }
 override void extract(string archiveFile){ exec("unzip " ~ archiveFile); }
}
void main(){
 string file = "hoge.tar";
 Extractor e = ExtractorCreator.create(new Path(file));
 e.extract(file);
}
249デフォルトの名無しさん:2008/08/16(土) 23:56:36
string file= "kubo.tar";
250デフォルトの名無しさん:2008/08/17(日) 00:15:27
静的仮想関数が必要になる例↓
http://www.ksky.ne.jp/~seahorse/cpp/staticvirtual.html
一応確かに考えられなくはないけど、これみたいな問題はDにはないわけ?
…まぁこの場合こんな設計するほうが悪いのかもしれないけど。
251デフォルトの名無しさん:2008/08/17(日) 00:30:45
お産の最中に仮想化できると思う方がきっとおかしいんでしょう。
252250:2008/08/17(日) 01:33:43
気になったので調べてみた。
オブジェクトは、newされたとき、以下によると
ttp://www.digitalmars.com/d/2.0/class.html#constructors
1.メモリの割り当て
2.データ初期化・vtbl[]初期化
3.コンストラクタ呼び出し
4.普遍条件呼び出し
のステップが行われる。2番と3番の順番の理由から、実はコンストラクタの時点で仮想関数を呼び出すことが可能。(でいいのか?)
よって、以下のコードは不正ではない…(?) ちょっと自信ないけど。
http://codepad.org/P6dxfzku
253デフォルトの名無しさん:2008/08/17(日) 02:00:18
あんまり難しい事考えてないたまには頭の休憩も必要だぞ
http://www.nicovideo.jp/watch/sm3372002
254デフォルトの名無しさん:2008/08/17(日) 15:59:46
>>252
可能もなにも普通だと思うんだが・・
255デフォルトの名無しさん:2008/08/17(日) 16:38:32
テンプレートパラメータに対してクラスを限定できるんだから、
せめてその時は実行時じゃなくてコンパイル時にもポリモーフィズムが利用できていいはず。
オブジェクトがクラスに、普通のメソッドがstaticメソッドに、
メソッド呼び出しがテンプレートのインスタンス化に置き換わる感じ。

>>234
むしろインターフェースにこそ契約書きたいよね
256デフォルトの名無しさん:2008/08/17(日) 17:14:24
>>253 なんというクソゲー
全部見てしまった
俺の時間を返せw
257デフォルトの名無しさん:2008/08/17(日) 21:12:08
>>156
アップキャストもチェック入りダイナミックキャストでした
258デフォルトの名無しさん:2008/08/17(日) 21:13:14
>>257
なんやて…
259デフォルトの名無しさん:2008/08/17(日) 21:17:19
>>255
それどういう文法になるんだ
260デフォルトの名無しさん:2008/08/17(日) 22:37:29
>>259
たんにbodyがなければいいんじゃね?
261デフォルトの名無しさん:2008/08/17(日) 22:46:26
in, out の DbC が書けるのはよさげだね。これには賛成。
デバッグコンパイルするとラッパクラスがこっそりできることになるんだろうね。
262デフォルトの名無しさん:2008/08/17(日) 22:53:06
>>260
>>259は前半四行にたいする質問だった。
263デフォルトの名無しさん:2008/08/18(月) 17:38:45
Code:Blocks+ddbgの動かし方が良く分からん
ブレークポイントを置いてるのに引っかからないでこうなる
Starting debugger:
done
Debugger finished with status 1
264デフォルトの名無しさん:2008/08/18(月) 20:02:52
数ヶ月前にやった記憶だとnighty buildじゃないとダメなんだっけ?
265デフォルトの名無しさん:2008/08/19(火) 04:27:19
ところで、tangoのD2.0のやつ、更新されてたから使ってみようかと思ったんだけど、
コンパイルできない…どうやったらコンパイルできるんだ?これ。
Windows Vista 64bit SP1, dmd2.018, tango r3889, dsss 0.75
この環境で
XXX\dmd\import\tango>dsss build
ってやってみたけどコンパイルできず。
tango\sys\win32\Types.di(288): template instance _PCHAR!("ServicesActive") does not match template declaration _PCHAR(char[] a)
とか出る。ちょっといじってこれが通るようになってもほかのところでエラー出たりdmd死んだり…
もしかしてこれってまだコンパイルできる段階じゃないのかな?
266263:2008/08/19(火) 10:26:33
なんだかPoseidonの最新版が良い感じになってたからこっち使ってみるわ
D言語普及のために詳しい使い方でもHPに書いてみるか
267デフォルトの名無しさん:2008/08/19(火) 15:26:38
ttp://www.dsource.org/projects/poseidon/wiki/Screenshots
これか
auto completionがどれほどなのかやってみよう
268デフォルトの名無しさん:2008/08/19(火) 16:21:03
>>263
PoseidonのDebuggerにddbg使えた?なんかうまくいかん
Ddbg 0.11.3 beta - D Debugger
269デフォルトの名無しさん:2008/08/19(火) 17:02:02
ごめんposeidonが古かったみたい
270デフォルトの名無しさん:2008/08/19(火) 20:30:50
Descentのアップデートはまだか
271デフォルトの名無しさん:2008/08/20(水) 00:59:37
nightlyあるんじゃなかったっけ。
272デフォルトの名無しさん:2008/08/20(水) 01:04:14
ああ、リポジトリ自体に更新ないのか
273デフォルトの名無しさん:2008/08/20(水) 04:05:23
Poseidon日本語のフォント使えない…?
やっぱWinのAPIたたくときにマルチバイトを考慮していないのが原因なのかな…
274デフォルトの名無しさん:2008/08/20(水) 10:02:27
>>273
使えるぞ?
MSゴシックを選択して文字セット欧文のままってオチじゃないよな?
275273:2008/08/20(水) 14:42:00
文字セットってのがよくわからないけど、とりあえずツール>オプション>エディタ>デフォルト スタイルのフォントを
MS ゴシックにしただけだと等幅にならない…
マルチバイト文字の混じらないFixedSysとか指定するとうまく等幅になるっぽいけど。
他になんか設定する必要があるのか?
276デフォルトの名無しさん:2008/08/20(水) 15:51:36
なんてこった、今気づいた
キーワードで太字になると等幅が崩れるみたいだから、太字を切ってみたらうまくいった
277デフォルトの名無しさん:2008/08/20(水) 15:57:49
typedef int myint = -1;
void main() {
writeln(typeid(typeof(myint.max)));
}

typedef型のmax/minが元の型になってしまうんだけど、
仕様的にはどうなのかなあ。
278デフォルトの名無しさん:2008/08/20(水) 16:34:03
>277
それはおかしいんじゃないか
279デフォルトの名無しさん:2008/08/20(水) 16:36:29
typedefで新しい型に新しいmin、maxとか設定できてついでにinvariantみたいにチェックしてくれる機能マダー?
280デフォルトの名無しさん:2008/08/20(水) 16:43:19
>>279
構造体でよくね。
281デフォルトの名無しさん:2008/08/20(水) 22:58:55
ここ読んでいる人は、いつもC++を使っている人が多いと思うんだけど、
D言語使っているとC++とごっちゃになって困ったりしない?
自分はしばらく使っていると、細かいところでよく間違えるんだけど、
みんな問題ないのかな?
282デフォルトの名無しさん:2008/08/21(木) 01:44:59
class A{};セミコロンとかはあるある
283デフォルトの名無しさん:2008/08/21(木) 03:17:58
関数の引数にauto使えないのかなあ。

いちいち、
 auto twice(T)(T x) { return x*2; }
と書かなくても、
 auto twice(auto x) { return x*2; }
と書けたらいいのに。

あと、ラムダ式もほしい
 auto twice = (int x) => x * 2;
さらに、ジェネリックラムダ式とか…
 auto twice = (T)(T x) => x * 2;
 auto twice = (auto x) => x * 2;
 auto twice = x => x * 2;
284デフォルトの名無しさん:2008/08/21(木) 03:30:51
>>282
それは構文上問題ないからいいだろw

auto var = Foo(arg1, arg2);
とか書いて怒られるのはよくある
でnewつける

C++に戻ると、クラスや構造体のフィールドの定義で初期化を書いて怒られる
285デフォルトの名無しさん:2008/08/21(木) 03:40:13
>>284
template OpCallConstructor() {
static typeof(this) opCall(Args)(Args args) {
return new typeof(this)(args);
}
}
286デフォルトの名無しさん:2008/08/21(木) 08:04:13
>>285
(Args)は(Args...)にしとくべきだな
287デフォルトの名無しさん:2008/08/21(木) 09:09:52
>>285
mixinが必要なのがちょっと面倒だな。
勝手にインジェクションするようなテンプレートは書けるだろうか?
288デフォルトの名無しさん:2008/08/21(木) 11:30:40
>>283
auto twice = (int x){return x * 2;};
alias std.functional.unaryFun!("a*2") twice;
まあ、後者はクロージャじゃないし色々使いにくいけども…
289デフォルトの名無しさん:2008/08/23(土) 01:33:14
double a = 3.14;
writef("%f %1.2f",a,a);

結果:
0 3.14

これってバグ?仕様?(gdc 0.24 mingw)
290デフォルトの名無しさん:2008/08/23(土) 08:51:58
D言語、さすがにもうまとまってきた感がある・・・

「ヲルさん!うは!まじかよ!またコンパイル通らねぇww」

あの感覚はもう味わえないのかな

291デフォルトの名無しさん:2008/08/23(土) 09:06:07
D1.0+tangoとかが狙い目。Tangoはまだ仕様が安定してない。
最近も、Path周りでコンパイルは通るけど実行時にエラーをはきまくるという惨事が体験できた。
いつになったら1.0が出るのか…いつになったらD2.0に対応するのか…wktkが止まらない。
292デフォルトの名無しさん:2008/08/23(土) 09:11:00
マゾ的にはなかなか苦痛がやってこない放置プレイもまた快感。
293デフォルトの名無しさん:2008/08/23(土) 11:11:33
俺はマゾヒストじゃないからいい加減まちくたびれたお
294デフォルトの名無しさん:2008/08/23(土) 11:42:14
ttp://www.reddit.com/user/WalterBright/
うぉるタンうおっち
295デフォルトの名無しさん:2008/08/23(土) 13:07:09
いまのところ、D には画像を扱うための
標準的な方法はなっしんぐ?
296デフォルトの名無しさん:2008/08/23(土) 13:10:16
DMagickでも作っておくれ
297デフォルトの名無しさん:2008/08/23(土) 15:58:52
ttp://www.dsource.org/projects/bindings/browser/trunk/freeimage
ごく単純な FreeImageBitmap ってのが用意されてるみたいだから、これを
ベースに必要な部分を継ぎ足してけばいいんじゃないかな。
もちろん ImageMagick 叩いたほうが場合によってはお手軽だろうけど。
298デフォルトの名無しさん:2008/08/23(土) 16:41:47
そろそろ標準ライブラリの整備始まれー
299デフォルトの名無しさん:2008/08/24(日) 02:05:24
dfl rev72 + dmd 2.018 で動作を確認
300デフォルトの名無しさん:2008/08/24(日) 03:04:54
次のネタがくるまで標準に何を求めるのか列挙していこうぜ。
301デフォルトの名無しさん:2008/08/24(日) 03:34:28
・繰り返し行われる破壊的変更
302デフォルトの名無しさん:2008/08/24(日) 05:29:29
>>295
一応手元にpngを読み書き編集表示(要opengl)(パレット利用不可)するライブラリがあるが、
これでは使い勝手が悪いのでなんとも。
ほかのも読めるようにしたいが、自分では使わんので放置してるなあ。
なんか標準的に使えるものをコミットしたいが……
303デフォルトの名無しさん:2008/08/24(日) 10:11:36
そろそろD3.0が登場しそうな気がしてきた。
304デフォルトの名無しさん:2008/08/24(日) 11:19:31
そうなったら(SM的な意味で)信者歓喜だな
305デフォルトの名無しさん:2008/08/24(日) 12:35:35
最新verが欲しくてgdc(Rev.243)をビルドしてみたんだが、
ビルドしてインストールしたものを使うと
object.d: module object cannot read file 'object.d'
とか言われてしまう。

cc1dをsourceforgeの0.24で置き換えると普通に動くのだが、
どうやらcc1dがコンパイラ本体らしいので意味がない・・・

この辺はまだまだ十分マゾいと思った。
306デフォルトの名無しさん:2008/08/25(月) 03:19:09
なんでfunction型って、delegate型に暗黙変換できないの?
307デフォルトの名無しさん:2008/08/25(月) 03:24:50
>>306
引数の型が同じでも、delegateのほうが余分に一つ引数を取るからじゃないかな。
308デフォルトの名無しさん:2008/08/25(月) 05:16:37
周囲の環境には触れないだけなら、
フレームポインタをnullにすればいいだけなんじゃ…
----
import std.stdio;
void main(){
static int func(int a, int b){return a+b+1;};
int delegate(int,int) dg;
// いちいちこうやらないと突っ込めないのが面倒…
// dg = &func; これで通れば関数の引数とかもっと楽になるのに…
dg = (int a, int b){return func(a,b);};
writef(dg(2,5));
}
----
って思ってよく見てみたら、
今後の方向性: 関数ポインタとdelegateの構文を共通にして、 相互に互換性を持たせる予定です。
ってのがあるのな。早くやってほしいな。
309デフォルトの名無しさん:2008/08/25(月) 05:32:09
>>308
フレームポインタ/thisポインタは一番前だから、そういうわけには行かない
310デフォルトの名無しさん:2008/08/25(月) 05:34:18
toDelegateで過去ログを検索しる
311デフォルトの名無しさん:2008/08/25(月) 16:44:57
binding win32apiでSwitchToFiberを使おうと思ったのだが、static if(_WIN32_WINDOWS >= 0x410)
となっていてSwitchToFiberがバイパスされる。const _WIN32_WINDOWS = 0x410とすればいけるはずだか
これはどこに記述すればいいの。自分の作ったファイルだとmoduleが違うので効果無かった。
312デフォルトの名無しさん:2008/08/25(月) 21:27:10
>>311
version=WindowsXP
ってコンパイラスイッチで指定すればOKなはず。
313デフォルトの名無しさん:2008/08/25(月) 22:59:10
>>303
それでもいいや
D3 is written by D2 って感じでさ
熱い更新が欲しい
314デフォルトの名無しさん:2008/08/26(火) 08:31:47
>>312
ありがとう。いけた。
315デフォルトの名無しさん:2008/08/26(火) 23:06:09
やっとgdc(mingw vista)がビルドできた。
2ヶ月くらいかかった。
罠が多すぎる・・・
316デフォルトの名無しさん:2008/08/26(火) 23:14:31
やり方を教えてくれるととても助かる
317315:2008/08/27(水) 00:48:42
基本は一応gdc同梱のマニュアル通り。
ポイントが多すぎて一々全部覚えていないので、
覚えているものをいくつか。記憶違いがあったらすまん。

・インストーラ版のmsysを使うとうまくビルドできない(vista特有?)ので1.0.11のファイルを全て落として手動インストール
・m4、automakeは最新のものをソースからビルド。sourceforgeのものを使ったところ謎のエラー。
・gcc-4.1.2、gdc(Rev.243)の組み合わせでうまくいった。他のバージョンは不明。
・../configure --prefix=c:/msys/gdc --disable-shared --enable-languages=c,d --host=mingw32 --target=mingw32 --with-gnu-ld --with-gnu-as --enable-threads --disable-nls --disable-win32-registry --disable-shared --enable-sjlj-exceptions
・--prefixはwindows風のパスを与えないと、ビルド後にphobosが見つけられない不良品になる
・ビルドフォルダ/gcc/Makefile中のORIGINAL_LD_FOR_TARGETがおかしくエラーで止まるので"ld"に修正
・printf("%n")がダメらしく(vista特有)無限ループに陥るのでgcc/genmodes.cを修正。放っておくとディスクを食い尽くすので注意
・com.dのComObjectで謎のエラーが出るが、コンパイルオプション-O2を消すと通る
318デフォルトの名無しさん:2008/08/27(水) 00:58:19
ありがとう!俺も色々試してみるわ
319デフォルトの名無しさん:2008/08/27(水) 11:35:28
>>315
最高すぐる
320デフォルトの名無しさん:2008/08/27(水) 14:59:59
gdcのメンテナになるべき
321デフォルトの名無しさん:2008/08/27(水) 16:47:01
更新まーだー?
322デフォルトの名無しさん:2008/08/28(木) 18:44:06
gdc が D ver.2 対応になっていれば移行できるんだけどなぁ…
gdc のソース読むしかないのか。
323デフォルトの名無しさん:2008/08/28(木) 19:06:30
gdcのsvn、D 2に対応してるよ
324デフォルトの名無しさん:2008/08/28(木) 19:19:11
 Poseidonフォーラムに日本語ファイルがアップされていた。
 結構いけそう。

ttp://www.dsource.org/forums/viewtopic.php?t=4155

325デフォルトの名無しさん:2008/08/28(木) 19:41:11
おぉ・・・まじだすげぇ
重いDescentよりも軽いPoseidonのほうに期待している俺としては朗報だ…
326デフォルトの名無しさん:2008/08/28(木) 20:18:35
元々日本語ファイルあったじゃん
完全日本語になったというわけでもないし
327デフォルトの名無しさん:2008/08/28(木) 20:47:40
Descentってなんかぬるぽ発生して落ちるんだけど
Poseidon最新版はいいね
328デフォルトの名無しさん:2008/08/29(金) 01:47:09
そんなことより聞いてください。

今日、職場で破壊的な仕様変更があったんです。
この一年の仕事が全てダメになるようなそんな変更。

当然、みんな怒りました。
誰の口からも出るのは愚痴、愚痴、愚痴。

でも、俺には
そいつにうぉるたんが降臨したんだ、うぉるたん、ラブ!(・∀・)
って思えたんだ。

こんな心に余裕のある人間にしてくれてありがとう、D言語
329デフォルトの名無しさん:2008/08/29(金) 01:48:24
降臨っていうか、そいつうぉるたんじゃね?
330デフォルトの名無しさん:2008/08/29(金) 03:51:23
>>328
そのプロジェクトは俺の生活インフラに関係ないと信じたい
331デフォルトの名無しさん:2008/08/29(金) 11:59:28
>>328
俺はまだコードを書いていていいんだ!
気に入らないところを直すチャンスだ!
と考えたらいいとかなんとか乙
332デフォルトの名無しさん:2008/08/29(金) 13:02:18
Dも本来はメンテナンスの容易さを意図してるのになw
まあ破壊的変更がなくなるほど自コードのメンテナンスも必要なくなっていく……
pureマダー?
333デフォルトの名無しさん:2008/08/29(金) 14:33:41
をるたんはとっととscope周りのバグを直すべき
334デフォルトの名無しさん:2008/08/29(金) 16:33:01
ここでmacroとかきたら面白いと思う
335デフォルトの名無しさん:2008/08/29(金) 16:53:52
スライドで全く触れられていない機能が突然搭載されるとかでもいいな
336デフォルトの名無しさん:2008/08/29(金) 19:00:43
ここで唐突にAOP
337デフォルトの名無しさん:2008/08/29(金) 19:21:14
AOPはないわ・・・
338デフォルトの名無しさん:2008/08/30(土) 04:54:27
じゃ、Hibernate で
339デフォルトの名無しさん:2008/08/30(土) 19:09:53
phobos用のコレクションライブラリ作るっていってた奴どこいっちゃったんだよ
340デフォルトの名無しさん:2008/08/30(土) 19:17:57
gdc使ってるとcore吐いてばっかりで、でかいプロジェクトを支えるものには
到底なりえないと感じる。あんまり使われてないのかなぁ。
341デフォルトの名無しさん:2008/08/30(土) 19:40:48
ククク、dmdならcore吐かないなどと思ったか……
342デフォルトの名無しさん:2008/08/30(土) 20:21:22
Access violation. の度に鬱々としてくるぜ。
343デフォルトの名無しさん:2008/08/30(土) 20:27:31
void main() {
auto x = { asm { nop; } };
}
デリゲートリテラルのなかにasm書いたらDMDが落ちる…
auto x = delegate(){ asm { nop; } }; //もダメ。

auto x = delegate void(){ asm { nop; } }; //こっちは大丈夫

ついで、
auto x ={ asm {} }; //はなぜかシンタックスエラー
344デフォルトの名無しさん:2008/08/31(日) 02:50:52
>>343
http://codepad.org/hYMtPbx0

これでもおかしいみたいだけど
void main() { asm { nop ; } }
345デフォルトの名無しさん:2008/08/31(日) 11:45:09
getMembersマダー
346デフォルトの名無しさん:2008/08/31(日) 12:48:45
allMembersみたいな?
347デフォルトの名無しさん:2008/08/31(日) 12:59:13
windows bindings って、なんだかコントロールとかのあたりにかなり抜けがあるね・・・

単純にリストビュー使いたいだけなのに、
自分で定義してやらないといけない構造体とかが
けっこうあるわ
348デフォルトの名無しさん:2008/08/31(日) 17:19:30
dflのイメージリストがリストビューだけってなんでよ。
絶望した。
349デフォルトの名無しさん:2008/08/31(日) 19:18:49
dflのイメージリストはリストビューだけでしか使えないってことか?
350デフォルトの名無しさん:2008/09/01(月) 20:02:06
ようやく構造体のコンストラクタ来るみたいだね
351デフォルトの名無しさん:2008/09/01(月) 20:19:14
どこ情報だよ
352デフォルトの名無しさん:2008/09/01(月) 20:47:42
だれかstd.openrjの使い方を教えてくれ
353デフォルトの名無しさん:2008/09/01(月) 22:38:21
やっとglutがまともに動いた
OMFやらimplibの罠やら勘弁してくれ
354デフォルトの名無しさん:2008/09/01(月) 23:54:36
355デフォルトの名無しさん:2008/09/02(火) 01:01:11
>>354 素晴らしい
356デフォルトの名無しさん:2008/09/02(火) 01:09:18
>>352 あれってもう動かないのでは
357デフォルトの名無しさん:2008/09/02(火) 10:15:33
>>354
そんなとこでも更新チェックできるんだな
358デフォルトの名無しさん:2008/09/02(火) 15:48:07
-profileで作成されるログファイルのシンボル名をデマングルした状態で出力する方法ってありますか?
359デフォルトの名無しさん:2008/09/02(火) 17:05:20
std.demangle使って自分で変換プログラムを書く
360デフォルトの名無しさん:2008/09/03(水) 16:23:17
1.035 & 2.019 きたー
361デフォルトの名無しさん:2008/09/03(水) 19:16:29
New/Changed Features

* Added struct constructors.
* Special member functions _ctor, _dtor, etc., now have two leading _ in order to not conflict with the user identifier space.

Bugs Fixed

* Bugzilla 1322: foreach bypasses invariant
* Bugzilla 1615: inout is allowed in foreach of string literal
* Bugzilla 1627: ICE with a method called _ctor
* Bugzilla 1633: Nonsensical "C style cast illegal" message with !is
* Bugzilla 1771: dmd fails to execute on linux
* Bugzilla 1773: excessively long integer literal
* Bugzilla 1785: Mixing in an incorrect array literal causes infinite loop.
* Bugzilla 2176: Assertion failure: 'sz == es2->sz' on line 1339 in file 'constfold.c' (concatenating strings of different types)
* Bugzilla 2183: Bad formatting in std.c.stdlib
* Bugzilla 2190: toHash documentation is deprecated [D2.0]
* Bugzilla 2232: DMD generates invalid code when an object file is compiled -inline
* Bugzilla 2241: DMD abort
* Bugzilla 2243: const bool = is(function literal), badly miscast
* Bugzilla 2262: -inline breaks -lib library
* Bugzilla 2286: movmskpd compiled incorrectly
* Bugzilla 2287: std.conv should accept structs defining toString
* Bugzilla 2289: Stack overflow on very large BigInt to string.
* Bugzilla 2308: CTFE crash on foreach over nonexistent variable
* Bugzilla 2311: Static destructors in templates are never run
* Bugzilla 2314: Crash on anonymous class variable instantiation
* Bugzilla 2316: std.file docs are out of date
* Bugzilla 2317: asm offsetof generates: Internal error: ../ztc/cod3.c 2651
362デフォルトの名無しさん:2008/09/03(水) 19:44:21
イマイチだな。また一ヶ月まちか…
363デフォルトの名無しさん:2008/09/03(水) 20:15:58
C/C++は魔物だ。偏在するすべての言語がC/C++に返っていく。

原題はLispだったと思うけど。
364デフォルトの名無しさん:2008/09/04(木) 01:08:09
これで struct に interface が適応できるようになったら class 使わなくても何とかなるんじゃね?
継承には opDot を使うとか。
365デフォルトの名無しさん:2008/09/04(木) 03:54:00
struct ctorできたらstatic opCallいらんよね?
366デフォルトの名無しさん:2008/09/04(木) 06:12:16
確認してないけど、これでやっとコンテナがまともに作れるわ
367デフォルトの名無しさん:2008/09/04(木) 07:33:53
>>364
vtblないから仮想化できない
368デフォルトの名無しさん:2008/09/04(木) 09:27:52
>>365
struct S {
private int x;

this(int x) {
writeln("S.__ctor");
this.x = x;
}

static S opCall(int x) {
writeln("S.opCall");
S s;
s.x = x;
return s;
}
}

void main(){
S s = 100; // (1) S.opCall
s = S(200); // (2) S.__ctor
s = *new S(300); // (3) S.__ctor
}

たぶんバグだが、opCallを定義しないと(1)で100が迷子になる。
369デフォルトの名無しさん:2008/09/04(木) 09:31:51
というわけで、当面は構造体に

static typeof(*this) opCall(Args...)(Args args) {
return typeof(*this)(args);
}

とか書いとくといいと思う。
370デフォルトの名無しさん:2008/09/04(木) 12:31:52
それって無限ループにはならないの?
371デフォルトの名無しさん:2008/09/04(木) 12:37:06
>>370
S(...)ではコンストラクタが優先して呼ばれるようになった。
コンストラクタが一つも定義されてなければopCall、
opCallも定義されてなければ構造体リテラル、になる。
372デフォルトの名無しさん:2008/09/04(木) 22:17:51
>>371
よきに計らってくれるというわけか
373デフォルトの名無しさん:2008/09/05(金) 03:58:17
tango.io.Conduit -> tango.io.device.Conduit (trunk)
他の Conduit 系も移動するようです。Mango の trunk にも反映済。
さすが Tango、俺らの期待を裏切らない破壊的な変更だぜ。
374デフォルトの名無しさん:2008/09/05(金) 04:41:35
http://www.dsource.org/projects/tango/wiki/0_99_8_BreakingChanges
TimeSpanにも変更があるっぽい。
俺もこのstaticな仕様は疑問だったのでこういう破壊的変更は嬉しい。直すのもそんなに苦じゃないし。むしろ悦だし。
375デフォルトの名無しさん:2008/09/05(金) 09:13:21
http://www.dsource.org/projects/tango/browser/branches/experimental
D2.0への対応もぼちぼちやってるね
2週間前の更新か
376デフォルトの名無しさん:2008/09/05(金) 18:17:47
参照さえあれば、俺はC++地獄から解放されるというのに…!
377デフォルトの名無しさん:2008/09/05(金) 22:10:22
デストラクタでメンバのオブジェクトをdeleteしたい…
C++に慣れてしまった俺にはGCは刺激が強すぎるお
378デフォルトの名無しさん:2008/09/05(金) 22:34:51
>>377
っscope
379デフォルトの名無しさん:2008/09/05(金) 22:44:16
>>378
scopeはメンバ変数には使えないんじゃないか?
380デフォルトの名無しさん:2008/09/05(金) 22:52:14
scopeクラスのscopeフィールドをコンストラクタのscope引数で初期化できるようにしてくれるよう、をるたんに頼むしかない。
381デフォルトの名無しさん:2008/09/05(金) 23:18:57
そういえば、scopeグローバル変数のデストラクタも呼ばれないな。
382デフォルトの名無しさん:2008/09/05(金) 23:33:41
なぜかコンパイル通らんと思ったらsharedが予約語になってた。
383デフォルトの名無しさん:2008/09/06(土) 00:04:33
2.018から、リンカが落ちてビルドできないバグが出るようになったんだが、2.019でも直ってないな。
気長に待つしかないか。

ライブラリをビルド(dmd -libでビルド)したときにライブラリ内に作られると思われるシンボルの依存関係の記述が、どうやら壊れてしまうみたい。
ライブラリの他の所で使われてはいるが主プログラムからは使われて無いシンボルが、「使われてないシンボルはリンクしない」というリンカの機能で消えちゃう。
そうすると、リンカが落ちると。
384デフォルトの名無しさん:2008/09/06(土) 00:07:26
sharedに期待
385デフォルトの名無しさん:2008/09/06(土) 00:09:37
何をsharedするんだ?やっぱマルチスレッド関係かな?
386デフォルトの名無しさん:2008/09/06(土) 02:43:57
デストラクタの時点で、メンバへの参照が既に無効なんだっけ?
387デフォルトの名無しさん:2008/09/06(土) 03:05:40
>>386
イエス。
ただし、手動でdeleteした場合や、scope変数のスコープアウトで開放された場合を除く。
388デフォルトの名無しさん:2008/09/06(土) 03:52:34
>>383
俺も似たような状態だな。
その推定は向こうでも議論されてるの?今自分で探してみたけど見つからなかった。
リンカがクラッシュするという深刻度の高いバグという気がするので議論されてると思ったのだが。
389デフォルトの名無しさん:2008/09/06(土) 12:59:29
>>387
なんでだろ。デストラクタで参照残ってると、なんか不都合があったっけ?
390デフォルトの名無しさん:2008/09/06(土) 13:17:07
>>389
たとえば、二つのオブジェクトがお互いをメンバに持っている場合、
ガーベジコレクタはどっちかを先に解放しないといけない。
すると、後に開放された方のメンバは無効だよね。
391デフォルトの名無しさん:2008/09/06(土) 14:01:47
Dって弱参照はないんだっけ?
392383:2008/09/06(土) 16:32:03
>>388
議論は無いみたい。
だからバグレポでも挙げようと、バグが出る最小のコードを見出そうといろいろいじくってみたんだけど、なんか落ちたり落ちなかったりが微妙で、よく分からなかった。
結果分かったのは、383の推定は間違ってるということだけ。
応急処置としていじくったときに、落ちなくなった様子から383の推定をしたんだけど、原因は別にあるみたい。

コードを削って落ちる原因となっている所を見つけても、該当部分を取り出して別個にビルドしてみると落ちなかったりして、原因は分からず。
393デフォルトの名無しさん:2008/09/06(土) 17:06:20
また変なバグでてるよ…

struct S(bool b) if(b) { }
struct S(bool b) if(!b) { }

void main(){
S!(true) s = S!(false)();
}
394デフォルトの名無しさん:2008/09/06(土) 19:16:41
>>393
すげぇな・・・これがDか
まったくわからん・・・
395393:2008/09/06(土) 19:30:18
や、これもコンパイル通っちゃうよ…
をるたん助けて

struct S { }
struct T { }

void main(){
S s = T();
}
396デフォルトの名無しさん:2008/09/06(土) 19:32:48
typedef int myint;
void main(){
myint x = 1;
}

構造体型・整数型の変数の初期化子が他の構造体型・整数型の値を受け入れてしまうバグのようだ
397デフォルトの名無しさん:2008/09/06(土) 19:58:28
しばらく見ないうちにC++を超えたな

カオス度が
398デフォルトの名無しさん:2008/09/06(土) 20:29:19
>>393
なんじゃこりゃw
これどういう構文なの?久々に来たからさっぱり分からん

>>397
完成してなおカオス度が増してるC++よりはマシじゃね?
399デフォルトの名無しさん:2008/09/06(土) 20:54:22
そのうちEffective DとMore Effective Dを読みこなしてからでないと
コーディングがはじめられないことになるんだろうか。まぁ、マイナーなうちは
後方互換捨てて言語のほうを直して対処されるだろうから今から気にしてても
仕方ないのだろうけど。
400デフォルトの名無しさん:2008/09/06(土) 21:08:24
Cとの互換性も捨ててしまえば色々綺麗になりそうなもんなんだがな
401デフォルトの名無しさん:2008/09/06(土) 21:22:07
互換性捨てすぎてPythonとかHaskellみたいな文法になったりってことはさすがにないか
402デフォルトの名無しさん:2008/09/06(土) 22:12:57
Dはこのままメジャーバージョンアップする度に
互換性をまるっと捨てた方が色々実験できて良いと思う
403デフォルトの名無しさん:2008/09/06(土) 22:21:08
次回バージョンはD 3000だな
404デフォルトの名無しさん:2008/09/06(土) 22:41:32
破壊的変更まだー?
405デフォルトの名無しさん:2008/09/06(土) 22:48:50
二重比較演算子
if (0 < x < 100)
とか付いちゃったりしてな
406デフォルトの名無しさん:2008/09/06(土) 22:54:34
たまにたまらなく欲しいな二重比較。

>>400,402,405
Mの多さに吹いた。
407デフォルトの名無しさん:2008/09/06(土) 22:55:11
x in 1..100で
408406:2008/09/06(土) 22:56:23
安価ミスw 最後は>>404
ゴメンね、M扱いしちゃってゴメンね。
409デフォルトの名無しさん:2008/09/07(日) 10:21:44
>>401
何でもかんでも最終的には構文木になって、LISPになっちゃうんだけどね。
410デフォルトの名無しさん:2008/09/07(日) 10:40:26
いいえ、Adaです
411デフォルトの名無しさん:2008/09/07(日) 11:05:08
>>409
構文木があればlispというのは極論すぎ。
使用者から構文木が完全に隠されてる言語では構文木は本質じゃない。
412デフォルトの名無しさん:2008/09/07(日) 13:26:41
デリゲートリテラルを使って継続渡しスタイル!
413デフォルトの名無しさん:2008/09/07(日) 14:10:47
コンパイル時C++コンパイラ
414デフォルトの名無しさん:2008/09/07(日) 15:07:56
比較演算子がもっと進化してこうなるとか

if( x*s-4*x-5 > 0 )
415デフォルトの名無しさん:2008/09/07(日) 15:19:47
416デフォルトの名無しさん:2008/09/07(日) 17:35:31
417デフォルトの名無しさん:2008/09/07(日) 17:56:22
>>414
sってなんだ?
ラプラス変換された微分方程式でも扱えるようになるのか?w
418デフォルトの名無しさん:2008/09/07(日) 18:00:03
>>417
xとタイプミスしちゃったや、てへ
419デフォルトの名無しさん:2008/09/07(日) 19:29:21
420デフォルトの名無しさん:2008/09/07(日) 22:09:55
>>414は、数式の値域が判断できないかなって言ったんじゃないのかな?
f(x) = x*x-4*x-5 {x|x∈R}
としたときf(x)の取りうるすべての値が0以上であるかどうか、という意味で。
Mathematicaみたいに数式処理をサポートしない限り無理かと思うが
421デフォルトの名無しさん:2008/09/07(日) 22:20:59
>>420
>数式処理
expression templateで木を作っちゃえばなんとかなるんじゃね?
C++だと全部パターンマッチでやる必要があってむちゃくちゃ苦行だが、
Dなら比較的実用的なものも可能そう。
422デフォルトの名無しさん:2008/09/09(火) 10:23:13
皆さん待望の破壊的変更が来そうですよ (-.-;
イテレータ関係の仕様を再検討。opApply廃止・std.range新設か?

http://lists.puremagic.com/pipermail/digitalmars-d-announce/2008-September/010146.html
http://ssli.ee.washington.edu/~aalexand/d/tmp/std_range.html
423デフォルトの名無しさん:2008/09/09(火) 10:53:05
廃止きたww
424デフォルトの名無しさん:2008/09/09(火) 10:59:30
イテレータ見直しの後にはジェネレータが来るのか?
http://lists.puremagic.com/pipermail/digitalmars-d-announce/2008-September/010159.html より:

> auto fib = generate!("a[0] + a[1]")(1, 1);
425デフォルトの名無しさん:2008/09/09(火) 15:01:08
いやっほーーーーーーーーーー
426デフォルトの名無しさん:2008/09/09(火) 16:08:36
ますます参照が欲しくなるな
427デフォルトの名無しさん:2008/09/09(火) 16:26:45
rangeとiteratorは後付だし、なおざりっぽさ漂ってたからな−。
C++寄りの人間としては嬉しい。うん、廃止も、お前らと同じ一人のマゾとして嬉しいよ!
428デフォルトの名無しさん:2008/09/09(火) 16:34:44
>426
422のリンク先に

> There are also a few bugs in the compiler and
> some needed language enhancements (e.g. returning a reference from a
> function); Walter is committed to implement them.

とあるから、関数が参照を返せるようにはなる。
429デフォルトの名無しさん:2008/09/09(火) 16:53:17
バージョン2が出てバージョン1が完成したように、
バージョン3相当の様変わりをしたときにバージョン2は完成するんだろうな。
まだまだワクワクが止まらないぜ!
430デフォルトの名無しさん:2008/09/09(火) 17:00:42
Dこそが100年後の言語
431デフォルトの名無しさん:2008/09/09(火) 17:06:41
dmd1
dmd2
dmd3
dmd4
...
というようにバージョン分けで派閥が生まれたりしてな
432デフォルトの名無しさん:2008/09/09(火) 17:14:55
LISPと同じ道をたどると予言してみる
433デフォルトの名無しさん:2008/09/09(火) 17:54:30
うぉるたんがヒゲを伸ばせばすべて解決する
434デフォルトの名無しさん:2008/09/09(火) 18:44:01
>>432
Dの場合、いろいろ拡張加えて滅茶苦茶にしてるのが原作者だから手に負えない
435デフォルトの名無しさん:2008/09/09(火) 20:39:00
D++へのフラグが立ったな
436デフォルトの名無しさん:2008/09/09(火) 20:39:57
て言うかみんなはメチャクチャになってるって認識なの?
俺はそんなでもないと思うんだが・・・
437デフォルトの名無しさん:2008/09/09(火) 21:49:02
>>435
そしてD#や並列処理に特化したParallel-Dなどが生まれるんですよね
438デフォルトの名無しさん:2008/09/09(火) 22:17:55
滅茶苦茶にしてるっていうか
滅茶苦茶やってるって感じ
D自体はいい方向に進んでるんじゃない?
439デフォルトの名無しさん:2008/09/09(火) 22:25:42
opApplyが廃止されるだけでforeachは存続?
440デフォルトの名無しさん:2008/09/10(水) 00:00:42
そのうちerlangやscalaに対抗しますとか言い出すな
441デフォルトの名無しさん:2008/09/10(水) 00:46:01
>>424
最近そういう系の機能(mixin?)について感じるのだけど、
ソースコードを文字列として切り貼りするのって、確かに強力だけど何かヤだなぁ……
無理やりなハックがまかり通って、誰にも読めないコードが氾濫しそうというか、実も蓋もなさすぎる感じ。
そこにせっかくコードが書かれてるのに、IDEも色分けとかしてくれなさそうだし。

適用範囲をシンボル名あたりだけに限定しても、シンプルかつ十分なんじゃなかろーか。
template mixinじゃなくてほんとにmixinを使うべき場面って、
「クラスを使う側がプロパティの名前を決められる」とかくらいしか思いつかない。
442デフォルトの名無しさん:2008/09/10(水) 01:31:48
もはやコンパイル時evalとでもいうか。乱用したら危険だけど、
railsみたいなすごいのを生んでくれる可能性も・・・。
443デフォルトの名無しさん:2008/09/10(水) 01:44:54
Javaはバイトコード(オブジェクトファイル)すら、動的に書き換えたりするけどね。
でもD言語はシンプルにC++の欠点を排除しただけの、
ネイティブ実行可能コードを吐いてくれる言語であって欲しい。
444デフォルトの名無しさん:2008/09/10(水) 01:55:41
言語レベルでmixinなりimportなりできるのもいいけど、エディタレベルで、
参照してる他のモジュールやクラスの関数やメンバの定義をiframe的インターフェイスで編集したい。

-- file1.d
int func(int x){ return x*2; }

ってあったら

-- file2.d
import file1;
void main(){
 int n = 10;
 printf("%d\n", func(int x: n){ return x*2; });
}

って表示できて、file2.d内でfuncの定義を書き換えるとfile1.dの中身も書き換えてくれる、って感じの。
(ファイルが実際に書き換わるんであって、file2.d内だけで定義上書きとかではなし)
445デフォルトの名無しさん:2008/09/10(水) 03:33:58
>>439
opApplyのままかどうかは分からんが、
おそらく内部イテレータが廃止されることはないだろう。
446デフォルトの名無しさん:2008/09/10(水) 03:42:44
opApplyはなんかdelegateとかつかっててオーバーヘッド大きそうな気がしていた。
特に繰り返しってなると小さいことでも大きく出そうだからなぁ…
実際計測とかはしたことないけど。
447デフォルトの名無しさん:2008/09/10(水) 04:25:06
今回の件は内部イテレータと外部イテレータを統一的な構文で扱えるようにするのが目的なんじゃないのかなあ。
448デフォルトの名無しさん:2008/09/10(水) 10:39:06
>>424
ジェネレータほすぃー
449デフォルトの名無しさん:2008/09/10(水) 13:23:59
ジェネレータてなんなの
450デフォルトの名無しさん:2008/09/10(水) 13:29:50
Pythonのジェネレータなのかな。
>>424の例はフィボナッチ数列……? 実装されたとしてこれってどう動くの?
451デフォルトの名無しさん:2008/09/10(水) 14:44:20
>>448
opApplyが正にジェネレータな気がするんだが
452デフォルトの名無しさん:2008/09/10(水) 14:57:48
>>451
砂糖がかかってなくて構文こそ無骨だけど、
実質はPythonのジェネレータやC#のEnumeratorと同じだよね。
453デフォルトの名無しさん:2008/09/10(水) 17:42:13
opApplyはpythonよりrubyに近い希ガス
実行途中で止めてまた再開とかできないし
454デフォルトの名無しさん:2008/09/10(水) 17:56:48
> auto fib = generate!("a[0] + a[1]")(1, 1);
int i = fib();
こうしたらフィボナッチ数列の値が呼び出す度に順に得られるのかな
無限リストとか本当の遅延評価とかそんなもん?
generate!()を作ってみようとしてめんどくさくなってやめたw
455デフォルトの名無しさん:2008/09/10(水) 20:27:22
auto generate(alias F, T)(const(T)[] a...) {
auto i = a.length;
return new class {
T opCall() {
if(i) {
return a[$ - (i--)];
} else {
auto val = std.functional.unaryFun!(F)(a);
a = val ~ a;
return val;
}
}
};
}
456デフォルトの名無しさん:2008/09/10(水) 22:16:20
よく考えたら匿名クラスにする必要はなかった

auto generate(alias F, T)(const(T)[] a...) {
auto i = a.length;
return {
if(i) {
return a[$ - (i--)];
} else {
auto val = std.functional.unaryFun!(F)(a);
a = val ~ a;
return val;
}
};
}
457デフォルトの名無しさん:2008/09/10(水) 22:19:02
なんだ!D言語って!! 
458デフォルトの名無しさん:2008/09/11(木) 01:11:32
多少の無駄は気にせずこう書いたほうがエレガントで好き。
auto generate(alias F,T)(const(T)[]a...){
    return{
        scope(exit)a = a[1..$] ~ std.functional.unaryFun!(F)(a);
        return a[0];
    };
}
459454:2008/09/11(木) 01:51:06
>>458
なるほど!
returnの後に処理したかった
そうすればいいんだな
460デフォルトの名無しさん:2008/09/11(木) 02:18:14
>>458
なんか意味変わってないか
461デフォルトの名無しさん:2008/09/11(木) 03:29:56
ngのrangeに関するスレッド長すぎて読むの辛い…
462デフォルトの名無しさん:2008/09/11(木) 11:53:10
>461
メソッド名をどうするかの議論が多いね。
典型的なbikeshedだと思うw
463デフォルトの名無しさん:2008/09/11(木) 18:03:23
フィボナッチ数列って0から始まるんじゃなくてよかったのか
464デフォルトの名無しさん:2008/09/11(木) 21:45:24
どっちでもいいんじゃね。一緒だし
465デフォルトの名無しさん:2008/09/11(木) 22:48:53
tangoにstring型ないの?
466デフォルトの名無しさん:2008/09/12(金) 00:49:08
>>465ない。普通にchar[]使っておけばいいよ。
467デフォルトの名無しさん:2008/09/12(金) 12:00:24
>>457
なんだってなんだ
468デフォルトの名無しさん:2008/09/12(金) 12:04:24
>>467
なんだってなんだってなんだ
469デフォルトの名無しさん:2008/09/12(金) 15:02:07
Traffic for digitalmars.com

ttp://www.alexa.com/data/details/traffic_details/digitalmars.com

China25.8%
United States19.6%
Germany13.3%
India11.3%
United Kingdom4.0%
Iran2.9%
Spain2.2%
Japan2.2%

中国で人気なのか?
日本人の場合は日本語サイト中心の悪寒
470デフォルトの名無しさん:2008/09/12(金) 19:43:55
中国でalexaは人気だったはず
ツールバー入れてる人も多いんじゃないかな
まあ、調べ物してると中国のサイトがヒットすることが多いから日本よりは関心強いんだろうけど
471デフォルトの名無しさん:2008/09/12(金) 19:50:13
「D言語?C++0x最強に決まってんだろwww」って言われたときのためのコピペ作ろうぜw
472デフォルトの名無しさん:2008/09/12(金) 21:24:11
C++0xが最強だと思っているなら、C++0x最強を使えばよい。
荒れるだけなので敢えて張り合う必要はない。
473デフォルトの名無しさん:2008/09/12(金) 22:04:36
C++0xスレはベテランプログラマがワイワイやってる印象がある
しょーもない煽りは効かないんじゃね
474デフォルトの名無しさん:2008/09/12(金) 22:14:05
C++0xスレに煽りに行くとかいう話じゃないと思うが
475デフォルトの名無しさん:2008/09/12(金) 23:26:31
ttp://ssli.ee.washington.edu/~aalexand/d/tmp/std_range.html
最初の
r
s
r.before(s)
yellow(r, s)
s.after(r)
のバーの考え方って他にどこかで見たことある?
ていうかyellow()てなんぞw
476デフォルトの名無しさん:2008/09/13(土) 03:40:03
>>471
クロージャの文法が気持ち悪くない
477デフォルトの名無しさん:2008/09/13(土) 04:21:37
>>475
バーの考え方って何?

yellowは右の図の色だと思う(別にメソッドとかを表しているわけじゃないかと)
478デフォルトの名無しさん:2008/09/13(土) 07:23:53
>>475
yellow は、NOTE に書いてあるように、
そもそもメソッドを提供すべきか、だとするとどういう名前をつけたらいいのか
という話だよね。
r と s の領域 and だから単純に r.and(s) でいいような気がするんだけど、
そういうもんでもないのか?

それより、head-toe より、head-tail じゃねーのとか思うんだけどなぁ。
いや、まぁ、言葉がちょっと違うとかどーでもいいレベルなんだけどさ。
479475:2008/09/13(土) 08:44:17
>>477
rangeをrとsとそれらの論理演算で扱うbefore-and-after conceptという考え方って新しいのかなと
yellowが右のバーの色なのはわかるんだけどなんでyellowだけyellowなのかと

>>478
メソッド名や提供するかどうか自体を決めかねてるからか
head-tailの方がよく聞くっちゃ聞くように思うな
480デフォルトの名無しさん:2008/09/13(土) 22:18:03
function型にdelegateとかopCallを定義したオブジェクトとか渡せない?
functionとdelegateとopCall可能オブジェクトを一緒くたに受け取る方法とかない?
481デフォルトの名無しさん:2008/09/13(土) 22:44:17
auto call(Func, Args...)(Func func, Args args) {
return func(args);
}
482デフォルトの名無しさん:2008/09/14(日) 00:55:19
>>481
コンパイラがassertionfailureでしにやがる…
483デフォルトの名無しさん:2008/09/14(日) 08:16:14
全部デリゲートにするしかないかな?
484デフォルトの名無しさん:2008/09/14(日) 11:00:39
>>483
boost::functionみたいな方法もあるけど、多分デリゲートのがいい
485デフォルトの名無しさん:2008/09/14(日) 11:10:28
>>481
ReturnType!(Func) call(Func, Args...)(Func func, Args args) {
return func(args);
}
これなら落ちないのにねぇ。まったくDって子は…
486デフォルトの名無しさん:2008/09/14(日) 11:24:16
そこが可愛いんですけどねウフフ

だがマスコットキャラ、テメーはダメだ
487デフォルトの名無しさん:2008/09/14(日) 11:45:44
同感w
488475:2008/09/14(日) 11:48:54
ただデリゲートにするとオブジェクト作りまくることになって遅くない?
489デフォルトの名無しさん:2008/09/14(日) 11:55:23
あれ?戻り値がvoidの関数でもreturnに渡して良かったんだ
最初からそうだっけ
import std.stdio,std.traits;
ReturnType!(F) call(F,TL...)(F f,TL args){return f(args);}
void foo(){}
class A{void bar(){}}
class B{void opCall(){}}
int buz(){return 1;}
void main(){
    call(&foo);
    call(&(new A).bar);
    call(new B);
    writefln(call(&buz));
}
490デフォルトの名無しさん:2008/09/14(日) 12:17:26
>>488
オブジェクト作るのは避けられないと思うよ
std.variantみたいに解決できるかもしれないけどよくわからん
>>489
void a(){}
void b(){
    return a();
}
こういうこと?
491デフォルトの名無しさん:2008/09/14(日) 12:23:20
>490
そうそう
・・・もしかしてC/C++からそうだったりする?
492デフォルトの名無しさん:2008/09/14(日) 12:34:11
>>490
初期の頃はわからないけど普通にできたはずだよ
493492:2008/09/14(日) 12:35:12
490じゃなくて>>491でした
494デフォルトの名無しさん:2008/09/14(日) 17:59:13
>>491
Cでは未定義。
C++98ではvoid型の式に限りreturnに書ける。
495デフォルトの名無しさん:2008/09/14(日) 18:36:47
SDL じゃなくて、Direct3D を使って
画像ファイルを読み込んで表示・・・
するだけでなんだかえらくしんどいのだけど
これって仕様?
496デフォルトの名無しさん:2008/09/14(日) 18:38:43
それは修業が足りないだけ。
DirectX SDKのポーティングでもして鍛えてきてください。
497デフォルトの名無しさん:2008/09/14(日) 19:02:03
仕様。初期化も2D描画も面倒なのでちょっとしたプログラムなら
ラッパーライブラリが使われることが多い。
498デフォルトの名無しさん:2008/09/14(日) 20:26:05
native Direct3Dとかめんどくさすぎて触る気になれん俺
499デフォルトの名無しさん:2008/09/14(日) 21:15:44
結局汎用的に使えるsdlがいいんだな
500デフォルトの名無しさん:2008/09/15(月) 01:53:20
だれかNGのrangeに関する議論を要約してくれ…
501デフォルトの名無しさん:2008/09/15(月) 01:57:58
D言語の本ってどこで買えますか?覚えてみたい。
502デフォルトの名無しさん:2008/09/15(月) 02:01:55
言っとくが、ずっと前に出たD言語の本は今となってはあまり役に立たんからな
503デフォルトの名無しさん:2008/09/15(月) 02:06:10
大きい本屋のプログラミング棚の一番下とかで買えるけど、内容は完全にout-of-dateだよ。

有限会社オングス「D言語パーフェクトガイド―Windows Linux FreeBSD対応」技術評論社、2004、ISBN 978-4774122083

最近出たの(半年以上たったからもうかなり変わってるけど):
Kris Macleod Bell, Lars Ivar Igesund, Sean Kelly, Michael Parker "Learn to Tango with D," Apress, 2008, ISBN 978-1590599600
504デフォルトの名無しさん:2008/09/15(月) 02:18:37
2004年じゃもう予約語レベルで違うんじゃね?w v2と比べたら既に別の言語だよなあ。
入門者はテンプレに幾つかリンクあるから参考にすればいいと思う。C/C++orJava辺り経験があれば問題ないはず。
プログラミング自体の入門者向け文書で古くなってないのは、Hの人のしかないのかな。
505デフォルトの名無しさん:2008/09/15(月) 02:30:51
これいいわよ
www.kmonos.net/alang/d/d-jp080911.chm
506デフォルトの名無しさん:2008/09/15(月) 03:08:29
D言語パーフェクトガイドってどの辺が古い?
自分はこれで入って未だにこれ以上の知識はないが、
今のところ普通にコンパイルできてたりする・・・。

スレの話題がさっぱりわからなくて困るというのはあるけど。
507デフォルトの名無しさん:2008/09/15(月) 06:01:29
D言語パーフェクトガイド読んでないから分からないけど
恐らく今だともっとDっぽい書き方がある気がする
508デフォルトの名無しさん:2008/09/15(月) 08:40:04
あぁ快感だな
「Dっぽい書き方」とか
509デフォルトの名無しさん:2008/09/15(月) 09:26:47
DっぽいHello WorldとかDっぽいFizzBuzzとかあるんかい
510デフォルトの名無しさん:2008/09/15(月) 10:06:58
>>506
boolがbitのaliasだったり、
.sizeofを.sizeって書いてり、
===がまだ使われてたような頃じゃないの?
511デフォルトの名無しさん:2008/09/15(月) 10:46:33
D言語パーフェクトガイドはかなり最初の方のサンプルコードがDMD2.0でコンパイルが通らない
char[] hoge = "hoge";
これで小一時間詰まったのは良い思い出

現在だと公式の言語仕様ページを見るしかない
C言語の知識が必要だが
まあD言語に手を出す変態なんてC++とか余裕ですよね!
512デフォルトの名無しさん:2008/09/15(月) 10:50:43
そもそも、std.stream.stdoutを使ってるからHelloworldのサンプルも動かない。
513デフォルトの名無しさん:2008/09/15(月) 17:43:38
その更新は俺にも分かるいい更新だったな
514デフォルトの名無しさん:2008/09/15(月) 19:16:25
515デフォルトの名無しさん:2008/09/15(月) 19:27:25
>>414
遅レスだけどoptimizerレベルの問題じゃね?
516デフォルトの名無しさん:2008/09/15(月) 20:12:57
C#みたいにシンタックスツリーを値として取得できるようになれば、そのあたりは何とでもなるだろう。
517デフォルトの名無しさん:2008/09/15(月) 20:14:45
>>512もしかしてバージョン2とかじゃそれ使えない?今日入れてみたけどなんかどこ探してもstdoutが無かったんだ・・・
518デフォルトの名無しさん:2008/09/15(月) 20:25:56
>>517
バージョン0の間に消されたから、バージョン1でも使えない。
519デフォルトの名無しさん:2008/09/15(月) 20:57:36
まじすか。じゃあ標準出力のトレンドでも聞こうか
520デフォルトの名無しさん:2008/09/15(月) 21:11:30
>>514
これこのスレの奴が作ってたやつ?
コンパイル時にとかすごすぎだよな…
521デフォルトの名無しさん:2008/09/15(月) 21:16:06
どっちか
std.stdio.writef*();
std.cstream.dout.writef*();
俺は自作した奴使ってるけど
522デフォルトの名無しさん:2008/09/15(月) 21:21:18
>>505
よめないっす。
523デフォルトの名無しさん:2008/09/15(月) 21:24:15
ほんとだ
524デフォルトの名無しさん:2008/09/15(月) 21:25:14
まだ関数オブジェクトとかクロージャを展開してはくれんのか
525デフォルトの名無しさん:2008/09/15(月) 21:40:23
>>514
くそ・・・!実用性など無いのに胸がときめく!俺も変態か・・・
526デフォルトの名無しさん:2008/09/15(月) 21:45:00
適当にstd.stdio.writefln()使ってたけどdout使う方がいいかなー
Stream継承してるし
527デフォルトの名無しさん:2008/09/15(月) 22:14:56
俺も自作だなあ。phobosはstd.encodingを基にしたフィルタストリームを作るべきだよ。
528デフォルトの名無しさん:2008/09/15(月) 23:36:06
>>514
コンパイル時にFizzBuzzとかマジで変態だな…
529デフォルトの名無しさん:2008/09/15(月) 23:41:45
DにもC++のconst_castみたいな区分が導入されないかな。
const(char)*をconst(ubyte)*にキャストするときとか、ついついconst書き忘れる
530デフォルトの名無しさん:2008/09/15(月) 23:59:16
お前ら便利そうなモジュール作ったらどんどん晒そうぜ
531デフォルトの名無しさん:2008/09/16(火) 00:00:50
だめだ。資料無さ過ぎ仕様変わりすぎ。文字列に数字を連結するのすらできんかった。
532デフォルトの名無しさん:2008/09/16(火) 00:28:16
文字列変換関連はものすごくカオスになってるよな
533デフォルトの名無しさん:2008/09/16(火) 00:34:32
おまえら、ゲームとかテレビとか興味ないの?
もしかして、一日24時間365日ずーっとD言語のこと研究してるのか?
534デフォルトの名無しさん:2008/09/16(火) 00:44:59
>>533
バージョンアップしたときにざっといじるくらいだよ
あとは普段からD使ってるから
535デフォルトの名無しさん:2008/09/16(火) 00:52:02
>>529
なんでただ検索しやすくするためだけにcastにしたんだろうな

>>531
//for D2
import std.conv;//to
void main(){
    string s = "train";
    s ~= to!(string)(999);
}
536デフォルトの名無しさん:2008/09/16(火) 00:53:34
入出力はtx使ってる……のは、え、俺だけなのか? 自作がトレンド?
537デフォルトの名無しさん:2008/09/16(火) 01:03:25
片方はkinaba氏だったりして
538デフォルトの名無しさん:2008/09/16(火) 19:33:37
>>535サンクス
数字連結するだけなのに気持ち悪いな・・・。なんかDってJavaほどでもないしC++程でもなくて
中途半端って感じだな。
539デフォルトの名無しさん:2008/09/16(火) 19:36:51
C++も似たようなもんでしょ。
Boostのlexical_castって0xには入らないの?
540デフォルトの名無しさん:2008/09/16(火) 19:45:33
こっちのほうがお好みか?w

import std.string;
void main(){
  string s = "train" ~ .toString(999);
}
541デフォルトの名無しさん:2008/09/16(火) 20:12:56
ほら、記号と英字と数字の入り混じり方が最高に入力しづらくない?ベストはJavaみたいのだけど
まぁ、個人の意見なんで、気にしないでください。
あれ?もしかして演算子のオーバーロードで解決できる?
542デフォルトの名無しさん:2008/09/16(火) 20:17:32
JavaでいうStringやStringBuilderの他に
最近ではRopeって構造が着目されてるけど、
こういうのをファクトリで使い分け可能にしてくれんかな。
543デフォルトの名無しさん:2008/09/16(火) 20:23:07
「もうropeとか死ねばいいのに」を思い出した。
544デフォルトの名無しさん:2008/09/16(火) 20:23:10
~ とか & とか . とか色々と無意味な派閥が出来るのは望ましくないな。
"n = " + 1 + 2 とかやった時のわかり難さを解決しようってんだろうけど、
演算子増やされるくらいなら意識的に()で囲う方がマシ。
545デフォルトの名無しさん:2008/09/16(火) 20:34:46
>>544
日本語でおk
546デフォルトの名無しさん:2008/09/16(火) 20:39:05
>>545
Rubyみたいな構文きぼん
547デフォルトの名無しさん:2008/09/16(火) 20:47:17
>>544
同じ演算子にしたらリストへの要素の結合とリストの要素への加算が区別できないだろ。
548デフォルトの名無しさん:2008/09/16(火) 21:46:30
>>542
テンプレート使わないと遅くなりそう
549デフォルトの名無しさん:2008/09/16(火) 22:12:46
>>544
Dには配列に対するベクトル演算も実装されているから+で結合を表すと不自然なことになる
550デフォルトの名無しさん:2008/09/16(火) 22:23:39
ああ ~ は、文字列結合じゃなくて配列結合なのか。
551デフォルトの名無しさん:2008/09/16(火) 22:38:41
std.cstreamのdinをforeach使って
 foreach(ulong i, string line; din)
ってやったんだけど、stringじゃなくてchar[]じゃないとだめだった。
std.streamのonApplyのExampleだとstringで良さそうなのに。

あと、std.cstreamのこれだとlineに改行文字は含まなくて、std.stdioの
 foreach (string line; lines(stdin))
ってやつだと改行文字含むんだよね。これは仕様をよく読めば間違わないんだけど。

ライブラリの更新計画はないんだろうか。Tangoで置き換えとかどうなったんだろ。
552デフォルトの名無しさん:2008/09/16(火) 23:30:42
553デフォルトの名無しさん:2008/09/17(水) 00:02:27
いつかばっさり修正する、ってのじゃなくて、
だんだんすりあわせしてくよ、って感じなのか。納得した。
554デフォルトの名無しさん:2008/09/17(水) 02:56:23
dflでGUIだけど
ポインタで落ちまくりなのがなんかはまる
はまるって熱中するほうな
555デフォルトの名無しさん:2008/09/18(木) 03:17:26
ライブラリってdsssで落とせるものはまず使えないのな。
svnで落としてきて、ビルドなり動作なりするリビジョンを探さないといけない。
もしかしてこのスレだと常識?
556デフォルトの名無しさん:2008/09/18(木) 15:34:13
auto func(auto x) {
return x * 2;
}

みたいに書ければいいのに。
557デフォルトの名無しさん:2008/09/18(木) 16:04:23
>>556
これで十分だし、構文糖を追加するほどのものでも無いような。
auto func(T)(T x) {
  return x * 2;
}
558デフォルトの名無しさん:2008/09/18(木) 17:12:54
TangoのCircularListって名前おかしくない?
これって循環リストっていうより双方向リストだよな?
559デフォルトの名無しさん:2008/09/18(木) 17:26:32
>>558
V get (uint index)
ってメンバ関数あるでしょ?ランダムアクセスできるんだよ
実装は動的にサイズ拡張するリングバッファだと思うよ
560559:2008/09/18(木) 17:53:14
ってあるぇw O(n)ってなってるwww
ランダムアクセスとか嘘ですごめんなさい
561デフォルトの名無しさん:2008/09/18(木) 22:28:38
>>554
dflはかなり使い勝手いいんだけど、結構やばそうなところいろいろあるんだよね。
D&Dの挙動が怪しくて、テストでボンボンファイル放り込んでいたら落ちて、
放り込んだファイルが全部消えたことがあって、すげーあせったw

あとスクロールバーみたいなスライドさせるコントロールがないんだよね。
それに気が付かないで途中まで作って、今後の方針で悩み中w
562デフォルトの名無しさん:2008/09/19(金) 07:00:26
544 名前:デフォルトの名無しさん[sage] 投稿日:2008/09/19(金) 02:06:49
      D言語って来ないの?

      みんなC++0xに行っちゃうの?

545 名前:デフォルトの名無しさん[sage] 投稿日:2008/09/19(金) 02:28:58
      VisualStudio並のIDEが出来たら行くよ

546 名前:デフォルトの名無しさん[sage] 投稿日:2008/09/19(金) 04:04:49
      GCを簡単に取り外す方法が用意できたら行くよ
563デフォルトの名無しさん:2008/09/19(金) 07:09:28
D2.0の安定版とC++0xの実装とどっちが早く来るかのう
564デフォルトの名無しさん:2008/09/19(金) 12:15:39
C++は複雑になりすぎてもう終わり
565デフォルトの名無しさん:2008/09/19(金) 13:44:23
終わってんのはおまえの頭の方
566デフォルトの名無しさん:2008/09/19(金) 15:26:45
IDE全部はいらんが、バックグランドコンパイルだけはちょっと欲しいな
567デフォルトの名無しさん:2008/09/19(金) 22:41:05
IDEなんてゆとりだと思うんだが、使ってみると意外と便利なのかな?
568デフォルトの名無しさん:2008/09/19(金) 23:24:36
道具を便利に使えるかどうかの一部は、使い手の力次第。
それこそ、ゆとりには便利に使えないかもね。
569デフォルトの名無しさん:2008/09/20(土) 00:19:56
Emacsの作者でさえNetBeans使えって言ってるしな。
実際の所、IDEを使ってるとリファクタリングがかなり楽でいいよ。
570デフォルトの名無しさん:2008/09/20(土) 00:27:52
IDEなんていらねと言うのは使いこなせるようになってからが筋というもの
そもそもIDEがいるいらないじゃ全然わからんので
何それの機能がいるいらないという話になるべき
571デフォルトの名無しさん:2008/09/20(土) 02:42:01
インテリセンスさえあれば後は何も要らない
統合デバッガはあれば嬉しい
572デフォルトの名無しさん:2008/09/20(土) 04:40:05
このあたりがあって実装がまともなら、それのためにOSから揃えるかもしんない。
 ・Emacs系の拡張にあるような地味に便利な類の豊富なテキスト編集機能
 ・あるファイルの編集窓を別のファイル中に埋め込み編集できる機能
 ・ファイルの違いを意識せずに任意のモジュールやクラスや関数を連結編集できる機能
 ・日本語文字エンコード対応
 ・HTMLのいわゆるWYSIWYGエディタさながらのDDoc変換閲覧サーバ機能
 ・テキストのアンチエイリアス表示
573デフォルトの名無しさん:2008/09/20(土) 07:25:39
>572
・あるファイルの編集窓を別のファイル中に埋め込み編集できる機能

がイメージできないんだけど、どんな感じ?普通に分割ビューじゃなくて?
574デフォルトの名無しさん:2008/09/20(土) 08:48:26
>>573
HTMLのiframeみたいな見た目で、かつ同一ビューのテキストとしてシームレスに編集できるような感じ。

インライン関数やインラインの無名クラスなんかをあとから別モジュールに切り出すときに、
こっちが構文の修正なんかしなくとも、IDEがその部分をiframeっぽい見た目に自動変換して
「インラインっぽいのに別モジュール!ふしぎ!」ってなことをうまい具合にやってくれると、
場当たりプログラミング的には楽になるんじゃないかなあと思って。
(その機能を当てにして、とりあえずインライン単一ファイルで書いておける、とか)
575デフォルトの名無しさん:2008/09/20(土) 10:16:48
BTRONの実身仮身ですね、わかります
576デフォルトの名無しさん:2008/09/20(土) 12:05:43
元のファイルをいじると貼り付けた先のソースにも変更が反映されるようなコードスニペットってこと?
577デフォルトの名無しさん:2008/09/20(土) 12:21:31
mixinでいいじゃん。mixin
578デフォルトの名無しさん:2008/09/20(土) 17:55:59
eclipseレベルのリファクタリングブラウザは、一度使うともう到底後戻りできんわ。
コードを範囲選択してキーボードポンでダイアログ表示、
メソッド名打ち込んで引数名確認したらEnterでメソッドが完成。
自動的に決まった引数から”どのメンバであるべきか”とかが何となく分かるから、今度はメソッドの移動。
メソッド名とかも後で簡単に変更できるって分かってるから、
使われ方を必死に予測して適切な名前をひねり出す必要がない。
頭がすげー楽。

D言語はあくまで静的に解決することにこだわってるから、
そういうIDEの機能とも相性が良さそうなのよねぇ。
その分規模がでかくなるから、なかなかまとまった実装をする気にならないけど。
579デフォルトの名無しさん:2008/09/20(土) 18:05:02
duck-typingしてる場合とかでも、名前の変更できるものなのかな。
580デフォルトの名無しさん:2008/09/21(日) 01:11:06
import std.string;
import std.date;
void main(){
  .toString(getUTCtime());
}
Assertion failure: '0' on line 5222 in file 'expression.c'
abnormal program termination
これってなんですか
581デフォルトの名無しさん:2008/09/21(日) 01:55:05
バグです
582デフォルトの名無しさん:2008/09/21(日) 13:22:35
5222 ファミ通のクロスレビュー
583デフォルトの名無しさん:2008/09/21(日) 15:57:57
糞ゲーにも程がある
584デフォルトの名無しさん:2008/09/21(日) 21:35:14
高評価は信用してないが低評価は信用してる。
585デフォルトの名無しさん:2008/09/22(月) 09:49:08
>>578
>eclipseレベルのリファクタリングブラウザは、一度使うともう到底後戻りできんわ。

Javaではそれができるの?Dはないよね?
586デフォルトの名無しさん:2008/09/23(火) 02:37:09
質問です。
import std.stdio;
interface A{}
class B: A{}
void main(){
A a = new B;
writefln(a.classinfo.name);
}
このような場合の、 writefln のところで B と出るようなやり方はないのでしょうか?
587デフォルトの名無しさん:2008/09/23(火) 14:31:59
それは、ただのバグです。
本来ならBとでます。
588デフォルトの名無しさん:2008/09/23(火) 14:34:28
>>586
writefln((cast(Object)a).classinfo.name);
589デフォルトの名無しさん:2008/09/23(火) 15:33:50
>>586,587
構造体がインターフェイスを実装できるようにする計画もあるみたいだから、現在の実装で正しいんだと思う。
クラスはclassinfoを持ってるけど構造体にはないから、インターフェイス自身のclassinfoを返すしかない。

もとがクラスオブジェクトだと断言できるなら>>588のようにキャストすればいい。
590デフォルトの名無しさん:2008/09/23(火) 20:02:40
Information about an interface.
(中略)
.classinfo for this interface (not for containing class)
591デフォルトの名無しさん:2008/09/23(火) 20:16:33
>>590
それはInterface構造体の説明だろ
592586:2008/09/23(火) 21:55:53
>>588
なるほど、Objectにキャストすればいいのか。
ありがとうございます。
>>587
俺もバグかと思った。
>>589
たしかにカンファレンスのネタであった気がするな。
構造体でinterface実装って、POD型維持したままで出来るものなの?
593デフォルトの名無しさん:2008/09/24(水) 02:22:32
POD型に純粋仮想関数を継承させるくらいC++でやってまんがな
多重継承をinterfaceにやらせる話は値側の多重継承を捨てるという話なんで、
構造体自身が継承できない仕組みなのである程度なんとかなるのでは。
C++と同じくrefと書きまくらないとならんとか面倒もあるかもしれないが。
594デフォルトの名無しさん:2008/09/24(水) 02:44:41
pure関数が実装されるらしいね。
何でもpure関数はスレッド安全だとか関数呼び出しを減らせるとか非同期に実行できるとか。
595デフォルトの名無しさん:2008/09/24(水) 03:13:50
ここの住人なら順関数は常識だろ
596デフォルトの名無しさん:2008/09/24(水) 08:16:46
 最近Dを使い始めたばかりの初心者ですが、質問です。
Poseidonを使って何とかビルド、実行までできたのですが、
デバッガを起動しようとすると
Debug Error! Try compiling and linking with -g
とエラーが出てしまいます。
プロジェクトのプロパティのコンパイラオプション、ビルドツールオプションの
追加オプション両方に-gを加えてみたのですが、全く変わりません。
どうすればよいのかどなたか教えて下さい。
597デフォルトの名無しさん:2008/09/24(水) 11:14:40
リンカオプションは?
598596:2008/09/24(水) 11:54:00
 一通り探してみたのですが、リンカオプションの設定をどこで行えばよいのか分かりません。
ビルドツール設定 = リンカ設定と思っていたのですが、違うのでしょうか?
599デフォルトの名無しさん:2008/09/24(水) 13:28:25
-L-g ?
600デフォルトの名無しさん:2008/09/24(水) 13:45:21
>>593
refってC++/CLIのことか?ややこしいから省略するなよ全然別物だろ
601デフォルトの名無しさん:2008/09/25(木) 03:36:51
const int[]とconst(int)[]とかの違いをまとめたページとかある?
602デフォルトの名無しさん:2008/09/25(木) 03:50:39
>>601
違うのですか?
603デフォルトの名無しさん:2008/09/25(木) 05:50:51
今のところ const char[] と const(char)[] は一緒じゃなかったっけ?
604596:2008/09/25(木) 09:43:08
>>599
 御回答どうもありがとうございます。試してみたのですが、やはり同じ結果になってしまいました。出力は
C:\dmd\dmd\bin\dmd.exe File1.d File2.d -ofProject1 -debug -g -L-g
のようになっていますが、指定方法が間違っているのでしょうか?
605604:2008/09/25(木) 09:52:20
 すいません。自己解決しました。デバッガの設定でフルパスを入力していないのが原因でした。
お騒がせして申し訳ありませんでした。
606デフォルトの名無しさん:2008/09/25(木) 10:23:10
>>601-603
ちがう。
前者のconstはストレージクラスで、後者はタイプコンストラクタ。
変数にconstストレージクラスをつけた場合は、次に来る型全体をconst()で囲んだのと同じになる。
つまり、 const char[] a; は const(char[]) a; に等しい。

const(char[]) = const(const(char)[]) ≠ const(char)[]
607デフォルトの名無しさん:2008/09/26(金) 02:06:59
ローカル変数のアラインメントを指定する方法ってないでしょうか
608デフォルトの名無しさん:2008/09/26(金) 02:22:48
http://www.kmonos.net/alang/d/2.0/dll.html
のサンプル「DLL内のDのコードを呼ぶDのコード」で
test.d の DYNAMIC_LOAD 版の main() 内で、
c = (*getMyClass)();
より前に
new Object;
と書くと、全部終わった後にAccess Violationがでてしまうのですが、
これは回避できるのでしょうか?

ちなみに、FreeLibrary(h)を実行する前に new したやつを delete したり、
std.gc.fullCollect()を実行してその後使わなければ
一応いけてるみたいですが、、
609デフォルトの名無しさん:2008/09/26(金) 02:23:08
ないと思うよ。宣言した数だけ宣言の順にスタックに領域が確保されるってわけじゃないからね。

まあ、素直に構造体に入れとけばいんじゃない。
610608:2008/09/26(金) 02:51:30
ないのかーorz
ありがとうございました。
611デフォルトの名無しさん:2008/09/26(金) 03:06:10
>>609>>607へのレス
612608:2008/09/26(金) 03:19:53
>>610>>609へのレス
613デフォルトの名無しさん:2008/09/26(金) 07:11:50
>>323
色々あって gdc でやっと D ver2 使えるようになったんだけど
そういえば GUI 使いたいと思ったら
DWT が Tango+D ver1 だと気がついた。
Tango ぶち込んだら使えるんかいな?
614デフォルトの名無しさん:2008/09/26(金) 09:26:37
>>611-612
なんなんだよお前らw
615デフォルトの名無しさん:2008/09/26(金) 09:57:01
>>609
ありがとうございます。やっぱりないですか。折角インラインアセンブラで
SSEが使えたりするのに勿体ないですねぇ。
616デフォルトの名無しさん:2008/09/26(金) 13:27:25
Dにはパッキングを調節する機能はあっても、アライメントをあわせる機能はない。
newすれば16バイト境界にならぶけど。
617デフォルトの名無しさん:2008/09/26(金) 18:24:54
そもそもローカル変数のアライメントが合わないと、
構造体でアライメント属性使っても意味ないんかな?
試してみないとよくわからんな。
実装依存になってるし。
ttp://www.kmonos.net/alang/d/2.0/attribute.html#align
618デフォルトの名無しさん:2008/09/26(金) 18:25:57
そもそもローカル変数のアライメントが合わないと、
構造体でアライメント属性使っても意味ないんかな?
試してみないとよくわからんな。
実装依存になってるし。
ttp://www.kmonos.net/alang/d/2.0/attribute.html#align
619デフォルトの名無しさん:2008/09/26(金) 18:29:40
そもそも構造体の頭からなんぼのところにあわせるかの指定だから、
構造体自体がずれてたらどうにもならない。
620デフォルトの名無しさん:2008/09/26(金) 18:48:35
ビットフィールドってどうしてついてないんだろう。
使わないから?
621617:2008/09/26(金) 18:55:39
すまん、Internal Server Error 返ってきたから2回投稿しちゃった。
622デフォルトの名無しさん:2008/09/26(金) 20:24:32
>>620
そうでしょうね。
無くても困らないし。
623デフォルトの名無しさん:2008/09/26(金) 21:03:00
構造体が関数を持てる以上、必要ないんだろう。
624デフォルトの名無しさん:2008/09/26(金) 21:19:43
つ std.bitmanip
まあ、使わんけどw
625デフォルトの名無しさん:2008/09/27(土) 02:26:20
TCPヘッダをいじくるものを書いているのだが、
フィールドにアクセスする関数を作るのが面倒でならない。
ビットフィールドはぜひとも欲しいと感じているんだが、
なくても困らない人たちはどういうコードを書くのか、
参考までに教えていただきたいのですが・・・。
626デフォルトの名無しさん:2008/09/27(土) 02:31:57
627デフォルトの名無しさん:2008/09/27(土) 02:38:57
無圧縮のチャンクを扱うこともめっきり減ったのは確かだのう
628デフォルトの名無しさん:2008/09/28(日) 03:06:21
やったーOpenSSL使ってSSLするSocketStreamできたよー\(^o^)/
629デフォルトの名無しさん:2008/09/28(日) 16:25:46
うpしてあげると誰かが喜ぶとおも
630デフォルトの名無しさん:2008/09/28(日) 16:43:10
>>628 きもしねばいいのに
631デフォルトの名無しさん:2008/09/28(日) 18:16:51
TangoのWebDavStream?に期待しているのだがなかなか実装されない
632デフォルトの名無しさん:2008/09/28(日) 18:18:21
Streamじゃないや
VFSだった
633デフォルトの名無しさん:2008/09/28(日) 23:44:17
静かだなあ
634デフォルトの名無しさん:2008/09/29(月) 00:00:59
とりあえず、今のDで最強IDEはなんですか?
635デフォルトの名無しさん:2008/09/29(月) 01:04:02
Descentじゃね。文字列mixin対応してるという意味で。
636628:2008/09/29(月) 01:55:52
637デフォルトの名無しさん:2008/09/29(月) 06:00:21
そんなに進化してたのか >Descent
いまだにテキストエディタでしこしこ書いてる俺。
638デフォルトの名無しさん:2008/09/29(月) 07:40:58
二番手がPoseidonかな。こっちのが軽いから期待してる。
まあ、俺もエディタですが。しかもビルドツールはmake
639デフォルトの名無しさん:2008/09/29(月) 08:15:59
>>636
うp乙
>>635
DescentはすばらしいのになんかEclipseが使いにくいんだが・・・
>>638
ビルドツールはDSSSがいまいちまともに機能しないのでbudを使ってる
640388:2008/09/29(月) 09:07:55
>>392
やっとこかなり小さい再現コードが書けた

---- 以下のモジュールで静的ライブラリを作成

module test;
import std.random;
Mt19937 gen;
uint nonThreadSafeRandom() {return gen.next;}

---- 以下のモジュールを前述のライブラリとリンクして実行ファイルにしようとするとOPTLINKか落ちる

import test;
void main() { uint a = nonThreadSafeRandom(); }

---- 以下のようにすると通る

import test, std.random;
void main() { uint a = nonThreadSafeRandom(); }
641392:2008/09/29(月) 16:04:32
>>640
こちらでも確認した。
このバグのバグレポあがってないみたいだから、挙げといたほうがいいかも。
ということで、お願い。
642デフォルトの名無しさん:2008/09/29(月) 17:56:29
>>641
Issue 2378に。
また追ってご報告。
643392:2008/09/29(月) 18:46:15
>>642
GJ.
644デフォルトの名無しさん:2008/09/30(火) 21:44:52
照明器具についてググってたら偶然見つけたんだが
ttp://delight.sourceforge.net/
試してみた人いる?
645デフォルトの名無しさん:2008/10/01(水) 00:09:04
楽しそうだがpython文法が好きというわけではないから個人的にはスルー
変数を全部Variantにしてコンパイラブルpythonを作ったぜ!とかいうなら向こうの人が喜びそうだが。
646デフォルトの名無しさん:2008/10/01(水) 10:03:22
>>644
ものすごく気になるんだが、Linux限定か?
647デフォルトの名無しさん:2008/10/01(水) 15:15:52
ttp://sourceforge.net/projects/delight/
ここからソースが落とせる

基本的にはDelightソースを読んで行末とインデントを数えて;と{}を打って
ソースレベルの翻訳が終わったらdコンパイラに渡すという仕様でいいと思われるので、
dmd用のパッチを書くのもできるのではないかな。単に人力が必要なだけで。
648デフォルトの名無しさん:2008/10/02(木) 02:59:41
そういえばTangoのカンファレンス終わってるけどあれって詳細でないのかな?
649デフォルトの名無しさん:2008/10/02(木) 15:35:59
最近なぜC++にプロパティやmixinや自動初期化がないのか疑問になってきた
interfaceは純粋仮想クラスでいいとしても
650デフォルトの名無しさん:2008/10/02(木) 15:42:22
しかし関数ポインタ/デリゲートのオーバーロードってできないのかな?
名前ハイジャックのルールを適用して

int function(int) f;
int delegate(int, int) f;
void f(int,int,int){}

int f(int) = &someFunc

みたいな
651デフォルトの名無しさん:2008/10/02(木) 20:16:04
変数のオーバーロードってちょっとキモイ。
652デフォルトの名無しさん:2008/10/02(木) 21:35:39
int v;
string v;

string v = "hoge";
653デフォルトの名無しさん:2008/10/02(木) 22:13:49
オーバーロードで思い出したけど、tango.text.Textの、
final char[] toString (char[] dst = null)
はオーバーロードされてないことにいい加減気づいてほしい。
…狙ってやってる…わけないよなぁ?
654653:2008/10/02(木) 22:14:32
オーバーライドか。間違えた。
655デフォルトの名無しさん:2008/10/03(金) 01:02:25
D言語せんといかん
656デフォルトの名無しさん:2008/10/05(日) 12:02:51
静かだな
次は何がくるのか
657デフォルトの名無しさん:2008/10/05(日) 12:41:49
wxDは2.0に対応してないの?してないみたいだけど
658デフォルトの名無しさん:2008/10/05(日) 19:44:48
時期的にもうじき来そうな気がするんだけどなぁ。
ところで、Tangoにメルセンヌツイスターが追加された模様。
しかし…random系のはclassにするべきじゃないかと思うんだがどうか。
659デフォルトの名無しさん:2008/10/05(日) 21:39:29
構造体にしとく理由とか欲しい
明確な理由があれば従いやすくなるし
660デフォルトの名無しさん:2008/10/06(月) 01:11:08
前スレか前々スレあたりでその話題が出てた。
乱数は速度が必要なことがあるから、仮想関数の呼び出しコストのことを考えてるんじゃないか、みたいな話だったかな。

個人的にはクラスにして欲しい。
大体、そこまで速度的にタイトな場面でメルセンヌ・ツイスタやら線形合同法使わないだろと。
特殊なシーンだと思うし、標準がどうであろうとたぶん自分で実装すると思うんだよなあ……。
661デフォルトの名無しさん:2008/10/06(月) 01:19:48
長周期の乱数が必要になる場合ってのは、シミュレーションなんかで
超大量の乱数(数億とか)が要求される状況とかじゃね?
そうすると、デフォで手軽に高速な方がいいかもしんない。
662デフォルトの名無しさん:2008/10/06(月) 02:58:39
struct S
{
int i;
void func(){++i;}
}
class C
{
int i;
final void func(){++i;}
}

この二つでベンチマーク取ってみたけど、ほぼ同等の速度で実行されたよ。
中身が乱数生成するような多少複雑なものになれば、差は無視できるんじゃないかな?
本当にstructでやる意味ってあるのかな?
663デフォルトの名無しさん:2008/10/06(月) 04:17:38
とりあえずRandomだけでもオヌヌメの乱数をラップしたクラスにしてくれ
Random使ってて速度が欲しいはねーって
664デフォルトの名無しさん:2008/10/06(月) 06:38:30
コピーが簡単だとか
665デフォルトの名無しさん:2008/10/06(月) 08:10:23
構造体はC/C++とのブリッジとかだけに使うべしとしてほしいわぁ。
単なるデータ構造が欲しいならクラスに統一してほしい。
666デフォルトの名無しさん:2008/10/06(月) 12:06:40
たぶんウォルたんはスピード狂だし・・・・・・
667デフォルトの名無しさん:2008/10/06(月) 13:08:55
オブジェクトをスタックに置ければ概ね代用になるのかな
668デフォルトの名無しさん:2008/10/06(月) 15:05:00
それはscopeのことか?まぁ完全ではないけど。
669デフォルトの名無しさん:2008/10/06(月) 18:29:29
gdcのD2.0版はまだすか?
670デフォルトの名無しさん:2008/10/06(月) 20:00:48
はやくコミッターになるんだ
671デフォルトの名無しさん:2008/10/06(月) 20:09:07
dmdでコンパイルできるのにposeidonでコンパイルできない。
C:\test.d: module Documents cannot read file 'C:\test.d'
なんぞこれ
672デフォルトの名無しさん:2008/10/06(月) 20:10:27
>669
SVN最新版が対応してるとの話なんでマニュアル通り試してみたんだけど(於:Ubuntu 8.04)

% tar jxf gcc-4.1.2.tar.bz2
% cd gcc-4.1.2/gcc
% svn co http://svn.sourceforge.net/svnroot/dgcc/trunk/d
% cd ../
% ./gcc/d/setup-gcc.sh --d-language-version=2
% ./configure --enable-languages=d
% make



(略)
checking If /home/(アカウント名)/gcc-4.1.2/host-i686-pc-linux-gnu/gcc/gdc
-B/home/(アカウント名)/gcc-4.1.2/host-i686-pc-linux-gnu/gcc/ -B/usr/local/i686-pc-linux-gnu/bin/
-B/usr/local/i686-pc-linux-gnu/lib/ -isystem /usr/local/i686-pc-linux-gnu/include -isystem
/usr/local/i686-pc-linux-gnu/sys-include can compile D sources...
/home/(アカウント名)/gcc-4.1.2/host-i686-pc-linux-gnu/gcc/cc1d:
/home/(アカウント名)/gcc-4.1.2/host-i686-pc-linux-gnu/gcc/libgcc_s.so.1:
version `GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6)
no
configure: error: can't compile D sources!
make[1]: *** [configure-target-libphobos] エラー 1
make[1]: ディレクトリ `/home/(アカウント名)/gcc-4.1.2' から出ます
make: *** [all] エラー 2

となってエラーになる
gcc-4.1.2/host-i686-pc-linux-gnu/gcc/gdc は一応生成されてるみたいなんだがよくわからない
何か手順間違ってるかな
673デフォルトの名無しさん:2008/10/06(月) 20:11:25
すまん。解決。
URIにスペース入ると駄目なのね。
674デフォルトの名無しさん:2008/10/06(月) 21:02:44
>>672

msys上で1も2もいけることは確認した。
Linuxはわからん。

エラーから察するに、C++が入っていないのかな?
./configure --enable-languages=c,d,c++
とかで通ったりしない?
675デフォルトの名無しさん:2008/10/06(月) 22:23:14
>674
>./configure --enable-languages=c,d,c++
これでやってみたけど、結果は同じでした。
gcc4.2.0を要求されるのがよくわからない…
676デフォルトの名無しさん:2008/10/06(月) 22:33:39
>>675
http://ubuntuforums.org/showthread.php?t=270605
パッケージのバグのような
677デフォルトの名無しさん:2008/10/07(火) 08:10:16
>>672-675
@@ -3524,7 +3524,6 @@
 
 GDC=$CC
 GDC=`echo $CC | sed s/xgcc/gdc/`
+GDC="env LD_LIBRARY_PATH=`pwd`/../libstdc++-v3/src/.libs/ $GDC"
 
 echo "$as_me:$LINENO: checking If $GDC can compile D sources" >&5
 echo $ECHO_N "checking If $GDC can compile D sources... $ECHO_C" >&6

678デフォルトの名無しさん:2008/10/07(火) 08:11:14
ああ、phobosのconfigureに当ててね
679デフォルトの名無しさん:2008/10/07(火) 18:55:46
Tangoのsvnの2.0対応版が更新されてたから試してみた。
ちょっと修正必要だけどなんとかコンパイルに成功。
まだconstとかinvariantとかがカオスだけど、
これでやっとTangoでD2.0の恩恵が受けられる!
680デフォルトの名無しさん:2008/10/07(火) 19:40:27
>>679
おおーまじか
それはめでたい
しかしDFLがいまだ2.019で使えなくて俺涙目
681デフォルトの名無しさん:2008/10/08(水) 00:21:39
ところで、これまでのアップデート間隔を考えるとそろそろ次が…
682デフォルトの名無しさん:2008/10/08(水) 21:47:20
>677
回答ありがとうございます、遅くなってすいません

ですが、
./configure --enable-languages=c,c++,d
の直前にgcc-4.1.2/gcc/d/phobos/configureを677のとおりに書き換えてもやはり同じエラーになってしまいます。
683デフォルトの名無しさん:2008/10/09(木) 23:11:17
D言語ってSSEのイントリンシック命令とかないの?
std.intrinsicは貧弱すぎだろ・・・・
684デフォルトの名無しさん:2008/10/10(金) 05:56:42
FORTRANチックな配列演算のところに
「ベクトル命令を活用することが期待されます」っつー感じなんでどうかなあ。
実際実装されてないようだし。
685デフォルトの名無しさん:2008/10/10(金) 06:39:25
>>683
asmでいいじゃない
686デフォルトの名無しさん:2008/10/10(金) 13:20:07
>>685
asmはvec4クラスとか超軽量のものに使うにはオーバーヘッドがでかいので
intrinsicの代わりにはならないなぁ
同じ場面で__forceinlineも欲しかったりするけど・・・
687デフォルトの名無しさん:2008/10/10(金) 16:03:48
688687:2008/10/10(金) 16:05:10
うぉるたん曰く

Jason House wrote:
> Did anyone make a tally ofhow many votes different things got? If so,
> what are they? I was surprised to see my remove SFINAE proposal
> showing up at all. It didn't even make my top 5
>
> For Walter's inner circle, what conclusions were drawn from the poll?
> I saw comments like "consider it done" about the whole Tango/Phobos
> runtime thing. Are there any other items getting serious
> consideration?

At the moment, the highest priority items are:

1. tango/phobos integration
2. fixing foreach so it works with iterators
3. implementing the threading model
4. fixing bugs
5. function returns by reference
6. invariant => immutable
689デフォルトの名無しさん:2008/10/10(金) 17:29:22
これ結構いいんでね?
ttp://www.dsource.org/projects/descent/wiki/Mmrnmhrm
690デフォルトの名無しさん:2008/10/10(金) 20:40:22
>>687
それはワクワクするね。
691デフォルトの名無しさん:2008/10/10(金) 23:31:48
>>689
ま た 代 替 わ り か

eclipseDとかDDTとかdescentとかMmRnmHrmとか、eclipseプラグインの系譜はなかなか壮大だな……
692デフォルトの名無しさん:2008/10/11(土) 18:10:07
今日字句解析器書いてて気づいたけど、writefln(\n)とかって通るのね。
693デフォルトの名無しさん:2008/10/11(土) 18:44:26
writefln(\©);

とかもね。
694デフォルトの名無しさん:2008/10/11(土) 18:48:36
和訳の言語仕様の字句の構成のところに書いて有るけどちょっと判りにくいよね。
695デフォルトの名無しさん:2008/10/11(土) 21:18:05
OggVorbisを使おうとして試行錯誤してて詰まったんだが
構造体OggVorbis_Fileにdoubleとかfloatが含まれてて、
それをimportして変数を宣言すると、OggVorbis_File__initZが無いっすってリンカに怒られる
浮動小数点をNaNに初期化したいんだろうけど、こういうところでかなり困る
696デフォルトの名無しさん:2008/10/11(土) 21:39:20
Mmrnmhrmってなんて読めばいいの
697デフォルトの名無しさん:2008/10/11(土) 21:41:52
698デフォルトの名無しさん:2008/10/11(土) 21:43:48
スターコントロールに出てくる種族だろ
699デフォルトの名無しさん:2008/10/12(日) 18:22:28
まーだー?
700デフォルトの名無しさん:2008/10/12(日) 18:50:54
耐えろ…きっとD3.0のフラグ…
701デフォルトの名無しさん:2008/10/12(日) 19:07:42
実のところD言語0.6くらいでしかない、この言語を、
おまえら良くついていこうって気になれるな。
702デフォルトの名無しさん:2008/10/12(日) 19:22:49
保守モードのdmd1.0系は普通に使えると思うけど
703デフォルトの名無しさん:2008/10/12(日) 20:17:33
ぶっちゃけ lisp/scheme とどっちがいい?ていうかどっちが実用的に使える可能性を秘めているのか?
lisp/scheme の信者っぷりはよく知っています。emacs とか‥‥‥。
704デフォルトの名無しさん:2008/10/12(日) 20:20:51
何の話だ
705デフォルトの名無しさん:2008/10/12(日) 20:36:42
Dとschemeどっちが実用的に使えるのって質問だろ
俺はDだと思うけどマシってだけだ
706デフォルトの名無しさん:2008/10/12(日) 20:42:55
アプリケーション開発に使うとしたら間違いなくDだが
まず「実用的」の定義を教えてくれ
707デフォルトの名無しさん:2008/10/12(日) 20:52:21
>>703
もっと話を具体的なところに落とせよ
誰が使うのか、何に使うのか、どういう環境で使うのか
708デフォルトの名無しさん:2008/10/12(日) 21:15:15
>>707
あらゆるいみで emacs 程度で。
709デフォルトの名無しさん:2008/10/12(日) 21:16:18
そんなんでわかるかw
710デフォルトの名無しさん:2008/10/12(日) 21:31:49
>>709
それはemacsをしらないということですかね、もぐりですか?
711デフォルトの名無しさん:2008/10/12(日) 21:36:10
そんなにひっぱる話題かよ
712デフォルトの名無しさん:2008/10/12(日) 21:41:26
>>711
本当にそう考えるのならレスつける必要もないのでは?
713デフォルトの名無しさん:2008/10/12(日) 21:44:04
>>711
自分のレスが思った以上に馬鹿だったらしいと気付いて
必死に「最初から煽ラーだった」ように見えるログ作りに精を出してるんだろ。
俺は馬鹿だったんじゃない、釣ったんだ、ってね。
714デフォルトの名無しさん:2008/10/12(日) 21:44:21
ここまで俺の自演
715デフォルトの名無しさん:2008/10/12(日) 21:45:09
ここからも俺の自演
716デフォルトの名無しさん:2008/10/12(日) 21:45:38
>>713
そうそう、メール欄に注目。
717デフォルトの名無しさん:2008/10/12(日) 23:02:57
それがどうした?
その発言も意味分からないぞ
718デフォルトの名無しさん:2008/10/12(日) 23:19:19
また比較厨か
719デフォルトの名無しさん:2008/10/12(日) 23:22:40
ID欲しいなぁ・・・
720デフォルトの名無しさん:2008/10/12(日) 23:33:27
>>716-717
他でやれ、な?
721デフォルトの名無しさん:2008/10/13(月) 00:23:17
いかん、スレが荒れている。新バージョン性仕様変更欠乏症に違いない。
早く患者のDコンパイラを新しいものと取り替えるんだ!
722デフォルトの名無しさん:2008/10/13(月) 03:33:58
>>721
申し訳ないです。そのご返事のhumorに自ら降伏し、haskell 習得を中断してしばらくdやります。
723デフォルトの名無しさん:2008/10/13(月) 03:38:08
DMD 1.036 and 2.020 releases
724デフォルトの名無しさん:2008/10/13(月) 03:55:24
釣りだろうと思って見に行ったらやっぱり釣りだった
725デフォルトの名無しさん:2008/10/14(火) 13:48:50
Tangoって本当にPhobosに置き換わるのかね?
早いとこ決まらんとPhobosでもTangoでも積極的に
使いづらいんだ。
726デフォルトの名無しさん:2008/10/14(火) 14:02:06
phobosベースになるんじゃないかなーと思ってる
ちゅーかtangoがただのライブラリだったらそれでいいんだよ・・・
727デフォルトの名無しさん:2008/10/14(火) 19:49:19
http://www.kmonos.net/alang/d/2.0/comparison.html

ここに各言語との比較表載ってたと思うんだけど、消しちゃったのか?
728デフォルトの名無しさん:2008/10/14(火) 20:22:08
729デフォルトの名無しさん:2008/10/14(火) 20:50:10
730デフォルトの名無しさん:2008/10/16(木) 05:23:34
template OpCallConstructor() {
        static typeof(this) opCall(Args...)(Args args) {
                return new typeof(this)(args);
        }
}

interface I {
        I f();
}

template X(T) {
        mixin OpCallConstructor;
        T f() { writefln("X"); return this; }
}

class C {
        mixin X!(C);
        void g() { writefln("C"); }
}

int main(char[][] args) {
        auto c = C();
        c.f.g;                        // => "X C"
        return 0;
}

関数の実体が増えるのだけが気になるが。
731デフォルトの名無しさん:2008/10/16(木) 05:27:38
↑変則的なCRTPをやる際にもエレガントにいくという話です。
Dではクラスはどうせ参照型なのだから、
thisを返すパターンは派生先で勝手に派生クラスにしてほしいといえば欲しいが……
inabaさんのブログに以前貼ってあったような?


ところで、テンプレートまわりはいろいろ変な機能が付いてますが、みなさんはどうお使いですか?
732デフォルトの名無しさん:2008/10/16(木) 21:01:26
class B { }
class D1: B { }
class D2: B { }

D1[] a_d1 = new D1[1];
B[] a_b = a_d1;
a_b[0] = new D2;
writeln(a_d1[0]); //D2

こういうキモいことになるのは、仕方ないの?
733デフォルトの名無しさん:2008/10/16(木) 22:05:27
配列の共変性は厄介だなあ。ポインタでも同じ問題はおきるが…

C++ではどうなってるんだっけ?
734デフォルトの名無しさん:2008/10/16(木) 22:23:18
DMD(1.030-linux)で作った実行ファイルがgdbでステップ実行
できないんだけどうちだけですか
735デフォルトの名無しさん:2008/10/16(木) 23:12:12
>>732
それは言語仕様上の欠陥といわれても仕方がないなあ。

class B { }
class D1: B { void e(){  } }
class D2: B {  }

D1[] a_d1 = new D1[1];
B[] a_b = a_d1;
a_b[0] = new D2;
a_d1[0].e;  // Access Violation


>>733
クラスが値型だから
a_b[0] = new D2;  ← ここでコンパイルエラー
736デフォルトの名無しさん:2008/10/17(金) 01:16:01
.NETとJavaはどちらも配列はcovariantだが、ランタイムに型のチェックがある。
Dの配列はlightweightなのが大切なのかも知れんが、あまりに危険すぎるな。
デバッグビルドだけでも、型チェックコードを生成できるようにならないか。
737デフォルトの名無しさん:2008/10/17(金) 01:19:17
>>735
そうか、そうだった。
C++だと、D*→B*は暗黙に変換できるが、D**→B**は変換できないよな。
738デフォルトの名無しさん:2008/10/17(金) 22:41:54
新バージョンはまだなのか…
いったい何が起ころうとしている…?
739デフォルトの名無しさん:2008/10/17(金) 22:49:34
>>738
>>688をやってるんじゃない?
740デフォルトの名無しさん:2008/10/17(金) 23:21:45
どかんと来そうだなwktk
741デフォルトの名無しさん:2008/10/18(土) 13:24:18
参照いいなあああ
やっとかあ
742デフォルトの名無しさん:2008/10/18(土) 21:13:11
C++へともどっていく
743デフォルトの名無しさん:2008/10/18(土) 23:21:33
参照を返せるっていうのは引数のrefみたいなことが出来るってことでいいの?
744デフォルトの名無しさん:2008/10/18(土) 23:31:47
俺もわかんね
誰かどんなときに使いたいのか教えてちょうだい
745デフォルトの名無しさん:2008/10/19(日) 00:02:03
コンテナの要素とか参照で欲しくない?front,backとか
746デフォルトの名無しさん:2008/10/19(日) 00:09:15
ああ今は値型の場合はポインタで受け取るしかないのか
747デフォルトの名無しさん:2008/10/19(日) 02:22:57
その辺は結構最適化されると思うけどねえ
748デフォルトの名無しさん:2008/10/19(日) 04:13:38
getMatched(array, regexp) = hoge;
なんて感じで関数の戻り値を左辺におけるようになるのかもしれない
749デフォルトの名無しさん:2008/10/19(日) 08:28:49
foo()=bar();
それはややこしい
750デフォルトの名無しさん:2008/10/19(日) 08:54:06
obj.foo=bar();
Dならできるはず
751デフォルトの名無しさん:2008/10/19(日) 09:26:41
obj.length+=1024;
Dならできるはず
752デフォルトの名無しさん:2008/10/20(月) 01:12:15
構造体の演算子オーバーロード時に参照返しできると嬉しい
あとコンテナを標準ライブラリ化してくれ
753デフォルトの名無しさん:2008/10/20(月) 17:56:44
>>688
確かに最近TangoのD2.0の更新が頻繁だな。
つい40分ほど前にも更新が…
相変わらずちょっと直さないとコンパイルできないけど
754デフォルトの名無しさん:2008/10/20(月) 21:04:36
DM謹製 x64コンパイラがほしー
755デフォルトの名無しさん:2008/10/21(火) 13:26:55
www.digitalmars.comとnews.digitalmars.com
昨日の日中ずっと繋がらなかった
何かの前兆だと思ってた

そして、今日になって
http://www.digitalmars.com/d/2.0/changelog.html#new2_020
新バージョン来た
756デフォルトの名無しさん:2008/10/21(火) 13:37:58
> Based on Sean Kelly's hard work, Phobos has been split into two libraries,
> druntime.lib and phobos.lib. This will enable better integration with Tango.
> The user source code changes are:

んと、もともと
Phobos(druntime)とTango(druntime)みたいな状態だったものが
druntime.libとして抜き出したことで
PhobosとTangoが同列というか、一緒に使えるようにしたってこと?
757デフォルトの名無しさん:2008/10/21(火) 13:43:21
ついにTangoが
758デフォルトの名無しさん:2008/10/21(火) 14:00:35
D1.0のほうに今回の更新が含まれないってことは、
D1.0のほうはTango+Tangobos使って頑張れってことだろうか
759デフォルトの名無しさん:2008/10/21(火) 14:46:21
こんなどでかい変更でもバージョン番号は2.019 -> 2.020という素っ気なさw
言語仕様に近い部分がdruntime.libに分離されたのかな。

お、linuxでobject.dが読めないって言われた。dmd.confが間違ってるっぽ?
-I%@P%/../src/runtime/importの部分を
-I%@P%/../src/druntime/importに修正したらコンパイル通った。
760デフォルトの名無しさん:2008/10/21(火) 15:03:17
バージョンアップしたら
dmd\samples\dの中身も更新してほしいよ
サンプル動かないよ

dmd\src\druntime\src\build-dmd.bat
を実行して作られた
dmd\src\druntime\libってどしたらいいの?
dmd\libへ移動?
sc.iniを書き換え?
761デフォルトの名無しさん:2008/10/21(火) 15:15:27
てっきりTangoも同梱されるのかと思ってた
druntimeをPhobosとTangoで共有できるからTangoは自分で持ってきてねということ?
Tango入れたことないのだけど試してみるか
762デフォルトの名無しさん:2008/10/21(火) 16:11:17
むしろTangoを動かすのが難しくなった……
core.exceptionにSyncExceptionが無いあたりで詰んだ。
763デフォルトの名無しさん:2008/10/21(火) 16:12:55
immutableどこだ
764デフォルトの名無しさん:2008/10/21(火) 16:13:23
>>761
ん?
2.020用に、Tangoは更新されてないでしょ?
765デフォルトの名無しさん:2008/10/21(火) 16:14:10
>>764
アンカーミス、>>762
766デフォルトの名無しさん:2008/10/21(火) 16:20:06
>>765
ええ、ですので、2.020でPhobosとcore部分を共通にして動作するように
書き換えているのですが…
object.di に Cutf8 がないからと const(char)[] にすべて置換して
同様にCutf16, Cutf32, Mutf8, Mutf16, Mutf32を置換して
tango.core.Exception等の代わりにcore.exception等を使うようにして
..\tango\core\sync\Barrier.d(12): import SyncException not found
このエラーで詰んだ。
767デフォルトの名無しさん:2008/10/21(火) 16:23:52
v2.020

import std.stdio;
void main(){
writeln(typeid(long));
}

これが動かない。
768デフォルトの名無しさん:2008/10/21(火) 16:27:25
>>766
当たりが多すぎるので
さすがに今回は、更新されるまで待ったほうが
769デフォルトの名無しさん:2008/10/21(火) 16:27:43
>>763
いまのところinvariantストレージクラス/タイプコンストラクタのエイリアスみたい。
770デフォルトの名無しさん:2008/10/21(火) 16:36:34
Windowsだけど、そもそもobject.dが入ってなかった。
2.019から持ってきたらとりあえず動いたけど。
771デフォルトの名無しさん:2008/10/21(火) 16:40:53
よくわからないのですが
これで、PhobosとTangoの確執が終わり
ライブラリがいろいろ使えるようになってくるわけですね?
772デフォルトの名無しさん:2008/10/21(火) 16:41:13
配列のプロパティに括弧がいらなくなってる!

ref T head(T)(ref T[] a) {
return a[0];
}

void main(){
int[] a = [1,2,3];
a.head = 4;
writeln(a); // [4 2 3]
}
773デフォルトの名無しさん:2008/10/21(火) 16:55:45
>>770
object.diがあるからそっちとlib使うんじゃねえの?
774デフォルトの名無しさん:2008/10/21(火) 16:58:54
>>767 動いたけど
> type a.d && dmd a && a
import std.stdio;
void main(){
writeln(typeid(long));
}
long
775デフォルトの名無しさん:2008/10/21(火) 17:08:15
>>774
んー動かんな
もしかして、druntimeのビルドしないとあかんのか。
776デフォルトの名無しさん:2008/10/21(火) 17:11:30
>>773
object.diも見つからなかった。
druntime.libってのも見つからなかったから、なにか勘違いしてるのかもしれん。
dmdのバージョンがちゃんと2.020になってるのは(実行して)確認した。
777デフォルトの名無しさん:2008/10/21(火) 17:13:59
地雷リリースか!お前ら頑張れ!
778デフォルトの名無しさん:2008/10/21(火) 17:14:26
opIndexで参照を返すってやってもopIndexAssignは必要なのか…
そのうちopIndexAssignはなくなるんかね?

import std.stdio;
class Hige
{
int a;
ref int opIndex(size_t idx){return a;}
}
void main(){
auto hige = new Hige;
hige[0] = 1;//Error
}
779デフォルトの名無しさん:2008/10/21(火) 17:14:41
780デフォルトの名無しさん:2008/10/21(火) 17:22:43
ああ分かったぞ。古いのに上書きするとなんかおかしくなるみたいだ。
781デフォルトの名無しさん:2008/10/21(火) 17:29:10
>>773,779
druntimeフォルダだけコピーされなかったという、自分の謎のミスでした。お騒がせしました。

コピーしなおしたら、>767のコードはとくになにもしなくとも動いたよ!
782デフォルトの名無しさん:2008/10/21(火) 17:42:50
sc.iniを書き込み不可にしていると
それ以降のコピーが実行されないケースがあるから
各自自分の環境に注意のこと
783デフォルトの名無しさん:2008/10/21(火) 17:46:43
それで結局、druntimeは自前でビルドする必要あるの?
784デフォルトの名無しさん:2008/10/21(火) 17:47:59
あと今回sc.iniが書き変わってるから
前のを残したままじゃちゃんと動かない
785デフォルトの名無しさん:2008/10/21(火) 18:03:23
>>783
中身テキストエディタでdruntime.libとphobos.libを開いてみたら、
どうやらphobos.libにdruntime.libの中身も含まれているみたいな感じだった。
786デフォルトの名無しさん:2008/10/21(火) 20:41:16
公式でもdruntime projectのページでもいいから導入マニュアルを書いて欲しいな
787デフォルトの名無しさん:2008/10/21(火) 20:45:09
警戒してdmdのフォルダだけ削除してから入れ替えたら特に問題もなく動いたぜ

druntimeに入りそうな機能を何も使ってなかっただけだが
788デフォルトの名無しさん:2008/10/21(火) 22:01:11
Tangoが更新されて
他のライブラリも更新されたら
俺、使い始めるんだ
789デフォルトの名無しさん:2008/10/21(火) 22:06:12
俺gdc0.25が出たら使い始めるんだ
790デフォルトの名無しさん:2008/10/21(火) 22:19:30
>>788-789
フラグktkr
791デフォルトの名無しさん:2008/10/22(水) 00:38:56
>>790
ライブラリが更新されない、gdc0.25が出ない、ってフラグですね
792デフォルトの名無しさん:2008/10/22(水) 21:07:29
久々にカオスで楽しめるw
793デフォルトの名無しさん:2008/10/23(木) 00:17:17
nazodaneさんとこ見たんだけど、
こんな構文が許されるようになってる…

void f(T)(){
writeln(typeid(T));
}

void main(){
f!Object;
}
794デフォルトの名無しさん:2008/10/23(木) 00:22:55
class C(T) { }
に対して、
new C!int
とかもできるようだ。
795デフォルトの名無しさん:2008/10/23(木) 00:40:29
いっそのこと型もファーストクラスオブジェクトにしちゃえばいいのに
796デフォルトの名無しさん:2008/10/23(木) 01:19:44
>>793-794
よくそんなのを発見できるな
不要と言えば不要なんだからありかな
797デフォルトの名無しさん:2008/10/23(木) 02:45:23
(hoge)がタプルとして扱われてるって事かね
知らんけど
798デフォルトの名無しさん:2008/10/23(木) 08:38:10
>>793こういうの見ると
Dらしいプログラミングスタイルってどんなんだろうか、と思いを馳せてしまうんだが、
俺には言語能力が微塵も無いので勉強したいんだが、
Dスタイルなプログラミングが勉強できるサイトとかってある?
799デフォルトの名無しさん:2008/10/23(木) 12:06:42
新し目の構文とかは無理だろうけど
日本にはゲームプログラマがソース公開してる人が多いからそれ読めば
800デフォルトの名無しさん:2008/10/23(木) 17:29:06
writefln = "";
これが使えなくなったなw
801デフォルトの名無しさん:2008/10/23(木) 17:34:36
ちょっと前から使えなかった気がするが
802デフォルトの名無しさん:2008/10/23(木) 17:57:16
ああ そうなのかー
803デフォルトの名無しさん:2008/10/23(木) 19:58:10
Linux上でversion識別子Posixがpredefinedになったけど、
明示的に-version=Posixってするのをエラーにまでする必要はあるんだろうか……
804デフォルトの名無しさん:2008/10/23(木) 20:46:17
ここ1年くらい特にD言語でコーディングもせずこのスレを流し読みしてると
C++以上の変態言語に進化してるように見えてならないのだけど実際のところどうなんでしょう
805デフォルトの名無しさん:2008/10/23(木) 20:56:35
C++0xと五分五分

C++と聞くといつもDTLのことが思い出される
806デフォルトの名無しさん:2008/10/24(金) 00:12:21
template X(string s) {
enum X = "X" ~ s ;
}

void main(){
auto x = X!"aaa";
writeln(x);
}

まるでC++0xのUser-Definedリテラル!
807デフォルトの名無しさん:2008/10/24(金) 00:17:36
さすがに、

void foo(alias F)() { F("hello"); }
void main() { foo! (string msg){}; }

みたいなのは無理か。
世界が広がる気がしたんだが。
808デフォルトの名無しさん:2008/10/24(金) 01:11:08
うぉるたんが演算子にUnicode文字を採用したがっているようです
809デフォルトの名無しさん:2008/10/24(金) 02:04:42
Fortressみたいになんのか?
810デフォルトの名無しさん:2008/10/24(金) 02:39:10
入力しにくいだろ
811デフォルトの名無しさん:2008/10/24(金) 02:44:27
auto s = q{hoge};
これ覚えてる人いるのかね
812デフォルトの名無しさん:2008/10/24(金) 03:14:21
覚えてるよ。
mixin用にコードを書くときとか便利。
813デフォルトの名無しさん:2008/10/24(金) 04:28:31
トークン文字列か。Dとしてvalidなトークンだけを受け入れる文字列リテラルの一種なのね。

話逸れるけども、例を見せてコードで語るときは、なるべくautoは避けてもらえるとありがたい。
q{hoge}が文字列になるという情報が省略されてちゃ、変数に代入可能な何かだとしか読み取れない。

autoって可読性を損なう誤用がたくさん生まれそうでちょっと怖い。
書きやすいより読みやすい方が大事だぜー。
814デフォルトの名無しさん:2008/10/24(金) 04:46:54
void _do(string x)() {
mixin(x);
}

void main(){
_do!q{
writeln("Hello, world");
};
}
815デフォルトの名無しさん:2008/10/24(金) 05:11:06
>>814
rubyのブロック付き関数呼び出しみたいなことができそうだな
816デフォルトの名無しさん:2008/10/24(金) 06:56:44
おまいら楽しそうだなwおいらもまぜてw
817デフォルトの名無しさん:2008/10/24(金) 13:50:44
どんどん変態言語になっていくw
818デフォルトの名無しさん:2008/10/24(金) 14:34:28
カッコで囲まないだけでこんなに変態ちっくになるなんて
819デフォルトの名無しさん:2008/10/24(金) 17:51:38
>>813
>q{hoge}が文字列になるという情報が省略されてちゃ、変数に代入可能な何かだとしか読み取れない。
ごめん
ヒントなしで聞いてみたかったもんで
820デフォルトの名無しさん:2008/10/25(土) 02:57:01
いつのまにかTangoのカンファレンスのビデオが上がってた
ttp://vimeo.com/channel20241
821デフォルトの名無しさん:2008/10/25(土) 04:12:08
>>814
これでqが省略できれば…
822デフォルトの名無しさん:2008/10/25(土) 04:36:59
qはいったいどこから来てるんですか。
っていうかいったい何なんですか。
説明求む
823デフォルトの名無しさん:2008/10/25(土) 05:35:42
Rubyからじゃないかなぁ
824デフォルトの名無しさん:2008/10/25(土) 07:52:27
>>815
この例だとあまり意味ないけど、使い道はなきにしもというところだね
void main() {
        auto a = new Array!(int);
        a.a = [0,1,2,3,4,5,6,7,8,9];
        a.each!q{ |i|
                writefln(i+5);
        };
}

void getRubyStyleBlockArgument(string s, out int begin, out int end) {
        foreach(int i, const char c; s) { if(c=='|') {begin=i+1; break;} }
        if(begin==-1) static assert("There is mp Ruby Style Iterator Argument");
        else foreach(int i, const char c; s[begin..$]) { if(c=='|') {end=i+begin; break;} }
        if(end==-1) static assert("There is mp Ruby Style Iterator Argument");
}
string getRubyStyleBlockArgument(string s) {
        int begin=-1, end=-1; getRubyStyleBlockArgument(s, begin, end);
        return s[begin..end];
}
string getRubyStyleBlockExpressions(string s) {
        int begin=-1, end=-1; getRubyStyleBlockArgument(s, begin, end);
        return s[end+1..$];
}
class Array(T) {
        T[] a;
        void each(string x)() {
                mixin("foreach(ref "~getRubyStyleBlockArgument(x)~"; a) {"~getRubyStyleBlockExpressions(x)~"}");
        }
}
825デフォルトの名無しさん:2008/10/25(土) 08:15:33
書いてみたはいいが、Alexandrescu先生の奥が深すぎてビビる
826デフォルトの名無しさん:2008/10/25(土) 08:45:25
>>824
これはひどいw
構文がほぼ拡張されている
827デフォルトの名無しさん:2008/10/25(土) 08:47:59
これだとむしろqがあった方がいいなー
なかったら何やってるんだかわからなさすぎる
828デフォルトの名無しさん:2008/10/25(土) 09:14:41
>>824
これは変態過ぎるwww
|hoge| ってDの構文としてvalidなんだな
829デフォルトの名無しさん:2008/10/25(土) 09:36:21
うわーなんか急にクソみたいな言語になったな…
Ruby化とかマジ勘弁して欲しいわ
830デフォルトの名無しさん:2008/10/25(土) 10:13:13
>>828
q{}が受け入れるのは、構文としてvalidなものじゃなくて、トークンとしてvalidなものだから。
831デフォルトの名無しさん:2008/10/25(土) 10:14:02
いやこれ遊びでやってるだけだし
832デフォルトの名無しさん:2008/10/25(土) 10:40:37
ううむ失敗
関数テンプレートはfunc(array) => array.func 変換できないんだっけ?
void main() {
        [0,1,2,3,4,5,6,7,8,9].each!q{
            |i|writefln(i+5);
        };
}
void each(string x,T)(T[] a) {
        mixin("foreach(ref "~getRubyStyleBlockArgument(x)~"; a) {"~getRubyStyleBlockExpressions(x)~"}");
}
833デフォルトの名無しさん:2008/10/25(土) 10:58:32
>>832
本来はできるが、!の形式でテンプレートパラメータを与えるとできない。多分バグ。
834デフォルトの名無しさん:2008/10/25(土) 12:25:22
いつの間にか()いらなくなってたんだな
void main(){
    [1].f();
    [2].f;
}
void f(T)(T[] a){}
835デフォルトの名無しさん:2008/10/25(土) 12:30:27
>>834
>>772 2.020からっぽいよ
836デフォルトの名無しさん:2008/10/25(土) 12:51:13
import std.algorithm;
[0,1,2,3].reverse;

これが通るのは気持ちいいな。
型の自動推定ができるとテンプレートでもこれがいけるのか。
しかしstd.algorithmあたりはソースを覗くと結構魔窟。

>824をいじってて気づいたが、実行時関数実行ではassertがstatic assert並に動作するのね。
当たり前といえば当たり前だが。
あとstd.string.toStringがコンパイル時動作しないとか……動的配列を使ってるんだろうけどね。
837デフォルトの名無しさん:2008/10/25(土) 13:26:58
冷静に考えると、コンパイル時実行できるパーサを書けば何でもできるな。


書いてて面倒になってきたのでやめたが、
formula!q{ Σᵢ₌₁ⁿ(i^2) }

reduce!("a + b")(0, map!("pow(a, 2)")( i[1..n]) ))
に変換する程度ならたぶん書ける気がする

Unicode文字がつぶれてたらすまん
838デフォルトの名無しさん:2008/10/25(土) 14:23:15
文字列内部のインテリセンスはIDE開発者を自殺に導きかねない要素だな
839デフォルトの名無しさん:2008/10/25(土) 14:35:12
それでもDescentなら…Descentならきっと何とかしてくれる(AA略
840デフォルトの名無しさん:2008/10/25(土) 14:39:42
いっそDSLを読み込んでDの言語要素を生成できるコンパイラ用プラグインの仕組みが欲しい。
コンパイル時に文字列いじり回してDソースにトランスレートするよりよっぽどスマートだ。
あとrubyのブロックはフツーに欲しい。
841デフォルトの名無しさん:2008/10/25(土) 14:43:57
やはりジェネリックデリゲートが必要だな。
最低限でも、デリゲートの引数の型を推論する機能は必要だ。
842デフォルトの名無しさん:2008/10/25(土) 15:05:16
>>838
HTML周辺はPHPやらRuby(ERB)やらJavaScriptやらで地獄だろうな、と思ったけど、
そういやかつてはD言語もHTML埋め込み可能だったな。意味合いが違うけど。
843デフォルトの名無しさん:2008/10/25(土) 15:11:07
>>841
class A{]
class B:A{}
A delegate() x = B delegate(){return new B;};
void delegate(A) y = void delegate(B){};
その前にこれが欲しい
844デフォルトの名無しさん:2008/10/25(土) 15:14:28
間違えた こうか
class A{}
class B:A{}
A delegate() x = delegate B(){return new B;};
void delegate(A) y = delegate void(B){};
845デフォルトの名無しさん:2008/10/25(土) 15:19:30
>>843
void delegate(void) x = function void(){};
そのまえにこれがほしい
846デフォルトの名無しさん:2008/10/25(土) 15:20:17
間違えた こうか
void delegate() x = function void(){};
847デフォルトの名無しさん:2008/10/25(土) 17:25:14
次のスレタイはさしずめ「変態D言語 Part20」といった具合か

外国でも"The Programing Language H(entai)"とか根ざそうか
むしろTPLHのパイオニアとして君臨するのも
848デフォルトの名無しさん:2008/10/25(土) 18:15:16
変態すぎてperl並にフリーダムになりそう。
849デフォルトの名無しさん:2008/10/25(土) 18:23:28
そんなに変態化を心配(むしろ歓喜か?)を心配しなくても一般ユーザーからは見えにくい領域だろ
850デフォルトの名無しさん:2008/10/25(土) 22:55:03
Dゲンガーは9割方C++を経由してるから変態具合は心配しなくていいと思う
851デフォルトの名無しさん:2008/10/25(土) 23:07:48
俺数少ない一割だw
852デフォルトの名無しさん:2008/10/25(土) 23:19:56
一割はさすがに少なすぎだろ
853デフォルトの名無しさん:2008/10/25(土) 23:20:07
>>850
いや、その理屈はおかしい
変態が嫌になってD大陸に移住したのに、そこもまた変態の国だったなんて勘弁してよ
854デフォルトの名無しさん:2008/10/25(土) 23:24:35
いきなりレス増えてると思ったら新版出てたのか

ところで、モジュール名と関数名が文字列として欲しいんだけど、
何とか手に入らないもんかな。
ソースに静的文字列として毎回書かないとダメですか。
855デフォルトの名無しさん:2008/10/26(日) 00:26:44
foreach (moduleinfo; ModuleInfo)
writefln(moduleinfo.name);
これで使っているモジュール名が取れたりするけど
*Info系はまだまだ充実してない気がする
856デフォルトの名無しさん:2008/10/26(日) 00:39:01
変態グラマ専用 D言語 Part20
でいいよ
857デフォルトの名無しさん:2008/10/26(日) 00:42:14
かなり微妙だけど…

import std.stdio;
alias std.stdio hoge;

void main(){
writefln(f!main); // "main()"
writefln(f!f); // "f(alias F)"
writefln(f!(std.stdio)); // "module stdio"
writefln(f!(hoge)); // "module stdio"
}
string f(alias F)(){ return ((F)).stringof; }
858デフォルトの名無しさん:2008/10/26(日) 07:33:44
>>850
俺Java
ネイティブ行けるJavaみたいなの期待してたんだけど
こんなんならJavaのネイティブコンパイラの改良を期待した方がよさそうだぜ…
859デフォルトの名無しさん:2008/10/26(日) 11:09:18
そもそも、boostという超変態ライブラリが開発されたC++より
テンプレートが強化されてるのがD言語だぜ?
いつかこうなることは分かってたはず
860デフォルトの名無しさん:2008/10/26(日) 11:15:58
これは無闇にテンプレート引数のカッコ省略するのが流行る流れ
861デフォルトの名無しさん:2008/10/26(日) 11:52:31
ネイティブでリフレクションできる言語として期待している
862デフォルトの名無しさん:2008/10/26(日) 12:43:22
SafeDのコラムを見るといいかと思う。
ちょっと気味悪い書き方「も」できるだけで、>>849の言うように
一般ユーザーはより可読性が高い安全な書き方をすればいいと思うよ
863デフォルトの名無しさん:2008/10/26(日) 13:15:09
それじゃPHPよろしくスパゲティまっしぐらじゃないですか
864デフォルトの名無しさん:2008/10/26(日) 13:49:30
ここ最近の話は解読しようとしてヘコタレた
俺の言語マニア度からするとfreebasicあたりにしといたほうがよさそうだ
865デフォルトの名無しさん:2008/10/26(日) 19:09:09
>>855
おぉ、そんなアンドキュメンテッドな仕様があったのか。マジで知らなかった。
ただ、欲しいのは自分のモジュール名、自分の関数名なんで
このままではちょっと使えないか。
866デフォルトの名無しさん:2008/10/26(日) 19:19:09
気味悪いと言いつつ面白いと思ってしまう自分が嫌だ
こんな書き方使わないっちゅーのにw
867デフォルトの名無しさん:2008/10/27(月) 19:12:00
phobos.libにsetjmpとlongjmpが隠れてたんでこっそり使ってみたら
setjmpはいけたが、longjmpでAccess Violationと怒られた
なんとかなんないすか?
868デフォルトの名無しさん:2008/10/27(月) 20:16:42
そりゃ、Cの大域ジャンプは、Cで規定されてる環境しか保存しないから、使うのは難しいだろ。
869867:2008/10/27(月) 21:58:35
なるほど、うぉるたんも隠すわけだ
コルーチンを実装したくて色々試してたんだけど、
Win32のファイバを使ったらなんかうまくいったからいいや
870デフォルトの名無しさん:2008/10/27(月) 22:24:14
std.arrayが無い……だと……。
871デフォルトの名無しさん:2008/10/27(月) 23:46:17
tangoにFiberあったりするんだな
実装見た感じD特有のなんかってものはなさそうだけど・・・
872デフォルトの名無しさん:2008/10/28(火) 13:15:04
コルーチンってガーベジコレクションとの相性はどうだろう
コルーチンのスタックもスイープしないといけないはずだか
言語レベルでサポートしてくれないとうまくいかないと思う
873デフォルトの名無しさん:2008/10/28(火) 16:28:02
>>827
コルーチンのスタックのアドレスをcore.memory.GC.addRootするだけだと思う
874デフォルトの名無しさん:2008/10/28(火) 16:50:07
スタックを自分で確保すると言うこと?
スタックポインタまでは面倒見てくれないので無駄が多いのと
Win32のファイバには使えない

875デフォルトの名無しさん:2008/10/28(火) 18:42:27
自前のスタックとスタックポインタをスイッチする実装のコルーチンって昔にD研究室にあったね。
コンパイル通すのもそんなに難しくなかったし、GCについても大丈夫な根拠が書かれてた気がする。
ただ例外が飛んだりメモリが溢れたりすると無言で死ぬ。
876デフォルトの名無しさん:2008/10/28(火) 20:28:13
D研究室みてきた
仮想スタックをすべてスキャンする方法だ
スタックポインタを超えてスキャンするので無駄は多い
300バイト程度を想定しているみたいで少数スレッドなら問題ないと思う

言語レベルでの実装であれば本物のスタックと同様
スタックトップまでスキャンするように実装できるはず
877デフォルトの名無しさん:2008/10/28(火) 21:02:34
>>875
>ただ例外が飛んだりメモリが溢れたりすると無言で死ぬ。

Dの例外がWin32構造化例外を使ってるかは確認してないけど、少なくともD研究室のは構造化例外が出た時点で死ぬと思う。
理由はThread Information Blockの書き換えが不完全なせいなんだけど(実スタックとTIBのスタックが一致しないので
スタックの範囲チェックで死ぬ)、書籍になったC++版だとそれを回避するために、確かスタックに巨大な配列を用意して
それを使うとか酷い方法で回避されてた気がする。
TangoのはTIBの書き換えもやってるしWin/Linuxで動くしTangoの使っておくほうがいいかと。
878デフォルトの名無しさん:2008/10/28(火) 22:04:30
インスタンスとメンバメソッドのポインタのペアを使って、C++の->*みたいなことがしたいんだけど、どうすればいいの?
879869:2008/10/28(火) 23:53:36
コルーチン内のexit用に例外を発射してるんだけど、うまくいってるみたい
コルーチンのエントリー関数(?)で全部finallyして処理してやればいいんじゃね?

>>871
tangoは盲点だったわ。嫌いで使ってなかったんだ。
dmdのtango仲良し政策でいつか使うかもしれない

>>878
物足りないかもしれないけど、デリゲートを使うとか?
880デフォルトの名無しさん:2008/10/29(水) 00:50:51
http://techon.nikkeibp.co.jp/article/NEWS/20081028/160254/

Dにも名前つきパラメータほしいよう
881デフォルトの名無しさん:2008/10/29(水) 01:40:51
>>880
VBのさいつぁいですかいな。いや、pythonにもあるけどさ。
オーバーロードどうなる?
882デフォルトの名無しさん:2008/10/29(水) 01:58:16
名前付きパラメータを導入するなら
構造体の要素の名前付き初期化と構文を統一して欲しいな
ってことで破壊的変更まだー?
883デフォルトの名無しさん:2008/10/29(水) 07:35:26
>>879
ってかこの前のバージョンからphobosに統合されてる気がする>Fiber
http://www.kmonos.net/alang/d/2.0/phobos/std_thread.html#Fiber
884デフォルトの名無しさん:2008/10/29(水) 08:48:29
>>883
tango入れるの面倒だし命名気に入らないしな俺に超朗報。
885デフォルトの名無しさん:2008/10/29(水) 08:56:00
いまだにTangoの命名規則気に入らないとか言ってる人って多いのかね
886デフォルトの名無しさん:2008/10/29(水) 11:27:43
>>883
てか、日本語もう更新されてるのか すげぇ
887デフォルトの名無しさん:2008/10/29(水) 21:55:07
名前付きパラメータが必要だと思うくらいになったら、
メソッドシグネチャがきっとすごいことになっているから、
素直に連想配列引き渡したほうがいいと思うなぁ。
888デフォルトの名無しさん:2008/10/29(水) 22:04:57
連想配列で渡すのは型付けの弱いLLだからできる芸当だろ。
強い型システムのDとは相容れないよ。
889デフォルトの名無しさん:2008/10/29(水) 22:07:22
引数順序や省略箇所の制約は単に文法の都合だけだろうから、
名前付きパラメータでそれらの制約を緩和してもいい気がする。
自分や他人が眺めるときの可読性の向上にも役立つだろうし。

さらに発展して、
 func.paramtuple t;
 t.x = 3;
 t.y = 4;
 t.z = "hoge";
 func(t); //func(x:3, y:4, z:"hoge");
とか。
890デフォルトの名無しさん:2008/10/29(水) 22:29:28
こんなときこそメタプログラミングの出番なきが…
891デフォルトの名無しさん:2008/10/29(水) 22:38:04
引数の受け渡しに構造体使えばいいのでは…?
892デフォルトの名無しさん:2008/10/29(水) 22:39:45
メタプログラミングって…
893デフォルトの名無しさん:2008/10/29(水) 22:43:08
文字列処理のことだよな?
894デフォルトの名無しさん:2008/10/29(水) 22:49:17
C#4で名前付き引数とかが入るらしい。
参考にしてみたらどうだろう
895デフォルトの名無しさん:2008/10/29(水) 22:59:09
896895:2008/10/29(水) 22:59:44
×>>883
>>880
897デフォルトの名無しさん:2008/10/29(水) 23:03:10
>>889のようにタプルを整理すれば綺麗になりそうだなあ。
Pythonの**みたいに
898デフォルトの名無しさん:2008/10/29(水) 23:18:29
>コンパイラを.NET Framework上で実装し,プログラムから利用できるようにする。

こっちのが気になった。メタプログラミングのためにeval相当を入れるって
あんまり筋が良いとは思えないな・・・。
899デフォルトの名無しさん:2008/10/29(水) 23:51:52
>>898
現状ではライブラリは、実行時にテンポラリファイルにC#のソースコードを書き出して、
それを(CUI用の)コンパイラでビルドして参照・実行するという方法をとってる。
コンパイラのコア部分が直接操作できるようになれば、事態はかなり改善されるよね。
900デフォルトの名無しさん:2008/10/29(水) 23:58:26
New features in C# 4.0
https://docs.google.com/View?docid=dcj4xk6_17ffc7nmgv

いつか来た道
901デフォルトの名無しさん:2008/10/30(木) 03:09:31
>>891
C++にはいらない派の主張はそれと,仮引数の名前の問題が主なものだったような?
Dでも構造体にすればいいのはわかってるけど時勢はin-placeに書く流れのはず.
無名関数とか.
902デフォルトの名無しさん:2008/10/30(木) 12:42:18
struct X{int* x;}
alias const(X) CX;
static assert(is(typeof(CX.x) == const(int*))); // static assert  is false
これって推移的なconstに反するのでは?
あと、ほんと↓みたいに書きたかったけどこっちはコンパイルエラー
struct X{int* x;}
static assert(is(typeof(const(X).x) == const(int*)));
ここら辺仕様なのかバグなのかいまいち判断付かん…
903デフォルトの名無しさん:2008/10/30(木) 12:52:13
const(X) cx; に対しては、ちゃんと
 typeof(cx.x) => const(const(int)*)
となってるし、
alias const(X) CX; に対して
 typeof(CX.x) => int*
になるのは仕様から考えればバグだろうな。

typeof(const(X).x) は typeof((const(X)).x) と書けば通るが、
これも本来なら前者も認められるべきだと思う。
904デフォルトの名無しさん:2008/10/30(木) 21:47:34
http://qb5.2ch.net/test/read.cgi/operate/1206636885/657
強制ID実装を駄目元で頼み込んでみた。
もし賛同してくれる人がいたら同意のレスつけてください。
905デフォルトの名無しさん:2008/11/01(土) 19:07:02
2.021
906デフォルトの名無しさん:2008/11/01(土) 21:59:18
まだです
907デフォルトの名無しさん:2008/11/01(土) 22:30:52
908デフォルトの名無しさん:2008/11/01(土) 22:32:55
すごく・・・コンパイルエラーです
909デフォルトの名無しさん:2008/11/01(土) 22:44:46
>>732-737あたりのことで考えてたんだけど、

invariant(Derived)* -> invariant(Base)*
invariant(Derived)* -> const(Base)*
const(Derived)* -> const(Base)*
Derived* ->const(Base)*

の変換は安全なんだよね。
この辺を上手く整理できないかなあ。
910907:2008/11/01(土) 23:10:43
>>908
それもそうなんだけど、それ以上に
alias invariant( char)[] Iutf8;
これを勘弁してほしい…
せっかくPhobosがTangoに歩み寄る感じで変更が加わったのに、
Tangoはそれを完全無視した路線を突っ走っているというこの事実…っ!
911デフォルトの名無しさん:2008/11/02(日) 02:06:34
immutableってどうなったの?
912デフォルトの名無しさん:2008/11/02(日) 02:27:52
>>911
たぶんそのうち置き換わる。

なかったことになっても、immutable->invariantは単純な置換で書き換えられるから、
いまのうちからimmutable使うようにしてもいいかもね。
913デフォルトの名無しさん:2008/11/02(日) 05:15:07
TangoはPhobosの何が気に入らないって言うんだ?
小さいD言語コミュニティを分断させようとしてるようにしか見えない
914デフォルトの名無しさん:2008/11/02(日) 05:32:06
両方使えるようになったんじゃなかったんですか?
915デフォルトの名無しさん:2008/11/02(日) 08:40:33
invariantじゃない限り次の瞬間には書き変わってるかもしれないと思わないといけないんだよね?
916デフォルトの名無しさん:2008/11/02(日) 14:04:36
>>910
そういう無意味なaliasはやめろって公式に書いてあったような気が
http://www.kmonos.net/alang/d/2.0/dstyle.html
> alias int* pint;
少なくともこれはダメらしいし。
917デフォルトの名無しさん:2008/11/02(日) 14:17:59
Microsoft涙目ですね
918デフォルトの名無しさん:2008/11/02(日) 14:43:23
>>916
utf-8の文字列を明示するものとして使うならあり(typedefの方が良い気がするが)。
asciiの文字列と区別できるし。
919918:2008/11/02(日) 14:46:31
補足するとアプリケーションハンガリアンとシステムハンガリアンの違いね。
920デフォルトの名無しさん:2008/11/02(日) 14:46:33
そもそも、charはUTF8だと決まってるわけで。
ASCIIのほうこそubyteをtypedefして使うべき。
921デフォルトの名無しさん:2008/11/02(日) 15:03:13
そこはstrong typedefがあるからtypedef char ascii;で良いだろ。
あとstringは仕様では決められていなく、ライブラリレベルの問題。
922デフォルトの名無しさん:2008/11/02(日) 17:30:15
>>917
彼らには型のサイズが不定なCの上でバイナリ互換を保つ必要があるって事情が
あるだけで別に涙目にはならんかと
923デフォルトの名無しさん:2008/11/04(火) 08:23:57
ん?結局TangoはPhobosを無視してはいないってことなのか?
charはutf8じゃないときがある。stringも同じ。
utf8だと保証する意味でIutf8とするのはあり、ってことなら。

それに両方使えるようにするのを目的にobject.d辺りの
ライブラリと言語機能の癒着をいくつか断ち切ったんだよね?(読めてないけど)
だったら今回の変更を無視してはいないんじゃないかな。

あとDでOS書くのも楽になってるんじゃないのか。
924デフォルトの名無しさん:2008/11/04(火) 09:27:34
言語仕様的にはDのcharはUTF-8だと思うけど
http://www.kmonos.net/alang/d/2.0/type.html
925デフォルトの名無しさん:2008/11/04(火) 12:41:58
>>924
現状windowsのvoid main(string[] args)のargsには
utf8じゃない文字が入るんだ・・・
926デフォルトの名無しさん:2008/11/04(火) 13:00:26
あとstd.windows.charsetではchar*にutf8以外を入れてしまっている
927デフォルトの名無しさん:2008/11/04(火) 13:23:41
typedef invariant(ubyte[]) sjis;
とかやればいいんじゃね
928デフォルトの名無しさん:2008/11/04(火) 14:39:34
複数のインターフェースを継承する際に、
継承元に同名の関数がある場合はどうしますか。
名前分けろと言われればそれまでですが、
関数ハイジャック並にうまく解決できればなあと。

interface X { int f(); }
interface Y { int f(); }
interface Z { string f(); }

class A : X, Y, Z {
        int f() { return 1; } // X, Yの各f()の動作を分けるには?
        string f() { return ""; } // 返り値がnot covariantとなる問題を避けるには?
}

そういえば、そもそも
class A {
        int f() { return 1; }
        string f() { return ""; }
}
これが通ったりするんですが、
A a = new A;
writefln(a.f());
と書いたりすれば当然両方の関数にマッチするので、この解決ってどうやるんでしょうか。
929デフォルトの名無しさん:2008/11/05(水) 18:28:45
>>928の答えではないが
class A : X, Y, Z {
// interface X
void f(){}
// interface Y
void g(){}
// interface Z
void h(){}
}
俺はいつも上のように書いてるから
class A : X {...}, Y {...}, Z {...}
と書けてもいいなという気がしている
930デフォルトの名無しさん:2008/11/06(木) 01:42:49
class A : X {
  // Xの実装
},
Y {
  // Yの実装
} {
  // その他のメンバ
}
ってなるのか?
931デフォルトの名無しさん:2008/11/06(木) 03:24:31
それはきもい
932929:2008/11/06(木) 09:12:15
ああそうか
このままだとA本体の実装を書くところがダメになるのか・・・
933デフォルトの名無しさん:2008/11/06(木) 09:48:06
void func()
in {}
out {}
body {}
式に

class A : X, Y
body {}
override X {}
override Y {}
とか
934デフォルトの名無しさん:2008/11/06(木) 11:58:43
組み込みの cfloat, cdouble, creal, ifloat, idouble, ireal を置き換えるモジュールワロタ
935デフォルトの名無しさん:2008/11/06(木) 12:18:46
次のバージョンから構造体のthisがポインタではなくリファレンスになるらしい
936デフォルトの名無しさん:2008/11/06(木) 12:27:48
Dはどこへいくのだろう・・・
937デフォルトの名無しさん:2008/11/06(木) 12:38:23
それじゃあ、構造体のnewもリファレンスを返してほしいな。
 T s = new T;
が通ったり通らなかったりするのは気持ち悪い。
938デフォルトの名無しさん:2008/11/06(木) 12:52:19
939デフォルトの名無しさん:2008/11/06(木) 13:14:55
一人で好きな設計を考える場合の欠点だわな
940デフォルトの名無しさん:2008/11/06(木) 16:51:09
下記のようにスコープを分けても同名の内部クラスを定義するとリンクエラーになってしまいます。これは仕様通りなのでしょうか?コンパイラはdmd2.020です。

void main()
{
 {
  class CTest{
   this(){}
   }
 }
 {
  class CTest{
   this(){}
   }
 }
941デフォルトの名無しさん:2008/11/06(木) 17:23:16
void main()
{
 (){
  class CTest{
   this(){}
  }
 }();
 (){
  class CTest{
   this(){}
  }
 }();
}
ちょっとJavascriptを思い出した
942デフォルトの名無しさん:2008/11/06(木) 18:58:11
確かにJavascriptと同じやり方だが見た目の気持ち悪さが半端ないなw
全体を括弧でくくらなくていいってのは良いのに
943デフォルトの名無しさん:2008/11/06(木) 19:20:28
(){}()

シンメトリーって美しいな
944デフォルトの名無しさん:2008/11/06(木) 19:45:58
顔文字みたい
945デフォルトの名無しさん:2008/11/06(木) 19:52:24
p^o^q
946デフォルトの名無しさん:2008/11/08(土) 07:18:20
http://d.hatena.ne.jp/faith_and_brave/
VC++10でC++0xがかなりはいってくるというか・・・
947デフォルトの名無しさん:2008/11/08(土) 13:56:56
入ってこないのも多いじゃん。
一通り揃うまでに早くて3〜5年はかかるのかねえ

vcよりもdmcの++0x対応のほうがDには直結していると思うけど
何かアナウンスってないの>ウォチしてる方々
948デフォルトの名無しさん:2008/11/08(土) 14:03:40
949947:2008/11/08(土) 15:21:41
>>948
---
>DMCは今度のC++標準の改正を取り込むの?

時間が許すときに。いくらか変更を加えるつもりだったけれど
最後の(C++標準化委員会の)会議で多くの仕様変更があった。

>64ビットについてはどう?

まだ知らない。
---
翻訳ソフトの結果を弄ってみたけどこんな感じ?
(最後のI don't know yet.のニュアンスがわかんない)
950デフォルトの名無しさん:2008/11/08(土) 17:06:32
C++0xの64bit対応の話だと思って「そんなもん知らん」って書いたんじゃない?
記事名的に考えて
951デフォルトの名無しさん:2008/11/08(土) 17:59:48
ああ仕様の話として返事したわけか。
てっきりDMCへの実装がどうなるかの質問としか思ってなかったので...
投げやりなのかユーモアなのか不気味に思えてた。
(dmcが64ビットexe生成対応せんことにはdmdもそうならないだろうし)
952デフォルトの名無しさん:2008/11/08(土) 19:20:09
勉強中なのですが教えてください。

---- test.d ----
private int test1 = 100;
private enum { test2 = 200, }

---- main.d ----
import test;

void main()
{
assert(test1); // エラー
assert(test.test1); // OK(*1)

assert(test2); // OK(*2)
}

*1と*2がコンパイルエラーにならないのですが、これは正しいのでしょうか?
両方ともprivateなので通らないと思っていたのですが…。
使用したコンパイラはdmd.1.036です。
953デフォルトの名無しさん:2008/11/08(土) 21:14:36
Dをつかってしばらくたつが未だprivateが良くわからん…
private import win32.windows: HWND;
とかやっても別のところで名前がconflictしてるよって言われたりするし。
ひょっとしてバグなのかもしれない。
現状はとりあえずそういうもんなのかと思って諦めて使ってるけど…
954デフォルトの名無しさん:2008/11/08(土) 21:52:40
>>952アクセスできるのはバグ
955デフォルトの名無しさん:2008/11/09(日) 00:00:31
>>952
モジュールに限らず普通のクラスインスタンスのprivateメンバもアクセスできるね
これてっきりmixinのバグかと思ってたら、もっと基本的なところのバグだったんだなぁ
956952:2008/11/09(日) 08:34:35
>>953-955
ありがとうございます。頭のもやもやが晴れました。
957デフォルトの名無しさん:2008/11/09(日) 12:47:09
>>934ってどういうこと?
958デフォルトの名無しさん:2008/11/11(火) 21:39:53
カスタムアロケータの代わりにファクトリをやらたいがどうだろう
仮想関数の中身だけ違う派生クラス群をstatic opCallで製造しているのだが、
なんとなくnewにしたいときもある。

C c = C(1);

abstruct class C {
        static opCall(int x) {
                switch(x) {
                case 1:
                        return new D;
                ...
        }
        ...
}
class D : C {...}
959デフォルトの名無しさん:2008/11/11(火) 21:46:15
委譲でいいんでね
960デフォルトの名無しさん:2008/11/11(火) 21:52:25
委譲か
opDotのおかげで委譲は異常な簡単さになったが、
ちょっとオーバーヘッド計ってくる
961デフォルトの名無しさん:2008/11/11(火) 22:03:00
>>960
誰が上手いこと言えと
962デフォルトの名無しさん:2008/11/11(火) 22:16:44
文を以上で〆れば完璧だった
963デフォルトの名無しさん:2008/11/11(火) 23:08:23
最適化オプション入れたうえで計ってきた

関数呼出しオーバーヘッドは確実に2回分になるけど、
メンバ変数に代入するコスト1〜2回分=メンバ関数を参照するコスト10〜20回分くらいなんで、
inlineにしたいくらいのシビアさを要求されない限り気にならないかなというところ。
964デフォルトの名無しさん:2008/11/11(火) 23:10:26
しかしそれでもそういう場面(メンバ関数に1〜2回代入するが、10の6〜10乗のオーダーでループさせる)で使う関数だから気になるんだよなあ。
965デフォルトの名無しさん:2008/11/12(水) 00:00:13
そんなコアな部分でswitchとか信じられん
966デフォルトの名無しさん:2008/11/12(水) 23:51:38
そういえばopDotってあったなw
template A(int N) if(N%2==0)
これこのまま残るのかねえ
967デフォルトの名無しさん:2008/11/12(水) 23:59:13
ifじゃなくてwhereとかにして欲しかったが、もう遅いのだろうか
968デフォルトの名無しさん:2008/11/13(木) 07:22:53
遅いことはないと思うが別にifでいいような
969デフォルトの名無しさん:2008/11/13(木) 11:51:27
ifの後ろにはelseが書けないとムズムズする。

template A(int N) if(N%2==0) {
 alias "偶数" A;
} else {
 alias "奇数" A;
}
970デフォルトの名無しさん:2008/11/13(木) 12:03:20
これがあるからなあ元々いらんのだが
template A(int N) {
  static if(N%2==0) {}
  else {}
}
971デフォルトの名無しさん:2008/11/13(木) 12:04:06
な、なにをやっているの・・・?
972デフォルトの名無しさん:2008/11/13(木) 12:09:15
ifだと分岐で、whereだと条件って感じがするから、俺はwhereのが好みかなあ。
まあどうでもいいけど。
973デフォルトの名無しさん:2008/11/13(木) 19:50:06
974デフォルトの名無しさん:2008/11/13(木) 21:23:19
インライン化ってされてますか……
975デフォルトの名無しさん:2008/11/13(木) 21:25:36
-inline
976デフォルトの名無しさん:2008/11/13(木) 21:35:48
ありがとうございます。気付いていなかった。
977デフォルトの名無しさん:2008/11/13(木) 21:50:08
非staticだとインライン化されないとか、
メンバに書き込むと遅くなる(=書き込まなければ早い)とか、
結構細やかに最適化が行われているんですね。
プログラミング言語 D (D Programming Language) について語るスレッドです。
過去スレ、関連スレは >>2

■本家
http://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)

■コンパイラ
http://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
http://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)
過去スレ、関連スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=D%8C%BE%8C%EA&sf=2&all=on&view=table&shw=5000

その他関連スレ
バイナリをゲロる言語の魅力って何?
http://pc11.2ch.net/test/read.cgi/tech/1160869311/

Eclipse統合M26【Java/C/PHP/Ruby/Python/Perl】
http://pc11.2ch.net/test/read.cgi/tech/1224536200/

eclipseってそんなに良いか?【エクリプス】
http://pc11.2ch.net/test/read.cgi/tech/1099300344/

980失敗したので投稿し直し:2008/11/14(金) 09:25:30
過去スレ、関連スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=D%8C%BE%8C%EA&sf=2&all=on&view=table&shw=5000

その他関連スレ
バイナリをゲロる言語の魅力って何?
http://pc11.2ch.net/test/read.cgi/tech/1160869311/

Eclipse統合M26【Java/C/PHP/Ruby/Python/Perl】
http://pc11.2ch.net/test/read.cgi/tech/1224536200/

eclipseってそんなに良いか?【エクリプス】
http://pc11.2ch.net/test/read.cgi/tech/1099300344/

統合開発環境Eclipseプラグイン開発QA
http://pc11.2ch.net/test/read.cgi/tech/1081517094/

"Code of the Nerds" Digital Mars C/C++
http://pc11.2ch.net/test/read.cgi/tech/1044210976/
981デフォルトの名無しさん:2008/11/14(金) 11:56:35
いってこよう
982デフォルトの名無しさん:2008/11/14(金) 12:05:31
983デフォルトの名無しさん:2008/11/15(土) 10:53:36
ラベルのアドレスが欲しいんだが、なんかいい方法ないか?
984デフォルトの名無しさん:2008/11/15(土) 14:27:13
>>983
そもそも、ラベルのアドレスをランタイムで手に入れてどうするのかと思うけど、
asm 文で拾えないか?
985デフォルトの名無しさん:2008/11/15(土) 14:49:14
direct threaded codeじゃね
http://jp.rubyist.net/magazine/?0008-YarvManiacs
986デフォルトの名無しさん:2008/11/15(土) 15:11:15
>>984
ちょとしたパーサかいててジャンプテーブルが作りたい、要するに>>985なんだけど、
asmでも取れないみたいなんだよねえ…
ネスト関数使えば同等のものを書けなくもないんだけど、
コードフローがぐちゃぐちゃになるし、ほんと痒いところに手が届かない。
987デフォルトの名無しさん:2008/11/15(土) 17:45:14
ラベル付きcontinueとかたまに使うが、確かにミドルウェアみたいなものを書くときにはラベルのアドレスが欲しいかもね

ところで参照の配列みたいなものを返したいのだが、定型的方法はありますか?
boost::multi_indexみたいな感じで、Rangeに別のビューを持たせたいなあと思うわけです。
ポインタを返してもいいがユーザサイドとしては面倒かなと。
988デフォルトの名無しさん:2008/11/16(日) 08:34:03
>>986
無名デリゲートで配列をつくるとか
void delegate()[NUM_CMD] tbl;
tbl[CMD_PRINT] = {
writef("Hello World");
};
tbl[CMD_COPY] = {
writef("こぴー");
};

こんなコードばっかり書いてるとC/C++に戻れないぜ
989デフォルトの名無しさん:2008/11/16(日) 13:06:43
C/C++に毒されすぎた俺にはそんな発想が出てこないw
990デフォルトの名無しさん:2008/11/16(日) 14:16:58
バグにvote ktkr
991デフォルトの名無しさん:2008/11/16(日) 16:08:22
>>990 kwsk
992デフォルトの名無しさん:2008/11/16(日) 16:27:34
>>991
990ではないけど
ttp://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.announce&article_id=14136
この記事のことじゃないかな。
要約するとbugzillaに投票できるようになった。ユーザーは10票まで嫌いなバグに投票できる。
下記URLで少なくともvote1件がある記事が降順で表示される
ttp://d.puremagic.com/issues/buglist.cgi?query_format=advanced&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&votes=1&order=bugs.votes,bugs.bug_id
あとadvanced searchページでvote数で絞れるようになった
993デフォルトの名無しさん:2008/11/16(日) 17:47:39
ほう
じゃあコマンドライン引数の中身がutf8じゃないのをお願いしよかな
何に票が集まるのか楽しみ
994デフォルトの名無しさん:2008/11/16(日) 19:13:33
static, renamed, and selective import is alyways public.
これが一番人気か
995デフォルトの名無しさん:2008/11/16(日) 20:02:28
一番不人気の間違いじゃないかとw
996デフォルトの名無しさん:2008/11/17(月) 09:04:04
2位もひでーなー
997デフォルトの名無しさん:2008/11/17(月) 10:32:32
998デフォルトの名無しさん:2008/11/17(月) 10:33:34
999デフォルトの名無しさん:2008/11/17(月) 10:34:42
1000デフォルトの名無しさん:2008/11/17(月) 10:35:47
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。