[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/17 05:50 / Filesize : 212 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

D言語 Part16



1 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 23:00:35 ]
プログラミング言語 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フロントエンド)
ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ)

■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
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の入門講座)

2 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 23:01:10 ]
■過去スレ
Part15 pc11.2ch.net/test/read.cgi/tech/1191582990/
Part14 pc11.2ch.net/test/read.cgi/tech/1184807424/
Part13 pc11.2ch.net/test/read.cgi/tech/1177499924/
Part12 pc11.2ch.net/test/read.cgi/tech/1171037394/
Part11 pc10.2ch.net/test/read.cgi/tech/1165621441/
Part10 pc8.2ch.net/test/read.cgi/tech/1158013550/
Part 9 pc8.2ch.net/test/read.cgi/tech/1146656260/
Part 8 pc8.2ch.net/test/read.cgi/tech/1137068104/
Part 7 pc8.2ch.net/test/read.cgi/tech/1122912733/
Part 6 pc8.2ch.net/test/read.cgi/tech/1109933426/
Part 5 pc5.2ch.net/test/read.cgi/tech/1102785854/
Part 4 pc5.2ch.net/test/read.cgi/tech/1091185216/
Part 3 pc5.2ch.net/test/read.cgi/tech/1079068715/
Part 2 f3.aaacafe.ne.jp/~null/cache/1079280501.html
Part 1 pc5.2ch.net/tech/kako/1003/10036/1003674814.html

3 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 23:01:47 ]
■関連スレ

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

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

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

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

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

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

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

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

"Code of the Nerds" Digital Mars C/C++
pc11.2ch.net/test/read.cgi/tech/1044210976/

4 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 23:20:40 ]
そういえば980超えると一定時間でdat落ちだっけ。
いちおつ

5 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 23:28:41 ]

ちゃんと前スレ冒頭の話を覚えててくれたみたいだな
>>1

6 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 23:34:38 ]
乙ー。

7 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 23:53:15 ]
otsu(std.thread.Thread.getThis[1]);

8 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 00:02:01 ]
class Otsu(int no){
   static void delegate() opCall(){
    return {writefln(">>",no,"乙");};
  }
}

Otsu!(1)()();

9 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 00:41:16 ]
【良いとこ取り】D言語スレ【実用重視】(Part 2)
pc2.2ch.net/test/read.cgi/tech/1070169122/

10 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 02:11:37 ]
ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index-jp.html
ここのdSFMTを系列をインスタンスとするクラスとしてポートしてみたが、なんか物足りないなあ。
Boost::randomみたいな使い勝手を考えていたが……tangoにそんな実装もあった気がするが……
スレッドセーフな擬似乱数生成機って、状態に触るところをsynchronizedでくくればいいのかしら?



11 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 12:41:20 ]
Stdout.formatlnを間に入れるとうまく動くっって
一体どういう理由なんでしょうか。

単にどこで落ちてるか調べてるだけのtest1,test2って
出力してるだけなんですが。

12 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 12:49:32 ]
>>11
よくわからない異常終了の原因が、-Oスイッチによる最適化だったことがある。

13 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 13:03:03 ]
dsssて奴を使ってますが、-g しか使っていません。
ImageListを自作しただけなんですが・・・・・
tango+dflでのソースです。
module imageList;
private import dfl.all;
private import tango.io.Stdout,tango.io.FilePath,tango.sys.win32.Types, tango.sys.win32.UserGdi;
class ImageList
{
HIMAGELIST list;
HANDLE cont;
this(HANDLE cont)
{this.cont = cont;
Stdout.formatln ("test");
this.list = ImageList_Create(16,16, ILC_COLOR32 | ILC_MASK ,0,0);
Stdout.formatln ("test1");
SendMessageW(cont , 4361, 0, cast(int)this.list);
}
public:
void add(char* ifile)
{
short i = 0;
Stdout.formatln ("test2");
HICON icon = ExtractAssociatedIconA(Application.getInstance(), ifile,i);
Stdout.formatln ("test3");
ImageList_ReplaceIcon( this.list ,-1, icon );
Stdout.formatln ("test4");
}
}

14 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 19:27:32 ]
お騒がせしましました。

特に何処もいじってないんですが、
落ちなくなりました・・・・。

15 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 05:29:54 ]
よく分からないけど直ってたっていうのは一番危ないケースだと思いますが。


16 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 06:44:09 ]
経験からするとたいていバグが眠りについた(そしていずれ目を覚ます)ケースが多い。

17 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 12:21:10 ]
よく分からないけど復活しました とか?

18 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 13:11:44 ]
opAddressないのー?

19 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 16:26:40 ]
opStarはある。

20 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 16:50:37 ]
Starて名前はどうなんだ



21 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:43:27 ]
いいんじゃない、Kleene starって用語もあるし(参照外しの*とは関係ないけど)

22 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 19:49:25 ]
toString的なものってないんですかね。

23 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 20:03:31 ]
std.conv.to!(string)

24 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 20:20:11 ]
opAnus

25 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 20:34:20 ]
string opCast

26 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 21:46:17 ]
Tangoにはないんでしょうか

27 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 00:02:48 ]
ttp://www.dsource.org/projects/tango/docs/current/tango.text.convert.Integer.html

28 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 19:16:30 ]
Stdout("{}",Integer.itoa!(char,int)(new char[32], 1)).newline

やっとできました。
これが噂のテンプレートと言う奴ですね・・・
ありがとうございました。

29 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 20:43:05 ]
なんでそう難しく考えるかね。

  toUtf8(123456789);

で、できるよ。

30 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 21:59:17 ]
stableリリースみたいなのはないんすか?
変更履歴でバグフィクスばかりしてて仕事で提案もできないよ



31 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 22:06:22 ]
1.xがstable。バグといっても致命的なバグは数えるほどしかないから大丈夫だと思う。

32 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 00:15:18 ]
そして致命的なバグにぶつかり悩む羽目になる。

33 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 00:22:55 ]
契約プログラミングの雄となるべき言語なのにおかしいよね

34 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 01:11:08 ]
wxWidgetsのD版つかってるひといますか?

35 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 03:00:17 ]
dsssを使っていて、
例えばtxはライブラリ化してあるからわざわざコンパイルしてくれなくてもいい、という時どうやってそれを教えてあげたらいいの?
別に問題になるわけじゃないんだけどなんかやたら無駄がある気がして凄く気分が悪い……。

36 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 03:52:41 ]
>>35
dmd\etc\rebuild\phobos
をテキストエディタで開いて何か思うところはないだろうか?
…俺もよく知らないからここまでしか言えない。

37 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 04:02:41 ]
unittestがonになってるときに定義されるversionとかある?debugでもいいし

38 名前:デフォルトの名無しさん [2007/11/23(金) 19:02:32 ]
根本的にミスってたらすまないんだが

dmd 2.007で
interface hoge{
int test();
}
class fuga:hoge{
int test(){return 5;}
}
void main(){
hoge[] test;
fuga[] test2;
test2.length = 1;
test2[0] = new fuga();
test = cast(hoge[])test2;//明示的にキャストしないとエラー
test[0].test();
}

ってやるとコンパイルは通るが実行時にtest.fugaって表示される。
配列だと継承の意味が無くなるのはかなり困るんだが

39 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 19:05:37 ]
ごめんsage忘れた・・・

40 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 19:26:28 ]
>ってやるとコンパイルは通るが実行時にtest.fugaって表示される。

?



41 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 19:29:06 ]
>>38
根本的に間違ってるよ。

import std.stdio, std.conv;
interface I { }
class C : I { }

void main(string[] args) {
C c = new C;
I i = c;
writeln(cast(void*)c);
writeln(cast(void*)i);

C[] cc = [c];
I[] ii = cast(I[])cc;
writeln(cast(void*)cc[0]);
writeln(cast(void*)ii[0]);

ii = to!(I[])(cc);
writeln(cast(void*)ii[0]);
}

42 名前:41 mailto:sage [2007/11/23(金) 19:35:10 ]
要するに配列のcast()はC++でいうところのreinterpret_cast相当

43 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 19:47:59 ]
サンクス!!!!!!!!!!!!!!!!1111

渡すときにto使ったら実行時エラー消えた!!!!111

マジでありがとう!!!!

44 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 21:02:38 ]
なるほど、オブジェクトの配列は1要素ずつキャストしないといけないのね。

45 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 21:32:11 ]
別にオブジェクトに限らないよ。
例えば、int[]をbyte[]にキャストしたら要素数4倍になる。

void main() {
auto a = [1,2];
writeln(a.length);
writeln((cast(byte[])a).length);
}

46 名前:44 mailto:sage [2007/11/23(金) 23:24:38 ]
>>45
基本データ型や構造体の配列については、C言語でのポインタの扱いと同じなので理解できてます。

47 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:48:54 ]
Python で eclipse + PyDev とか
wxPython とか py2exe とか
色々浮気してみたら
D より Python が好きになってしまった

とりあえず D はしばらく忘れることにします
ごめんなさい

何年後かにはまた皆様にお会い出来ることを
期待してもよいのでしょうか?


48 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:51:54 ]
ノシ

D言語が枯れたころにくるといいよ。
今は黎明期過ぎてexternを駆使しないと実戦投入は辛いだろうし。

49 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 00:17:26 ]
IDEのPoseidon dsource.org/projects/poseidon まだ活動してたんですね。
知らないうちに、入力補助やDdbgにも対応してるみたいです。(以前使ったのは1年以上昔)
 . ドットを入力する際にメンバのリストが表示される。
 メソッド名の後の ( カッコを入力する際、引数の型などが表示される。

10分ほど使って気になった点
 ・既存のソースはPoseidon側で保存しなおさないと、アウトライン表示と入力補助が働かない。
 ・デバッグでブレークポイントを設定する方法がわかりません。(´ω`);

50 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 01:34:07 ]
asm{int 3;}



51 名前:49 mailto:sage [2007/11/24(土) 01:52:48 ]
Ctrlキー押しながら行番号の右側クリックで、ブレークポイントの設定/解除できました。

52 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 02:11:13 ]
>>49
それだけできるようになったのなら
そこそこ使えるのかもしれないなーとおもた

53 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 19:09:07 ]
Cで作ったdllを使う場合ってどうやるんでしょう?
libファイルをimplibで変換したんですが、undefinedが出てしまうんですが。

54 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 19:12:49 ]
マイクロソフトのimplib使ってるならCOFFからOMFに変換する必要がある。

55 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 19:19:07 ]
COMは使えるんだっけ

56 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 19:47:20 ]
つかえるよ

57 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 02:22:46 ]
version (D_Version2) invariant(char)[] X = "ver2";
else char[] X = "ver1";

これがD1でコンパイルできない D_Version2 って意味あるのかな…

58 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 03:12:36 ]
マジかよww

59 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 03:45:10 ]
ここにきてTangoのtoUtf8がtoStringに変更とかすごい今更だがでかい変更だな。
……ちょっとわくわくした。

60 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 06:22:12 ]
コンストラクタの引数ってどうにかタプルで取れないかな



61 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 06:23:03 ]
引数の型リストか。
traitsのParameterTypeTupleにthis渡したくてもどうすればいいかわからん/(^o^)\

62 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 12:51:18 ]
>>60
Class._ctorでおk

63 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 15:23:54 ]
トンクス!
でもthisオーバーロードしてたらどうも動きがうまくない・・・

64 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 16:34:59 ]
>>57
minx(""); でかこむ


65 名前:64 mailto:sage [2007/11/25(日) 16:57:38 ]
あ・・・
mixinだって>をれ

66 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 16:58:33 ]
そういうときこそ、q{}の出番…

って思ったが、v1でq{}つかえねえんだな

67 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 17:43:08 ]
おお
D1とD2の両方に対応できる書き方初めて見た。なるほどね。
それってinvariant()の括弧ありなしもカバーできるの?
今出先なので確認できない

68 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 18:05:39 ]
version(D_Version2) const ClassInvariant = "invariant(){_invariant();}";
else const ClassInvariant = "invariant{_invariant();}";

class C {
private void _invariant(){ assret(false); }
mixin(ClassInvariant);
}

69 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 19:38:49 ]
そうまでコードをわけわかめにしてまで
二つのバージョンに対応する価値はあるのだろうか

70 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 21:32:49 ]
俺なら、モジュールで分けてversionでimportを変えるかな。



71 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:23:32 ]
D2ならCTFEでinvariantをinvariant()に置換してmixinすればいいんじゃね?

72 名前:57 mailto:sage [2007/11/25(日) 22:24:03 ]
>>64,>>70
なるほど…ありがとう。参考にする。
でも、>>69の言うとおりそこまでして分けるくらいならD1対応版とD2対応版の2つを別物として作ったほうがいいような気がするな。
そうなるとやっぱりD_Version2の使いどころがわからん…
そもそもversion(D_Version2)の内容も文法的に正しくないとコンパイルが通らないあたりは問題にならないのかな。

73 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:10:10 ]
v2以前の文法のコンパイラ機能がdmd.exeにまるごと載ってて
versionで切り替わってくれるとかでもない限り、
ほんとに使いどころは無い気がする。
D_Version2ってタダのversion識別子だよね?

74 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 01:15:46 ]
>>73
だよ。
そもそも、V2なってからもかなり変更ある気がするが、気のせいだろうな。うん

75 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:41:32 ]
Version3への布石なことはあきらか。

76 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:52:54 ]
DMDって無償で商用に使っていいコンパイラですか?

77 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 04:48:29 ]
2chでライセンス関係の情報訊いて動ける商用って一体…

78 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 05:26:36 ]
license.txt を嫁


79 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 18:49:52 ]
dsssむじい
budが気楽でいい

80 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 21:34:08 ]
>Phobos is now on dsource
(゚д゚)ポカーン



81 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 21:43:36 ]
それよりも2.008まだー

82 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 21:44:52 ]
dmd2.007だとopengl32.libをちゃんと読んでくれないのはどういうことか

dmd2.000だと大丈夫なのに

83 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:10:44 ]
kokoro ga oreta

84 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:21:31 ]
>>80
ttp://dsource.org/projects/phobos
ttp://tinyurl.com/2h4tuj
なんだこれとうとう放棄したのか?w
ユーザがPhobosを開発できるなら文字コード周りを何とか・・・

85 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:22:53 ]
じゃあこれで心置きなくTangoに移れそうだね

86 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 00:53:14 ]
伝説のIDEができるまでにこけそうな勢いだなこりゃ

87 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 00:56:57 ]
ここのみんなで日本語化しちゃおうか

88 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 01:21:29 ]
>>86
>>49

89 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 02:26:37 ]
>>87
やりたいんだがなあ

90 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:03:57 ]
NewsGroup盛り上がってるな
直前の流れは知らないんだがTangoとPhobosを統合するのかな?
「両方のコーディングスタイルの違いはどうするの?」とか言ってるし
あとまだ運用がよくわからないから
「誰が全体の設計の管理を受け持つの?」とか話しているようだ



91 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:37:11 ]
> 「誰が全体の設計の管理を受け持つの?」

今までのTangoの人じゃ駄目なの?

92 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:26:33 ]
TangoってDっぽくないんだよなあ。そこがあまり好きになれない。

93 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:27:48 ]
俺に十分な時間があればもっと素晴らしいライブラリ作って見せるんだが

94 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:03:28 ]
俺も俺も

ニートでやってくれる人いないのかな?

95 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:54:31 ]
>>94
よんだ?
っと冗談はおいといて、スレようにレンタルのWikiでも取る?

96 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:11:20 ]
既にある奴で足りてるだろ。
情報が分散するだけだから何個もいらんよ

97 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:17:58 ]
それもそうか。

98 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:05:29 ]
つまりboostがやってるみたいに新規ライブラリを受け付けて
acceptしたりrejectしたりする機構があればいいのか
はてなスターが積み上がる光景が見えたが
母体が2chじゃ投票制にしたら破綻するかなw

99 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:08:15 ]
>>92
俺はconduitの概念がしっくりこないんだよね
ようはstreamなのか?
だったらstreamでいいだろ条項とか思っちゃって

100 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:43:06 ]
>>98
創始者のカリスマ性によると思う



101 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:36:08 ]
static foreachまだかなあ
それとCTFEでForeachRangeが使えないのを早く直して欲しい

102 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:38:19 ]
>>99
streamというよりstreambufのような感じなんじゃないかな。
streamはstreamで別にあるし…

103 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 13:06:35 ]
Phobosのtrunkが熱すぎる件について
std.functional
std.algorithm
その他もろもろ

104 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 13:39:35 ]
まじかよwww

105 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 13:44:26 ]
>>103
ちょ、これから落としてくるw
2.0専用? 1系列でも使えると嬉しいんだが……。

106 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 13:45:07 ]
Phobosはじまったな

107 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 13:46:43 ]
>>103
見たとこあんまり面白い変更無いような…。

108 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:37:13 ]
1.024/2.008

109 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:57:50 ]
バグフィックスとphobosの拡張がメインか。

typeof(return)とか実際使う場面なさそうだし

110 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 18:55:22 ]
Assertion failure: 't->deco' on line 608 in file 'mtype.c'

abnormal program termination
コンパイラバグってるな。@2.008



111 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 22:57:41 ]
>>36ってdsss.confあたりから設定できない?
budだと-Xあたり? が似たようなオプションになってるっぽいんだけども。

112 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 01:04:03 ]
なんか今回のバージョンアップ微妙に反応少ないけど
Added const and invariant to IsExpressions
これはなんか嬉しい。
あと、
Added const/invariant structs, classes and interfaces.
これが気になっている。何に使えるんだろう?

113 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 01:07:19 ]
budだと
version(build) pragma(nolink);
でobj作らないようにして
version(build) pragma(lib, "tx.lib");
などとする

114 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 07:34:05 ]
wxDでかすぎwwwwwww
わなDのテストやってみたら3.12MB^q^
これは・・・

115 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 09:12:21 ]
>>112
おれも気になった。
迷走って言葉が頭をよぎった

116 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:27:53 ]
たしか、constメンバってstaticに配置されるんだよな?

117 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:47:51 ]
structとclassでは使い道が思い浮かばんけど、
interfaceなら使いどころもあるんじゃなかろうか。

const interface ICountable { size_t count(); }

みたいな。

118 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:55:18 ]
インターフェースって頭にIつけたほうがいいの?

119 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 18:24:38 ]
MSハンガリアンだよね。頭にIつけるの。
でも、Iつけてる人は多いねえ。

120 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 18:48:41 ]
俺は、インターフェイス名と同名でインターフェイスの標準の実装を
作りたくなることが結構あるから、名前重ならないようにIつけてる。



121 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:04:36 ]
同名のプロパティ作りたいからプライベート変数の尻にアンダースコアつけてるけど、似たようなもんか。

122 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:49:31 ]
俺もそのへんなやみつつハンガリアン的とか尻_とかしてるけど、
一般的になにがいいのかねぇ

123 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:06:51 ]
メンバーならm

124 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:21:16 ]
個人的に@インスタンス変数は好き

125 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:59:55 ]
Dじゃ@は使えないからなぁ。
VC++だと$使えたりする。使わんけど。

126 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:23:22 ]
const変数にコンパイル時に決定されない値を入れられるんだけど、
これって仕様に適ってるの?

const l = readln;

127 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 07:18:24 ]
digital marsのサイトからの引用だけど
int x = 3;
const int *p = &x;
*p = 4; // error, read-only view

const int *q = &x;
int z = *q; // z is set to 3
x = 5; // ok
int y = *q; // y is set to 5

ってなコードがある、仕様だと思う。
Cでもローカルのconst変数宣言時にコンパイル時に決定されない値入れれるし、
その辺の仕様を引き継いでるんじゃない?

128 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 16:24:13 ]
>>127
そっかー
phobos見てても本来ならfinal使うべきところでconstって書いてたりするから仕方ないのかな。

129 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 17:18:10 ]
数カ月おきにやる気を補充した所で細かい仕様が変わってるから困る

130 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:09:58 ]
へ?finalあるのにconstがその仕様なんだw
そのうちreadonlyとかできたりして



131 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:16:20 ]
initonlyマダァ-? (・∀・ )っ/凵⌒☆チンチン

132 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:39:36 ]
constって型がconst型になるfinalだろ?

133 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:49:36 ]
D1.0のconstはコンパイルタイム定数だったよなあ
D2.0のconstはそれプラスreadonlyなのかな?とか漠然と思ったまま放置してた俺
D2.0になってconstがどういう意味なのかがわかりにくくない?

134 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:18:47 ]
>>133
おれもそう思う。>>132の解釈でいいのかな?
あとinvariant型とconst型の使い分けがよくわからん。
関数の引数にconst型を使ったとして、「俺は書き換えない」と宣言しても、その関数を実行しているときに
誰かに書き換えられちゃったら読み込んだりとかした時に予期しないエラー起こさない?マルチスレッドのときとか。
関数の戻り値は「書き換えるな」という意味でconst型でいいような気もするけど。

135 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:30:14 ]
www.kmonos.net/alang/d/const.html
ここ読んでから書き込もうよ。

136 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:40:22 ]
昔はconst変数をコンパイル時定数以外で初期化しようとしたらエラーなってた気がするんだが

137 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:59:27 ]
>>135 を改めて読み直してみたのだが
C++のconstにはコンパイル時定数とreadonlyの2つの意味があって,
C++とD1.0のコンパイル時定数としてのconstはD2.0ではinvariantが請け負って,
C++のreadonlyのconstをD2.0ではconstが請け負うってことかな
/* D2.0
コンパイル時定数 => invariant
readonly => const
*/

138 名前:127 mailto:sage [2007/12/01(土) 01:06:50 ]
>>135
トン
>>126
ごめん、これC++の場合のコードですね、>>127のレスは忘れてください。
そして7時の俺、目を覚ませ。

139 名前:134 mailto:sage [2007/12/01(土) 01:07:51 ]
>>135そこは読んだよ。結構前だけど。
それでなお、具体的にはconst型とinvariant型の引数の使い分けがわからん。
たとえばPhobosのstd.string.splitの引数がconst型じゃないのは何でだ?
その辺の明確な指針がほしい。

140 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 04:59:17 ]
void func(D)(in D dg) {
dg();
}
void main() {
func({printf("test");});
}
//(7): Error: cannot implicitly convert expression (__dgliteral1) of type void delegate() to const void delegate()
あれ?私何か間違えたましたか><
inにconstが入るからダメっぽいんだけどinってこういう使い方じゃないの?



141 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 05:24:21 ]
どうして readonly なのに書き込めるのはなぜ?


142 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 08:06:15 ]
1.020でコンパイルできてたSHA512のライブラリが2.007でコンパイルしたらフリーズした
semantic2で止まってるらしいけどsemantic2が何かわからね

143 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 13:41:05 ]
>>139
splitは文字列のスライスの配列を返すから、
もとの文字列が変更されてしまうと、結果がおかしくなる。

144 名前:143 mailto:sage [2007/12/01(土) 13:49:14 ]
コードであらわすとこんな感じ。

import std.stdio, std.string;

void main() {
auto s = "aaa bbb ccc".dup;
auto a = split(cast(invariant)s); // 危険なキャスト
writeln(a.join("-"));
s[0..5] = "ddddd";
writeln(a.join("-"));
}

145 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 13:52:09 ]
それは危険なのはキャストであってidupを使えば解決ってことにはならないの?

146 名前:デフォルトの名無しさん [2007/12/01(土) 13:59:59 ]
>>126たしかに
www.kmonos.net/alang/d/final-const-invariant.html
>const 宣言は、以下の違いを除いて、 invariant とほぼ同じです:
>const宣言された変数を通してデータを書き換えることはできないが、 同じデータを参照する別の箇所がデータを書き換えることは あるかもしれない
>const宣言された変数の型は、const
とあるから、この文章から判断するとconstもinvariantと同様にコンパイル時決定変数なはず。
だからその式が通るならおかしいと思う。

147 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 14:07:04 ]
>>143-145
もしsplitの引数の型がin char[]だったら、普通に
auto a = split(s);
とできてしまう。
invariant(char)[]だからこそ、危険なキャストのような無茶をしない限り安全。

と言ったほうが分かりやすいかな。

148 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 14:10:43 ]
>>142
semantic2はsemanticが全て呼び出された後呼び出されるフェーズ。
詳しくはソース嫁

149 名前:デフォルトの名無しさん [2007/12/01(土) 14:21:36 ]
>>141
>const宣言された変数を通してデータを書き換えることはできないが、 同じデータを参照する別の箇所がデータを書き換えることは あるかもしれない
constからはreadonlyだから書き込めない。だけど、他のconstでない参照からは書き込める。

150 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 14:36:38 ]
今までinvariant,const,finalの違いや使い道が分からなかったんだけど、理解できたかも。
まとめると
invariant->コンパイル時定数,書き換え不可
const->readonly,他の参照から書き換え可能
final->初期化以降は書き換え不可,invariantやconstと違ってfinalな変数の指す値は書き換え可能
あれ、じゃあ"初期化以降は書き換え不可"かつ"指している値も書き換え不可"はどう表現するんだ?



151 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 14:40:37 ]
>>150
final constでok

152 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 14:43:34 ]
>>151
サンクス 自分のレベルの低さを痛感したorz

153 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 14:47:53 ]
>>150
こういうことかな?
import std.stdio;
void main(){
  int a = 1;
  int b = 2;
  final const int* p = &a;
  *p = 10;//a.d(8): Error: *p is not mutable
  p = &b;//a.d(9): variable a.main.p cannot modify const/invariant variable 'p'
}


154 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 14:48:43 ]
あれ被ったか

155 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 14:52:17 ]
final const(int)* p;と書くべき。

156 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 15:10:50 ]
普通にconst int* p = &a;でいいんじゃないの?

157 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 16:42:51 ]
>>156
多分実質はそれでもいいけど、>>146でも言ってるように仕様としてはコンパイル時未決定でもいいのか怪しいし、
finalみたいに"コンストラクタ内では何度も書き換えられる"性質を持ったものを考えてた。

ついでに初歩的なことですまんが、
final const int* p;

final const(int)* p;
の違いって?


158 名前:134 mailto:sage [2007/12/01(土) 17:12:18 ]
>>143,>>147
なるほど。確かにstd.string.splitだとinvariant型のほうがいい気がするな。
もしconst型だったら、
> 必要なのは、データを絶対に書き換えないという保証のもとにモジュールから関数にデータを読み取らせるプロトコルです。
を満たすための条件(戻り値のデータに書き換えが起こらない条件)が関数の定義からだけでは読み取れず、
ドキュメントを参照して注意しなければならない、という面倒なことが起こるからな。

じゃあ、std.string.countならどうだろう?関数の実引数にしてから関数が終了するまでの間だけ
他から書き換えられないように注意すれば引数がconst型でもいいような気がするんだけど。
これならドキュメント見なくてもconst型の使い方から終了まで書き換えちゃいけないということは判断可能だし、
戻り値がuintだから関数が終了した後まで面倒を見なくてもいい。
char[]型を実引数にするために.idupによる無駄なコピーもしなくていいし、cast(invariant)みたいな無茶なキャストも使わないですむ。

159 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 17:25:31 ]
>>157
たぶん、こうだと思うよ。

const(int*) p = &a;  //p「int*」が書き換え禁止
int x = *p; //○
*p = 10; //○
p++; //×

const(int)* p = &a;  //pの指し示す先の「int」が書き換え禁止
int x = *p; //○
*p = 10; //×
p++; //○

final const int* p = &a;  //p「int*」書き換え禁止、かつpは初期化後は固定。(冗長?)
int x = *p; //○
*p = 10; //○
p++; //×

final const(int)* p = &a;  //pの指し示す先の「int」が書き換え禁止、かつpは初期化後は固定。
int x = *p; //○
*p = 10; //×
p++; //×

160 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 17:47:53 ]
>>159 なるほど
ところでいちいち.dupするの面倒なので
mutable to immutable(const/invariant) : deep copy
immutable to immutable(const/invariant) : shallow copy
となるのはどうだろう?



161 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 17:50:00 ]
>>159
const(int*) は const(const(int)*) と同じ。
const Type var; は final const(Type) var; と同じ。

ただ、2.008ではfinal記憶クラスが正しく機能していない。

162 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 18:34:50 ]
記憶クラス周りは結構複雑だなぁ。
invariantメンバ関数は、コンパイル時に定数に置き換えられそうだな。
使いこなせれば強力だけど、そこまでが大変だぁ。

163 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:01:19 ]
ん?invariant void foo()で実現できる事って何があるんだろう?

164 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:05:15 ]
>>161
なるほど。
www.kmonos.net/alang/d/final-const-invariant.htmlも読み直して理解できたかも。
「const(int)* p」は「(const(int))* p」って意味で、pの指す先は書き換え不可だけど、p自体はconstじゃなくて書き換え可能。
「const(int*) p」は「const(const(int)*) p」って意味で、pも書き換え不可になる訳か。
constの推移性って便利だけど、理解するまでは複雑だな。どこからconstなのか少しわかりにくい。
特に「const int* p」はどこにconstがかかるのか分かりにくいね。

165 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:17:22 ]
>>162-163
を見て気になったけど、

>invariant メンバ関数では、 this参照経由で参照される全てのデータがinvariantであることが保証されます。
struct S
{
int x;

invariant void foo()
{
x = 4; // エラー。x は invariant
this.x = 4; // エラー。x は invariant
}
}

これはつまりS.xはコンパイル時決定変数?
そうなるとSのメンバ変数はすべてコンパイル時決定って意味になるけど、それは使い道がない気がする...

166 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:19:43 ]
>>165
invariantでないメンバ関数を追加すればいいじゃない。

167 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:23:00 ]
const int* p; って宣言で、constはストレージクラスのはずなのに、
typeof(const int*) が、typeof(const(int*)) と同じように働くのが気持ち悪い。

168 名前:165 mailto:sage [2007/12/01(土) 19:34:50 ]
えーと、
たとえばSを
struct S{
  int x;
  int y;
  invariant void foo(){
    x = 4; //エラー、xはinvariant
  }
  void var(){
    x = 4; //これはNG?
    y = 5; //これはOK?
  }
}
とした場合どうなる?
xはfooでinvariantとして扱われているから、varで書き換えたら怒らるんじゃないかと心配してるんだけど。
で、yはfooからは参照されてないからvarからは普通に書き換え可能?
テストすれば分かることを聞いてすまん。時間あったらテストするんだけど。

169 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:41:32 ]
時間あるじゃんw

170 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:43:55 ]
>>168
invariantメンバ関数はinvariantな型に対してしか呼び出せないから、
fooを呼び出せる場合は、varは呼び出せない。



171 名前:147 mailto:sage [2007/12/01(土) 19:49:48 ]
>>158
countについては、俺もconstでいいと思う。

172 名前:165 mailto:sage [2007/12/01(土) 19:54:15 ]
>>170
"invariantな型に対してしか呼び出せない"というのはどういうこと?
invariant void foo()があることでSのメンバ変数がすべてinvariantになるという認識は間違いでしょうか。

173 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 20:02:37 ]
static関数はインスタンスのメンバ変数にアクセスできないのと同じ理屈を書いてるだけでしょ。
invariantはコンパイル時に解決できなければならないってのを意識すれば分かりやすいかな。

174 名前:165 mailto:sage [2007/12/01(土) 20:09:08 ]
>>173
つまり
S s1;
invariant S s2;
s1.foo(); //呼び出せない
s2.foo(); //呼び出せる
ということ?これなら納得できる。


175 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 20:15:25 ]
俺の説明が悪かったのかな?時間あるんだから、テストしようね。

176 名前:165 mailto:sage [2007/12/01(土) 20:18:42 ]
そうですね。すみません。
本当は今パソコンつけてる暇無い時期なんですけどね。これだけインターネットしてたら確かに同じだな;


177 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 20:33:37 ]
つまり、

invariant変数はコンパイル時に決定され、ROMに配置される可能性があり、ポインタをとってはならない
invariant型の変数は実行時に決定でき、書き換えられることはないと保障される
invariantメンバ関数はコンパイル時に解決できる
const変数は実行時に決定できる
const型の変数は実行時に決定でき、書き換えてはならない
constメンバ関数は実行時に解決される
static変数はコンパイル時に決定され、実行時に変更することができ、スコープによらずデータが保持される

こうか?

178 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:06:23 ]
>>177
> invariantメンバ関数はコンパイル時に解決できる
これが仕様呼んでる限りだとよくわからん。
普通にモジュールスコープにある関数とか呼べるし

179 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:26:59 ]
invariantメンバ関数から参照できるのは、invariantなメンバのみってことでは。

180 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:29:38 ]
いかん。誤解をまねく。

invariantメンバ関数から参照できるメンバは、invariantのみ。

のほうが正しい。



181 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:36:46 ]
invariantメンバ関数からthisポインタを通じて参照されるオブジェクトはinvariantと仮定される、

じゃないか?

182 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:44:55 ]
このエラーはいったい?
test.d(3): statement expected to be { }, not int

struct S
{ int x;
invariant int y;
}

183 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:46:12 ]
ここらへん明日整理してみるか。

184 名前:182 mailto:sage [2007/12/01(土) 22:02:29 ]
公式サイトの方しかDL2.0のコンパイラはないのね

185 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 01:32:52 ]
ttp://d.hatena.ne.jp/haru-s/20070622/1182484497

186 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 02:18:43 ]
いまさらなんだけど
alias char[] string;で
invariant(string)ってした方がきもちよくねconst stringとか。
今char[]とstringを使い分けなきゃならんのがギモヂワルイ

187 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 03:33:33 ]
>>186 確かに気持ち悪い
でも invariant(string) s; が invariant(char[]) s; になって
今の invariant(char)[] じゃなくなるから意味が変わっちゃうね
とはいえ他の手はこれくらいしかないんじゃなかろうか
alias char[] string;
alias const(char)[] cstring;
alias invariant(char)[] istring;

188 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 04:01:34 ]
alias invariant(char) ichar;
とかをたくさんつくればいいのかな!

189 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 08:23:05 ]
中途半端にstringなんてaliasを標準に入れるから面倒になった悪寒
いっそstring使わない方向でいこうかな・・・

190 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 10:04:36 ]
↑で
final const invariant いろいろ議論していた方々ありがとうございます
おいらも理解がふかまりました



191 名前:デフォルトの名無しさん [2007/12/02(日) 10:29:21 ]
>>185
なるほど、メンバ関数になるとほんと複雑だな。

192 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 23:07:48 ]
>>185
>mutable/const のメンバ関数あるいはオブジェクトを経由すると invariant メンバ関数を呼び出せない

これはなんでなんだぜ?

193 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 23:36:08 ]
invariant メンバ関数から const メンバ関数を呼び出せないのはわかるが、
mutable から const や invariant を呼び出せないのはよく分からん。
そもそも変数なら const は invariant に昇格できるんじゃなかったっけか?

194 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:24:57 ]
mutableからconstは呼び出せると思うが

195 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 02:10:47 ]
ごめん、mutable から invariant のメンバ関数だけだった。


196 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 03:37:12 ]
mutable/constからinvariantを呼び出せない理由は
コンパイル時/実行時の違いが関係ありそうなんだけど
よく分からないんだ・・・

197 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 07:44:56 ]
invariant→const : ok
mutable→const : ok
あとは全部だめ

198 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 09:51:48 ]
constさいきょう!

199 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 21:41:55 ]
>>196
invariantメンバ関数はinvariant型のインスタンスに対してしか呼び出せないんだから、
mutableメンバ関数の呼び出せるインスタンスに対しては絶対に呼び出せないし、
constメンバ関数の呼び出せるインスタンスは、mutable型かconst型だけで、
invariantメンバ関数が必ずしも呼び出せるとは限らない。

200 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 21:47:39 ]
            │mutable型│const型│invariant型
mutableメンバ関数 │   ○   │  ×  │  ×
constメンバ関数  │   ○   │  ○  │  ○
invariantメンバ関数│   ×   │  ×  │  ○

こういうことだろ?



201 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 21:52:01 ]
戻り値がmutableで、関数がconstの場合はどうすればいいんだろう?

202 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 21:57:59 ]
何も悩む必要はないと思うけど。

class C {
const C dup() { return new C; }
}

void main(){
auto c_const = new const(C);
auto c_mutable = c_const.dup;
writeln(typeid(typeof(c_const)));
writeln(typeid(typeof(c_mutable)));
}

203 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 22:56:41 ]
使い分けはこうか
class A {
 const int a() { return 1; }
 cosnt(int) b() { return 2; }
 const const(int) c() { return 3; }
}

204 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:22:31 ]
え、もしかして
const int i;と
const(int) i;ってかなり意味違う?

205 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:46:55 ]
うあ、おれもいま初めてしった。

C++でいう
class C {
int foo() const;
};
ってどうやるんだろうとずっと思ってた

206 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:50:29 ]
これかなり問題ある気がするんだど、どうだろう。

void main(){
invariant(int) i;
auto p = &i;
assert(is(typeof(p) == invariant(int)*));
i = 2;
writeln(*p); // 2
i = 3;
writeln(*p); // 3
}

pの指す先はinvariantのはずなのに、合法的なコードでかわってしまうという

207 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:53:15 ]
>>205
>>185にはそれのことが書いてあるんだわ

208 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:55:50 ]
>>206
www.kmonos.net/alang/d/final-const-invariant.html
処理系は、 実装の際にinvariant宣言の初期化子で
invariantのインスタンスを置き換えても構いません。
このため、invariant変数のアドレスを取得するのは不正となります:
invariant int i = 3;
invariant* p = &i; // error, cannot take address of invariant

とのことなので &i が不正な処理なのです
エラーにならないのならそういうバグかもしれない

209 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 00:02:08 ]
やばい、今一理解できない orz

import std.stdio;

public class S
{
    int mutable_num = 1;
    const(int) const_num = 20;
    const int const_num2 = 21;
    invariant(int) invariant_num = 30;
    invariant int invariant_num2 = 31;
}

void main()
{
    S s = new S();
    writeln("mutable_num: ", s.mutable_num);
    writeln("const_num: ", s.const_num);
    writeln("const_num2: ", s.const_num2);
    writeln("invariant_num: ", s.invariant_num);
    writeln("invariant_num2: ", s.invariant_num2);
}

-- output ---
mutable_num: 1
const_num: 20
const_num2: 21
invariant_num: 30
invariant_num2: 4296960

210 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 00:03:25 ]
>>208
それはinvariant記憶域クラスの変数の話で、
invariant型のauto変数のポインタの話には触れてないよね。
invariant int i; と invariant(int) i; は一応ちがうものだと思うんだけど。



211 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 00:11:29 ]
型がinvariantなのと変数がinvariantっていう違い?

212 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 00:13:26 ]
>>211
そう。
現在の文法では、invariant型のデータを保持するミュータブルな変数が許されてる、様な気がする。

213 名前:208 mailto:sage [2007/12/04(火) 00:27:32 ]
>>210
あ そうか
型と記憶域クラスで違うんだね・・・

214 名前:205 mailto:sage [2007/12/04(火) 07:16:49 ]
>>207
ttp://d.hatena.ne.jp/haru-s/20071203/1196695054
まとめきた
超さんくす

215 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 14:22:33 ]
const int i;
const(int) i;
が違うのは分かるけど。後者は使い道はないよね?

216 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 15:31:26 ]
関数の引数に使えたりしない?
invariantでもmutableでも受け取れる・・・みたいな

217 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:02:39 ]
メンバだと invariant int も const int もクラス変数に取られるみたいだけど
invariant int がインスタンス変数としてアクセスするとどっかのアドレス返すのは何故だろう?
constはメモリを使い、invariantは使わないという差なら、エラーにすりゃいいのに。

218 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:09:51 ]
>>217
どういうこと?>>209のこれのこと?
invariant_num: 30
invariant_num2: 4296960

219 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:14:43 ]
それそれ。仕様上、メモリにとられない=直値に置き換え?みたいだし、何が取れてるんだろうと。

220 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:31:52 ]
それは、ただのバグじゃねえの?
俺の環境(2.008/windows)だと

mutable_num: 1
const_num: 20
const_num2: 21
invariant_num: 30
invariant_num2: 31

となったが。



221 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:51:59 ]
あらら

222 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 22:02:36 ]
2.007と008との間で対応入ってるみたいね。
const型がコンストラクタで初期化できなくなってるし、
今は使いこなそうと思わないほうがいいのかも。

223 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 23:01:33 ]
じゃあ2.009待つか…

マダァ-? (・∀・ )っ/凵⌒☆チンチン

224 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 16:31:44 ]
今月発売予定 (もう出てる?) の本
Learn to Tango with D
apress.com/book/view/9781590599600


225 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 16:43:47 ]
>>224 おお・・・すげえ

226 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 16:44:52 ]
>>224
Amazon.co.jpによると発売日2008/1/28になってるよ。
ttp://www.amazon.co.jp/Learn-Tango-D-Kris-Bell/dp/1590599608/ref=sr_1_1?ie=UTF8&s=english-books&qid=1196840397&sr=8-1


227 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 17:15:50 ]
どうせ3ヶ月くらいで古くなるんでしょ

228 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 17:17:55 ]
Tangoまだ1.0も出てないのにw

229 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 20:43:43 ]
枯れてwxWidgetsが対応したら、気軽にクライアントに仕えるのにな

230 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 20:59:21 ]
Tango・・Phobosと仲良くしてほしいなぁ



231 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 17:41:03 ]
Ultimate Tangobos まぁ〜だぁ〜?

232 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 17:49:48 ]
なんかStream.readf壊れてる気がするんだけど…

233 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 21:46:57 ]
アルティメット・タンコボキバジとな

234 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 23:22:07 ]
タンゴボスとガバスはどっちが偉いんですか?

235 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 03:28:13 ]
丹古母鬼馬二
ってなんだこのトンチンカンな名前。
具ぐれ化す。並の名前だなぁ。初めてきいたよ。

236 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 11:42:36 ]
ja.wikipedia.org/wiki/%E4%B8%B9%E5%8F%A4%E6%AF%8D%E9%AC%BC%E9%A6%AC%E4%BA%8C
今日日、小学生でもこんな稚拙な文章は書かないぞw

237 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 15:41:16 ]
void hoge(ref const real r) {
}
void main() {
real r;
hoge(r);
}
dmd止まる\(^o^)/

238 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 19:02:40 ]
>>237
その類のバグは既に報告されている気がする

239 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 14:07:52 ]
phobosのrepositoryが全然変化ないなあ

240 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 21:35:10 ]
tangoでFIFOが高速に扱えるcollectionってないのかな?
最初ListSeqがそれかと思ったがこれはなんかLIFOのみ高速に扱えるみたいで…
なんかC++のSTLのlistとかに比べると使い勝手悪い感じだなぁ…



241 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 09:34:19 ]
phobosのtrunkに単方向リストSList(T)が追加される兆しがあるよ
まだprivateらしいけど

242 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 13:31:24 ]
SListは最新版DMDに入ってるじゃん。

243 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 21:20:38 ]
あれ・・・編集したってだけか

244 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 12:04:30 ]
Dがでてきて結構たつのに未だにコンテナすら整備されてないんだな
STLを置き換えられる程度には用意して欲しいもんだ

245 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 12:32:34 ]
壮大なDTLの計画が現在進行中だが、
あまりにも壮大すぎて全く完成していないのが現状。

246 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 12:44:52 ]
ここでなんか寄せ集めのライブラリ作ろうぜ
必要なときにdファイル落としてプロジェクトに組み込む系のやつ

247 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 13:12:01 ]
DTLのプロジェクトってもう動いてないんじゃ・・・
スマートポインタはGCあるからいらないとして(ほんとに?)
主要なコンテナとアルゴリズムくらいでいいや
あわよくばストリーム系まであれば万万歳

248 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 13:15:03 ]
tangoでいいじゃん

249 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 16:08:22 ]
イテレータクラスのかわりにopApplyがあると思ってたんだけどopApply自体あんまり融通利かないんだね

250 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 19:01:08 ]
Javaを参考にAPIのインタフェースだけ揃えりゃライブラリも揃えやすいはずだけどね。
D自体、言語を枯らそうという気が皆無だから、ライブラリなんて作れないってのもあるかも



251 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 21:01:16 ]
>>248
Phobos上でやりたいよん

252 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 21:08:34 ]
tangobosでおk

253 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 22:29:53 ]
Phobosって、設計とか何も考えずに、このぐらいの機能はいるだろって感覚だけで作っていった印象があるべ。
もうちょっとスマート(に拡張できる)設計をしてくれればなあ。

254 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 22:52:54 ]
まあ、そのためのtangoだろう

255 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 00:20:40 ]
Dってどのへんが支持してるの?

256 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 00:28:32 ]
このスレ

257 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 01:55:59 ]
ttp://www.tiobe.com/index.htm?tiobe_index
なかなか10位以上にはなれないが頑張ってるよ

258 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 04:33:37 ]
(ダリオ戸田の声で)辞書猫の Tango だっす!

259 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:57:48 ]
>>257
ほんとだ
もっとがんばれ。超がんばれ。

260 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:10:51 ]
というかperlってpythonより下なんだ・・・早いなぁ



261 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:35:15 ]
>>257
Lua上がりすぎw

262 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:39:29 ]
1%未満から1.6%に増えるとか大健闘だな
やっぱいつまで経っても正式版が出ないから敬遠する人間が多かったんだな

263 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 11:54:51 ]
Dより上になんか壁を感じるw
メジャーの壁というか。「ここからが本当の地獄だ……!」みたいな。

264 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 12:25:17 ]
最強のライブラリと伝説のIDEが現れればC++なんて目じゃないよ。

265 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 12:42:36 ]
俺もpythonの位置に違和感があるなあ

266 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 16:49:10 ]
>>264
そりゃすべての言語にいえるんじゃね?

267 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 16:55:24 ]
いずれ日本語を正しく扱うクラス要るし早めに作っとこうぜ

268 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:13:51 ]
Phobosってcharsetをサポートしてないのな。
windowsのコードページ変換のみサポートしてる感じか?

269 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 20:42:09 ]
MangoにICUのD-bindingあった気がするんだが

270 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:29:13 ]
こういう特殊化できるようにならないかな。

void func(T : function)(T f) { f(); }



271 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:57:02 ]
現状だと、aliasで受けるしかできないんだっけ。

272 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 01:48:32 ]
どんなに仕様や実装が素晴らしくても>>264が駄目だと結局駄目なんだよね・・・

273 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 14:05:36 ]
その言い回しだと>>264が駄目な人間みたいじゃないかw

274 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 14:18:51 ]
ライブラリはともかく、IDEに頼るのは駄目ジャマイカ?

275 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 14:21:06 ]
仕様や実装が固まらんかぎり良いIDEは出てこないんじゃね?

276 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 18:11:41 ]
いつのまにかクラスをtypedefできるようになってた・・・orz
ついにこう書けるんだね・・・! つーかいつできるようになったんですか><
//class HogeError : Error {
// this(string msg) {
// super(msg);
// }
//}
typedef Error HogeError;

277 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 19:50:45 ]
継承関係はどうなるの?
何か派生だとしっくりこないし、同じ実装を持つ他人になる?

278 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 21:02:38 ]
全く同じClassInfoを持つけど、オーバーロードでは区別され、
typedefもとの型には暗黙変換できる型
になるみたい。

279 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 21:32:36 ]
説明だけみるとなんかダウンキャストできなさそうだな。
出来なくてもいいけど。

280 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 09:04:31 ]
同じClassInfoをもつのに、ダウンキャストできないってことある?



281 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 11:09:41 ]
D2.008 Exceptionから、fileとlineがきえた えぇぇ・・・

282 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 11:56:33 ]
>>281
外部にリリースするものとして、ファイル名だの行番号だのが入っているバイナリってどうなの?
と思っていたから別にそれでいいと思う。
でもデバッグ時にはほしい情報だよね。

283 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 12:13:31 ]
VistaSP1のdfrgntfs.exeなんかはもろにソースファイルのパスとかが入ってる 
評価版だからだと思うけど

284 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 12:14:30 ]
>>282
伝説のIDEが現れれば例外発生元を突き止めてビジュアルに表示してくれるよ!

285 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 13:54:31 ]
罠D

286 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:57:09 ]
MSがVisualStudioで出せば・・・
万が一にもありえんか

287 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:55:09 ]
MSがVisualStudioで出すことになれば仕様策定の遅さに苛立って
独自拡張を続け、ライブラリもMS独自のものが出来上がるだろう。

そう思うと当初のJavaと同じ問題抱えているな・・・

288 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:02:25 ]
MS Visual D# ...

それはそれでよさそうな気がしないでもない

289 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:10:23 ]
ネイティブバイナリ吐かないDなんてC#でいいじゃん・・・

290 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:13:12 ]
それならVisual D/CLIで…



291 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 23:15:56 ]
>>290 /CLI の部分はいらねえー

292 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 23:23:02 ]
>>274
IDEが何やってるのか分かる限りは、むしろIDEもライブラリも「使うべき」だと思う。
とeclipseのリファクタリング機能に味を占めたヘタレの俺が言ってみる。
強い型付けとかコンパイルの早さとか、IDEがあると生きてくる言語だと思うから余計勿体ないのよね。


しかし、年の瀬も押し迫ってきたな……
去年の1.0への期待でwktkしながら年を越したっけなぁ。
来年のDは果たしてどこへ向かうことやら。

正月にはお空の火星に向かってみんなでお祈りだ。

293 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:40:03 ]
1月1日にv1.001が出たんだっけ?
あれ?

294 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:57:25 ]
じゃあきっと、あと2週間で3.001がでるな。

295 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 19:16:59 ]
もうそんなになるっけ??

296 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 19:22:03 ]
0.99リリース

ついに1.0が来るぞー!

0.100リリース

(゚д゚)

は2004年頃だったっけ?

297 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 19:52:33 ]
次のバージョンうpまだー

298 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 23:00:24 ]
static foreachまだかお?

299 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 23:20:22 ]
import std.metastrings;
pragma(msg, Format!("%s%s", 1, 2));

%sが直に出力されちゃうんだけど、使い方間違ってる?

300 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 23:33:08 ]
>>299 2.008ではうまく動いてないように見えるなあ



301 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 01:07:23 ]
>>299
semanticが呼ばれてないに一票

302 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 17:01:27 ]
MC++DのアンドレイがThe D Programming Languageって本書くよってさ
ttp://erdani.org/
Andrei is working on "The D Programming Language" book, slated to hit the shelves in October 2008.
His interest in the D programming language stems from Andrei's active participation in the design of D 2.0
as a close collaborator of D's creator, Walter Bright.

あー 先週京都に来てたんだ
Andrei will present the paper "Graph-Based Learning for Phonetic Classification" co-authored
with Katrin Kirchhoff at The 2007 IEEE Automatic Speech Recognition and Understanding (ASRU)
Workshop, December 9-13, Kyoto, Japan.

303 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:26:37 ]
これは期待

304 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:58:32 ]
役に立つとか立たないとかじゃなく、好きな小説家の新作みたいに楽しみなんだけど、
これはちょっと妙な期待をしすぎかもしれんw

305 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:04:28 ]
日本語訳が出る頃には半分くらいコンパイル通らなかったりして

そもそも日本語訳が出るかはさておき

306 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:29:16 ]
今時ならXMLベースでリソースファイル作ればいいんだけどね

307 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 01:03:37 ]
>>302
本が出ることも単純に楽しみだけどこの文で一番気になったのは
D2.0をOctober 2008頃には安定させるつもりだってこと

308 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 01:09:06 ]
3.0をリリースするってことだろw

309 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 05:52:34 ]
ペロ・・・これは思い込み・・・!

310 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 05:53:14 ]
誤爆



311 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 22:08:33 ]
関数のインライン展開って何か条件ある?
-inline オプションつけても全然効果無いんだけど。

312 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 22:27:27 ]
インライン展開したら効率悪くなると判断されてるんじゃなかろうか

313 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 22:38:20 ]
逆逆。むやみにインライン展開されて逆に遅くなってるだけ。

314 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:37:29 ]
-inlineつけたらどこまでインライン展開されるの?
main以下全部ってわけじゃないよね

315 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:37:29 ]
いやいや、例えば配列の境界チェックありで要素を取り出そうってので以下のような
コードでテストしたらテンプレート化したほうは確実に遅いんだよね。-inline つけてもつけなくても。
size_t at(T)(T[] a, size_t i){
  if( i < a.length ) return a[i];
  else throw new ArrayBoundsException(null, 0);
}
void main()
{
  char[] a = new char[64 * 1024 * 1024];
  auto begin = timeGetTime();
  for(size_t i = 0; i < a.length; i++)
  {
    if( i < a.length ) a[i] = a[i];
    else throw new ArrayBoundsException(null, 0);
  }
  Stdout.format("{}", timeGetTime() - begin).newline;

  begin = timeGetTime();
  for(size_t i = 0; i < a.length; i++)
  {
    a[i] = a.at(i);
  }
  auto end = timeGetTime();
  Stdout.format("{}", timeGetTime() - begin).newline;
}


316 名前:315 mailto:sage [2007/12/19(水) 23:40:33 ]
で、上のコード実行すると最初のテンプレート化してないほうが 75ms ぐらいで、
下のテンプレート化したほうが 350ms ぐらいだった。-inline つけてもつけなくても一緒。
-inline つけたやつを逆汗したら当然展開されていなかった。



317 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:50:00 ]
どうでも良い事でスマソ。
逆アセって事は、直接アセンブラを吐けないコンパイラなの?

318 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 00:47:37 ]
??
もっと平易な表現でお願い。

319 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 06:44:43 ]
マイクロソフトって単位?

320 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 10:02:05 ]
>>317
gdcは吐けるdmdは吐かない



321 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 22:01:20 ]
dsss + Tango でリソースファイルをリンクするのにはどうするの?
dmd-win-tangoとかdsss.confとか見たけどよくわからんかった…(´・ω・`)

322 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 22:48:22 ]
>>320
thanx

323 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 23:09:21 ]
dmdの場合はオブジェクトファイルをdmのobj2asmにかければ大丈夫じゃね?

324 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 13:48:13 ]
更新まだかなぁ・・・

325 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 00:40:57 ]
>>324
じゃあこれで。
Tango 0.99.4 Frank has been released.

326 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 18:32:51 ]
D言語ってJavaのJFrameみたいに簡単にウインドウ出せるの?

327 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 19:14:41 ]
AWTのD-portingのDWTを使ってみるとか。

328 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 00:04:45 ]
DFLならこう
// www.dprogramming.com/dfl.php
import dfl.all;
int main()
{
 Form myForm;
 Label myLabel;
 
 myForm = new Form;
 myForm.text = "DFL Example";
 
 myLabel = new Label;
 myLabel.font = new Font("Verdana", 14f);
 myLabel.text = "Hello, DFL World!";
 myLabel.location = Point(15, 15);
 myLabel.autoSize = true;
 myLabel.parent = myForm;
 
 Application.run(myForm);
 
 return 0;
}

329 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 00:43:29 ]
tango の最新版、日付・時刻関連が少しすっきりしたけど、まだ手の入る余地がありまくってるな。


330 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 03:17:45 ]
>>327
DWTはSWTよ
あと開発止まってるぽい



331 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 04:52:40 ]
とりあえずTango0.99.4のtango.util.Convertの792行目あたりがあやしい。
returnで返さないっぽい

332 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 14:06:20 ]
DFLは付属のdfl.exe使わされるのが嫌で使ってないなあ
dmd.exeだけでできたい!

333 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 14:08:07 ]
dmdでも長ったらしいオプションつけるか、応答ファイル書くかしておけばいけるでしょ。

334 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 22:14:13 ]
寧ろDFLのモジュールとlib以外の使い道知らんかった

335 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 21:57:56 ]
ヲルたんからのクリスマスプレゼントwktk

336 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:36:16 ]
実際もうじき約一か月たつし、先月と先々月の更新の日付から見たら夢見てもいいかも?
とりあえず全裸待機。

337 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:37:06 ]
風邪ひくぞ

338 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:44:08 ]
いい子にして早く寝ないとな…

をるたんのとこでは今何時かしらないけど

339 名前:デフォルトの名無しさん [2007/12/25(火) 22:36:46 ]
>>110でも出てるけど
Assertion failure: 't->deco' on line 608 in file 'mtype.c'
はいつなおるんだあああ

340 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 07:10:52 ]
全裸待機。 この前のカンファで目玉はなんだっけ
あまり意味なさそうな static foreachしか覚えてないw



341 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 11:36:34 ]
const属性を考慮してphobosが書き換えられているようだ

342 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 11:57:38 ]
>>340
macro
ADL
拡張メソッド
static引数(関数テンプレートの糖衣構文)
メンバの委任
コンパイル時に全てのcaseが網羅されているか検証するfinal switch

あたりだったか。

343 名前:331 mailto:sage [2007/12/26(水) 21:03:27 ]
Tango0.99.4のtango.util.Convertの792行目あたりがあやしいかったのは、rev3066で直ったみたいだ。

しっかし、Tangoもどこまでやったら1.0出す気なんだろ。
まぁ確かにもっとインターフェース良くなるところは多いと思うけど。

344 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:55:05 ]
2.0で追加されたphobosのライブラリを
1.0でも使えるようにするプロジェクト std2 が dsource にできてるね

345 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:14:25 ]
それよりアップデートはまだなのか

346 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 20:34:53 ]
extern(C++)便利だなこりゃ

347 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 21:19:39 ]
>>346
あれってC++のソースのコンパイルをmsvcではなくdmcでしなきゃいけないんだよね?
そう思ってstlportのセットアップが面倒で試してないんだが面白そう

348 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 21:27:47 ]
C++のobjもOMFとCOFFって分け方でいいの?
DMDはOMDってことになるのかな?

349 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 22:29:41 ]
>>347
いやいや、VisualStudioで作成したやつだよ。
〜.libをlink.exeにくわさないとだめだけど

350 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 22:43:51 ]
正確には dmc も msvc も同じ修飾名を使っているので問題がない。
Linux ではどうなってるかしらん。



351 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 00:18:13 ]
extern(C++)といえば、interface宣言を使ってC++のオブジェクトをDからアクセスできるようになったけど、これの場合はCOMと同様にC++マングルは関係なくなるのかな?

352 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 00:40:44 ]
いえす。C++マングリング規則にD側が合わせることになる。

353 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 00:41:45 ]
COMインターフェイスってどういう条件で普通のインターフェイスからCOMインターフェイスになるの?
IUnknownを継承するだけでいいの?

354 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 00:58:33 ]
>>352

DのinterfaceがC++のオブジェクトモデルと互換性があるということで、実際のシンボル名関係なしにVTbl手繰ってメソッド呼べるのかなぁと思ってたんだが、この場合でもあの_ZN3なんとかみたいなシンボル名からメソッドを呼び出しているの?

>>353
MS用語でいう"カスタムインターフェイス"ならIUnknown継承だけでCOMインターフェイスだったと思う。
実際にCOMコンポーネントとして使えるようにするにはいろいろ登録したり、QueryInterfaceの動作要件とかあったはず。

355 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 07:58:40 ]
>>353
extern(Windows)なinterfaceだったと思う。

356 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 11:02:18 ]
>>353
IUnknownって名前のインターフェイスを継承するだけでいいみたい。

interface IUnknown { }
interface ITest: IUnknown { }

void main(){
ITest o;
delete o; //Error: cannot delete instance of COM interface ITest
}

357 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 07:09:33 ]
COMインターフェースが何に使えるかおすえて

358 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 08:44:34 ]
DLL を通してクラスを提供可能。

359 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 13:30:23 ]
news://news.digitalmars.com:119/fl2jnu$1i6p$1@digitalmars.com
> Subject: During these holiday times...
> From: Walter Bright
> Date: 2007/12/28 19:38
>
> ...we should take a moment to reflect on the important things in life.
>
> uk.youtube.com/watch?v=s_QpBhdvK2Q

360 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 19:47:29 ]
えw



361 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:03:28 ]
>>349 ごめんできない
// cpp.cpp
#include <iostream>
#include "cpp.h"
void Cpp::func() {
 std::cout << "call Cpp::func()" << std::endl;
}
Cpp* newCpp() {
 return new Cpp;
}
void deleteCpp(Cpp* instance) {
 delete instance;
 instance = NULL;
}
これをmsvcでコンパイルして cpp.lib もしくは cpp.obj を作った


362 名前:361 mailto:sage [2007/12/30(日) 01:04:06 ]
// main.d
extern(C++) {
 interface Cpp {
  void func();
  }
  Cpp newCpp();
  void deleteCpp(Cpp instance);
}
void main() {
 Cpp cpp = newCpp();
 cpp.func();
 deleteCpp(cpp);
}

>dmd -c main.d
>link main.obj cpp.lib

OPTLINK (R) for Win32 Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved

d_to_cpp.lib
Error 43: Not a Valid Library File
--- errorlevel 1

何がまずいですか?

363 名前:361 mailto:sage [2007/12/30(日) 01:06:09 ]
間違えた
C++のソースはcpp.cppじゃなくてd_to_cpp.cpp

364 名前:349 mailto:sage [2007/12/30(日) 07:27:19 ]
ごめん、 libにくわすんじゃなくて
implib.exe だった

C:\dm\bin\implib.exe /s $(OutDir)\$(TargetName).d.lib $(TargetPath)
こういうことをやってます。

で出力された 〜.d.lib を lib.exe でリンクね

365 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 21:25:36 ]
皆さんよいお年を
をるたん来年もよろしく
2008.1.1の更新きたい

366 名前: 【小吉】 [2008/01/01(火) 03:26:27 ]
あけおめ

アップデート期待age

367 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 09:51:38 ]
あけおめ

をるたんところは、夕方ごろ年明けだよね。

368 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 11:10:14 ]
ああ、アメリカかあ。生アメリカだよなあそこ。いいなあ。。。

369 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 12:05:15 ]
D3.0が出ると聞いて

370 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 14:32:33 ]
D 0.2008 になると聞いてやってきました。



371 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 17:57:30 ]
今年こそは伝説のIDEが現れますように

372 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 19:55:39 ]
その前に伝説の言語仕様が現れないと

373 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 20:34:40 ]
2.009ktkr…なにこのがっかり変更数
裏で何か巨大なものを作ってると思って待つしかないか…

374 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:40:06 ]
これはがっかりすぎる…

375 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:44:13 ]
CTFE周りのバグフィックスはまあ嬉しい

376 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 00:31:55 ]
新バージョンへの期待大きすぎワラタ

> Redid const/invariant semantics again.

やり直し…? どう変わったのかよく分からないや。

377 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 00:57:17 ]
>>110が直ってないし・・・

378 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:01:54 ]
>>376
void f(const(int) x);
void f(int x);
のオーバーロードが出来るようになってるのは確認した。

invariant(int) i;
i = 4;
もできなくなってるから、トップレベルのconst/invarinatの扱いが変わったみたいね。

379 名前:378 mailto:sage [2008/01/02(水) 01:06:56 ]
invariant T var;
invariant(T) var;

ドキュメントによれば、この二つが完全に等しくなったみたいだね。
やっと気持ちの悪いねじれが解消された感じ。ようやくだけど。

380 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:16:41 ]
全く同じ関数が二つ以上あっても呼ばれなきゃエラーにならなくてワロタ。



381 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:20:05 ]
>>380
おおほんとだ。
リンカエラーにはなるけど、コンパイラはお咎めなしなんだな

382 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:31:48 ]
Manifest Constant

enum string s = "hoge";

もはやenumの意味が消失してしまってる…

383 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:42:20 ]
だめだ…をるたたん止めないと…

class C { }
void main() {
const(C) c;
c = new const(C); // error!!!
}

384 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:15:44 ]
struct A {}

A a0;
const A a1;
a0= a1; //Error: cannot implicitly convert expression (a1) of type const(A) to A

をるたん・・・


385 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:40:31 ]
>>384
それは今まで出来たのがおかしい気がする。

386 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:49:24 ]
>>385
>>384じゃないけど、構造体の代入はビットコピーなんだからできないとおかしいだろう。

387 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:51:46 ]
>>386
例えば、Aがint*型のメンバを持ってたとしたら、
const(int)*からint*への暗黙の型変換が起きてしまうと思うのだけど。

388 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 03:00:16 ]
>>387
そういや、そうか。すんません。

389 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 08:53:49 ]
>>387
const(int*)にならないの??
おれがわかってないのか??


390 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 09:19:51 ]
>>384

Replace:

> const(C) c;
> c = new C(1); // error

with:

const(C) c = new C(1);

だってさ

ttp://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D.announce&artnum=10964



391 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 10:01:38 ]
>>390
ん? それ>>383のだよね。

392 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 12:27:38 ]
>>387
ポインタを含む場合だけエラーってのでいいと思うんだけどなあ。

393 名前:390 mailto:sage [2008/01/02(水) 12:31:13 ]
>>391
そそ、ごめん

394 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 16:11:30 ]
>>377
これなおらなきゃまともに窓作れないよ・゚・(つД`)・゚・

395 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 17:28:04 ]
>>392
そんな例外はかえって必要ないだろう。

396 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:25:48 ]
budで-Xphobosつけないとphobosのソースもコンパイルされるという事実に気づいた
自動で付いてるもんだと思ってたのに・・・ひどい!

397 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 03:37:47 ]
char[] hoge = new char[100];

char[] hoge;
hoge.length = 100;
ってなんか違うことってある?

398 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 03:54:26 ]
意味的には違わないはず。生成されるコードは知らないけど。

399 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 23:57:30 ]
構造体をcast(const)できないんだけど、どうすればいいんだ。

400 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 01:45:20 ]
>>399
コードplz あとそれどんなときに必要?



401 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 01:52:26 ]
struct S {int i;}

void main() {
auto a = [S(0), S(1)];
auto b = [cast(const)S(0), S(1)]; // Error: no property 'opCall' for type 'const(S)'
}

const(S)[] 型の配列リテラルが欲しいんだ。

402 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 02:12:20 ]
>>401
これじゃダメ?
import std.stdio;
struct S{int i;}
void main(){
 const x = [S(0), S(1)];
 writefln(typeid(typeof(x))); // (const(const(main.S)[2])
}
配列リテラル周りはいつもバグに悩まされるから使わない方が
トラブルに遭わずに済んでいいかと

403 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 02:25:51 ]
const(S) a = S(0);
const(S) b = cast(const(S))S(0);

確かに、暗黙に変換できるのに、明示的にキャストできないのは気持ち悪いな。

404 名前:402 mailto:sage [2008/01/04(金) 02:26:57 ]
どうもconst(S)とS(0)を同時に実現できないみたいなので下のzのようにするしかないんじゃない?
import std.stdio;
struct S{int i;}
void main(){
 const x = [S(0), S(1)];
 writefln(typeid(typeof(x))); // (const(const(main.S)[2])

 auto y = [S(0), S(1)];
 writefln(typeid(typeof(y))); // main.S[2]

 const s = S(0);
 auto z = [s, S(1)];
 writefln(typeid(typeof(z))); // const(main.S)[2]
}

405 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 02:33:45 ]
これでおk

auto a = [delegate const(S)(){return S(1);}(), S(2)];

406 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 06:02:12 ]
似たようなやり方を前にも見たような気がする

407 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 21:56:14 ]
phobosに16進文字列を整数に変換する関数ないの?

408 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 22:37:09 ]
と思ったけど、CTFEできないといけないから、いらないや

409 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:58:00 ]
もしかして引数なしの関数って、() なしで名前だけで呼び出せるのか

410 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:47:20 ]
yes. プロパティっぽく扱えるようになってる。



411 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:48:22 ]
>>408
それくらいの関数って作れなかったっけ?

412 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:23:48 ]
yes.
プロパティのための構文糖。

413 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:24:57 ]
リロし忘れてたごめんorz
答え方まで似てるってのが笑える。

414 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:31:14 ]
>>411
CTFEできないとダメだから自前でこしらえるしかない、って言いたかったのさ

415 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:36:56 ]
>>414
あーなるほど。さんくすこ

416 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 11:30:03 ]
>>410,412
なるほど、Ruby チックでいいね

417 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 20:19:50 ]
それってプロパティじゃない関数までgetterとして振舞うってことだよな。
LL好きにはいいんだろうけど、ちょっとやだな。
getter/setter相当がオーバーロードされているときと、
getterのみはローカルキーワードで対応ってならんのかな。

418 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 21:52:02 ]
引数がない関数にわざわざ()をつける必要がないってのは自然な感じがするんだけどなあ。

419 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:01:44 ]
まあ副作用が無ければ自然に思える。

420 名前:デフォルトの名無しさん [2008/01/07(月) 22:25:16 ]
その情報を取り出すことで何かが変化するのなら、それを使用するときに変化すると言うことが明確でなければならない。
つまり関数には後ろに「( )」が必要。




421 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:47:17 ]
>>417-419
Delphiも、引数なし関数は省略できたな。

>>420
上の行としたの行がつながらん。
()があれば、必ず副作用なるわけではないでしょう?

副作用があるかどうかは、メソッド名とドキュメントで明示すべき。

422 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:49:44 ]
命名をちゃんとしとけばそれほど違和感ないと思う。

process.kill
thread.start
window.close
stream.flush
something.toString

423 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:55:44 ]
基本的に、名詞はプロパティ、動詞はメソッドというのが一般的じゃないかな。

424 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 03:06:26 ]
そういや、Rubyも括弧いらないんだよな。

425 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 07:19:29 ]
Ruby で慣れてるから副作用があろうがなかろうが括弧無しで違和感ないわ

426 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 10:57:58 ]
>>417
個人的には変数がクラス外部からはconstに見えるアクセス制御がほしい。
class Foo {
int hoge_;
int hoge() { return hoge_; }
}
とか書くのも冗長、最適化されるか分からないのが嫌、みたいな。

っつかそういう制御っていまできましたっけ?

427 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 12:32:09 ]
>>426 constメンバ関数
class Bar {}
class Foo {
int hoge_;
const int hoge() { return hoge_; }
Bar bar_;
this() { bar_ = new Bar; }
const const(Bar) bar() { return bar_; }
}

428 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:37:46 ]
そういうことじゃなかろう。

429 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:44:09 ]
readonlyにするってこと?

430 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:46:40 ]
話ぶったきるが、連想配列では

char[][char[]] m;
m["foo"] ~= "bar";

と m["foo"] が lvalue になるんだけど、自分で作ったクラスが opIindex で配列を返すと
当然のことながら lvalue にならない。どうにか関数で配列の参照を返すことってできんだろうか?




431 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:08:07 ]
opIndexAssign?

~= みたいな複合演算子は使えないけど。

432 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:42:51 ]
それか、プロキシオブジェクトを返すか、だね。

433 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:07:09 ]
phobosにmap, filter, reduceとか配列操作関数が欲しいよう

434 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:15:26 ]
>>431
代入(=)じゃなくて連結(~=)したいんだ。
いちいちプロキシオブジェクト作るのは面倒だし、困ったものだ。

あと、配列とかにも演算があるんだから opCmp とか呼べりゃ良いのに・・・
ソート用に比較するときに == と < (または > ) の2回比較しなければいけないから困る。

細かいところで融通きかんよなぁ。

435 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:19:52 ]
>433
Lisp屋さんか?それともPython屋さんか?

436 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:37:02 ]
>>434
インデクサやスライサの複合代入がオーバーロードしたいって要望はずっと前からあるが、
実現される兆しはないな。プロキシオブジェクト返すしかなさそう。

TypeInfo使えば、プリミティブ型を含めて任意の型の比較が汎用的に出来るよ。

int[] x = [1, 2, 3], y = [1, 2];
writeln(typeid(int[]).compare(&x, &y));

437 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 14:08:13 ]
java7で言語仕様に盛り込まれるというプロパティ仕様がかなり羨ましくてしょうがない。
お決まりの実装は自動生成してくれたり……をるたんも影響受けてくれないかなぁ。

438 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 17:02:35 ]
>>437
詳細ちぼん

439 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:34:02 ]
>>438
journal.mycom.co.jp/articles/2007/05/16/java7/index.html

あ、でもこれだと「フィールドとプロパティで名前がかぶるからフィールドに_つけなきゃ」
とかの悩みが解決できないなぁ……いや、内部からもプロパティでアクセスすりゃいいかな。

440 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:41:32 ]
>>439
> 内部からもプロパティでアクセスすりゃいいかな。
継承に影響が出るから、別の意図が無ければそうすべきだよ。



441 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 20:09:00 ]
>>224-226の話だが、eBook版が現地時間の1/7からゲット可能になってるらしいぞ。
www.dsource.org/projects/tango/wiki/LearnToTangoWithD
なんてのもできてた。
人柱レポ頼む。

442 名前:434 mailto:sage [2008/01/09(水) 22:58:21 ]
>>436
おおお、そんな方法があったのか。ありがとう。
というか、インスタンスが同じかどうか調べる(x is y 式と同じ)ものだと思ってたよ。
opCmp は呼べないのにどういう仕組みになってんだろ。。

443 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 23:26:05 ]
>>442
std.typeinfo以下に全部ソースあるから読んどくといいよ。

444 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 07:07:30 ]
>>439
なるほど。 ありがとう
これはいい文法砂糖

445 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 03:01:09 ]
>>353
アイ ウンコ ナウ
と読んでるでのは俺だけじゃないはず

446 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 09:48:44 ]
お前だけだろw

447 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 05:07:50 ]
ウンキングナウ!

448 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 16:06:46 ]
動きないのかなあ

449 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:04:37 ]
D forum からネタ
www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=64888

450 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:40:17 ]
WPFでウィンドウを表示するのには成功したんだが、
イベントの受け取りをどうするか…



451 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:27:53 ]
std.threadにsleepがないんだが、どっか別の場所にある?

452 名前:デフォルトの名無しさん [2008/01/14(月) 19:42:43 ]
$ find std -name '*.d' -exec grep -H 'sleep' \{\} \;
std/c/time.d:void sleep(time_t);
std/c/time.d:void usleep(uint);
std/c/time.d:void msleep(uint);


453 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:51:30 ]
d
今更だがphobos手抜きすぎる気がしてきた

454 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:50:08 ]
言語仕様は素晴らしいが開発環境とライブラリが貧弱すぎて使い物にならないのがD。

455 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:52:41 ]
言語使用はC++なみに複雑で全然素晴らしくない。
C++の焼き直しに過ぎない。

456 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:55:45 ]
言語仕様が素晴らしいと思われるようにころころ言語仕様を変更してるから、
開発環境とライブラリが成熟しなくて、結局使い物にならないのがD。

457 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:00:35 ]
C++のように現実的な限界を認めてさっさとライブラリや文法を
固めてしまった方がはるかに現実的なのに。

458 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:02:04 ]
Dは実用言語を目指した実験言語です

459 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:04:47 ]
こんなところでケチ付けても、をるたんは日本語の掲示板なんて見ないよ。

460 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:28:21 ]
>>457
それはPython




461 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:34:55 ]
来年で10年だし そろそろ固まってもいいころだと思うんだが

462 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:52:40 ]
Dの初心者向け解説を一通り見た感想なんだけど。

C++のキモ過ぎに絶えられない人。
英語読めない人。
せいぜい趣味の範囲。
windowsが主でパソコン(PC)しか見えてない人。
それ以外mac, linux, unixにあんまり関心ない人。

C++に抵抗があって、java, C#以外を考えるなら、
objective-cでいいかなと思うけど、英語勉強しないとねw

Dなんて、いまだに実用(プロジェクト・個人でも)で使うのは怖くてできないし、
おぼえようにも仕様が複雑すぎ・リテラルが多すぎで、結局C++とかわんないw

ということで、C++と同じくwindows向けのオナニー言語ってことだと思った。
この辺が一向に流行らない理由じゃないかな。
ちなみに、dmcは結構好きだけど。

463 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:00:30 ]
D は Windows 以外でも使えるが・・・。

464 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:05:00 ]
ニュースグループ読んでる感じだと、非Windows環境での話題のほうが多いぞ

465 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:08:46 ]
つか言語がwindows向けってどういうことだ

466 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:16:04 ]
windows(とlinux)がターゲットだからまずwinからサポート・実装される。次が非windows。
でもパソコンがターゲットならvmのjavaかc#でいいよ。

次世代目指すとかデスクトップ(win, gnome)とかターゲットかと思えば、
その割には、dはguiとか標準で持ってないし、一体何をしたいんだが理解に苦しむ。
dを追いかけるよりも他の言語やunixを追いかけたほうが日本人にはいいと思った。
ハードならcや分野専用のカスタマイズ言語(cgとか)があるし。
一応、嘆き。

467 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:16:36 ]
>>462
日本語でおk

468 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:18:13 ]
デーモンとか書くの楽になるならDもいいんだけど

469 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:19:07 ]
>467
おまえ馬鹿じゃね?

>>462の言ってることはめちゃくちゃ明解

470 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:20:05 ]
>>465
PCが主体で、携帯とかPDAとかじゃなくて、デスクトップ向けってことです。
ほぼwindowsの牙城というか。

C++にGCが標準で搭載されれば(bohem gcでも)、Dの存在価値は薄くなるかなってw



471 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:22:50 ]
正式版が出てから急にシェアが増えたのはどう説明するんだろ>>257
対してC++のシェアはDの伸び以上に減ってるんだよな
言語が増えた今、C++は用途が限定されたオナニー言語になりつつあるという事だ

472 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:33:07 ]
C++ はプログラマのオナニー向けじゃなく、コミュニティのオナニー向けだろ。
俺は Boost のイカれ具合とそれを崇拝する信者どもに嫌気が指した。


473 名前:デフォルトの名無しさん [2008/01/14(月) 23:35:06 ]
なんだ自演がはじまったのか

474 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:36:16 ]
Dの目的のなさも似たようなもんじゃないか?
どうせC++についていけないでDに逃げてきたんだろうし。

475 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:37:45 ]
0xスレでやれ

476 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:38:00 ]
C++は標準化委員会があるからまだいいほうだろ。

477 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:43:39 ]
>>476
Boost の lambda とか言われたままに採用せずに、あんなもん言語仕様のひとつに組み込めよ、と思う。
なんでもかんでも template で generic programming って間違った進化だろ。
で、こういうこと言うとパラダイムシフトできないアホグラマがどうのとか。
スレ違いだからこのへんにするが。

478 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:45:23 ]
C++についていけなかった香具師らはRubyに逃げた

479 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:47:58 ]
>>477
まあ今の言語の群雄割拠は地球の歴史でいうと先カンブリア紀のようなもんだからなぁ


480 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:04:41 ]
パーサーが実質世界に一つしかなくてしかもオープンソースというのは
C++ からしたら天国じゃないか



481 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:23:46 ]
同じ事が近いコーディングコストで達成できるのであれば、言語仕様は小さい程いい。
何でもかんでも言語仕様に取り込みゃいいってもんじゃない。

482 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:28:54 ]
>>481
構文や意味に誤りがあった場合にまともなエラー表示ができていない。
達成できてるとは言い難い。

483 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:30:20 ]
コンパイラが実装しなけりゃ絵に描いた餅。
export の二の轍を踏むだけ。

484 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:32:13 ]
Dの設計・言語使用に携わっている人たちが、そもそもC++についていけなかった件について。

485 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:32:45 ]
export は実装が難しすぎたからだろ。
lambda の実装ごときに何の問題があると。

486 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:34:34 ]
>>449
forumに書き込んでる暇があれば自分で移植しろという感じだな

487 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:35:32 ]
この様子だと、Dは実用とか稼動とかとは程遠いですね。
けっきょくは、better c++ なんでしょうか。
また1年後ぐらいにこのスレにきますわw

488 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:36:50 ]
>言語仕様は小さい程いい。
D見るとつくづくそう思うよ。
バグは言語仕様に対して指数関数的に増えるからな
const周りの仕様変更でfinalメンバ関数の挙動がおかしくなったりとか
そういうのにぶつかると絶望感感じるよ。

489 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:38:38 ]
仕様が増えれば、それだけ実装コストがかかるのは当然だろ。
言語は実装されて初めて意味を持つんだから、普及させたけりゃ仕様は少ない方がいい。
さらに、覚える方も楽だしね。

さらに、D の設計思想にある 「構文解析と意味解析を分離する」 が達成されていない C++ で
新たに仕様を増やしたときの実装コストはいかほどのものかちったぁ考えようぜ。

boost をそのまま取り込むとなれば実装コストは名前ちょっといじる程度。
この差は非常に大きい。

490 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:41:29 ]
>>477
仕様に組み込みたい気持ちは分かりますが、Cの言語仕様にラムダはいかんでしょ。
あなた、プログラム言語のことをちゃんと学んでないようですね。
パラダイムとかテンプレートもいいたいこと分かるんですけど、世の中にはもっとキモイのがいるんで、
そういうの見ると少しはC++のそれも理解できるかとw

正規表現で不定方程式を解く



491 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:45:32 ]
それは理解できるが、lamda プログラミングは素晴らしい!なんて語りながら
現実があれじゃどうかと思うぜ。あんなのIOCCCに応募するようなコードだろ。
マクロでマイ言語作って叩かれた25年前から何も変わってない。

492 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:16:36 ]
Cのコンパイラも書いたことない奴らがDの設計思想とかぬかすなよ
おこちゃまはwinでrubyでいいからw

493 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:17:26 ]
Dスレにまでいつものが湧くようになったか。
スルーしとけ

494 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:17:43 ]
windowsならvbaで決定だな。

495 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:19:57 ]
>>491
ラムダは制御には向いてませんよ。Cは制御に向いてますよ。
あなたに必要なのは、そういうところだと思います。

496 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:20:02 ]
>>487
仕事で使ってる俺から言わせてもらうと
実用とか稼働とかとはほど遠いから趣味で使うのがいいよ
あと1年後じゃ無理だから5年後においでw

497 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:22:07 ]
>>484
誤れ!アンドレイ・アンドレスクに誤れ!

498 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:31:45 ]
それにしても、クロージャ実現したことだし、
そろそろDにもラムダ記法導入して欲しいよね。

499 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 02:23:07 ]
>>497
誤ってるのはお前の書いた名前だw

500 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 06:06:19 ]
アインシュタインがオナニー言語を超えてるの、みたいな事を昔言ってた人が再び降臨したのか



501 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 06:38:16 ]
更新があったのかと思ったじゃないか
あーもーつまんね

502 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 07:27:12 ]
結局なんなの
実の無い話があっただけ?

503 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 07:40:38 ]
オナニー文章の中には頻繁にオナニー呼ばわりが登場する、
という毎度の傾向がまた一つ見られただけです。

504 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 08:34:10 ]
DMD 1.020 って事は GDC だとまだクロージャは使えないの?

505 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:09:03 ]
shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all
これでもみておちつこうぜ

506 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 21:25:55 ]
g++に負けるのかー

507 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 21:32:53 ]
C++ ごとき風前の灯

shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all&calc=Calculate&xfullcpu=1&xloc=1

コードが冗長過ぎだもんね

508 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 21:40:55 ]
>>507
生温い
ttp://tinyurl.com/39ap2z

509 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:34:47 ]
HDDが消去されます

510 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:48:14 ]
あるDLLからインポートライブラリ作って、ダイナミックリンクし、
このDLLの関数をmainから直に呼べば問題なく動くのに、
オブジェクト指向なラッパとして、クラスを作ってメンバ関数から呼ぶと起動すらできずに実行時エラー
「アプリケーションを正しく初期化できませんでした (0xc0000005)。」が出る。
このクラスをプログラム内で一回も使っていなくても、定義しただけで起動できなくなる。

こんな奇妙な現象に悩まされているのですが、一体どんな原因が考えられますか。



511 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 23:22:58 ]
>>510
再現コード+DLLを、どっかにアップしたらどう

512 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 00:28:08 ]
>>511
すみません。原因はわかってしまいました。

クラス定義があると、どうやらモジュールコンストラクタで使っているDLLよりも、
クラスのメンバ関数で使っているDLLが先にロードされて、
そのロード順の違いによって問題が出たり出なかったりするようです。

COM周りは本当によく分かりません。

513 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 12:41:58 ]
jscriptをちょっとだけやったことがある程度なのですが、
Winsockで簡易的なHTTPサーバーを作ろうと思い、
ためしにCで書かれたサンプルをDにしてみているのですが、
sockaddr_in型からsockaddr型への変換のところで詰まりました。

サンプルは
www.geekpage.jp/programming/winsock/http-server.php
のものです。

どうすればsockaddr_in型からsockaddr型への変換ができるのでしょうか。
Cでは (struct sockaddr *)&addrで変換しているようです。

514 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:14:18 ]
普通にcast(sockaddr *)すればいいんでない?

515 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:20:32 ]
>>514
ああ、それっぽいことをしていたのに真っ先に試すべきそれをやってませんでした。。。
どうもです。

516 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 06:32:42 ]
ヲルタンは1.0と2.0のコンパイラのソースをどうやって
管理してるんだろうなぁ
いつも更新同時にでるし。
#ifdefでわけてるだけなのかな

517 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 08:26:55 ]
>>516
ソース嫁

といいつつ見てみたけど #if V2 で分けてるだけに見えるな

518 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 11:29:14 ]
phobosに入れてもらおうと思ったらどうしたらいいのだろう
たまに誰かのがマージされてるみたいだけど

519 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 11:47:52 ]
をるたんに直談判

520 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 19:08:18 ]
518じゃないけど、
>>519
まじっすかwwwなぜdsourceにいったんだろうw



521 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:06:30 ]
変数に対するfinal指定がなくなってる…
コンストラクタで一度だけ初期化できるフィールドってどうやって書けばいいんだ

522 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:10:21 ]
finalとconstはinvariantと違って使い分けの基準が分かりにくい

523 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:11:32 ]
const 関連ごちゃごちゃしすぎて D 2.0 使う気が起きないっす。

524 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 03:21:59 ]
周辺ライブラリがきちんとconst/invariant修飾されるようになれば
使いやすくなると思うんだけどな

525 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 04:26:52 ]
たしかにD2.0はまだ未成熟のように感じる。
最低でもconst/invariant関連の仕様がいい具合になるまでは
D1.0+Tangoで当面様子見するのがいいかも。

526 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 07:18:04 ]
std.string内関数、引数がstringなのがうざすぐる

527 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:28:06 ]
phobos自体、,009の新しいルールに則ってなくて一部コンパイル通らんしな…

528 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:54:35 ]
それphobos2.libってどうやって作ってるの?

529 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 11:52:33 ]
Dはてんこもり過ぎね?
誰かD--言語のドラフト書いてくれよ

530 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 13:42:25 ]
>>526
同意。せめてin char[]にして欲しい。
おかげで無駄なキャストがわらわらと必要に



531 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:24:10 ]
D:\foo\bar\hoge\..\..\abc\def.txtという相対指定も含んだパスから
D:\foo\abc\def.txtというパスを取得する簡単な方法はありませんか?

532 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:16:30 ]
\ でsplitして .. があったら左側を消せば。

533 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:07:01 ]
.\..\.\..\

とかがあるんじゃね?

とか打ってみたらリズムが良くてわらた

534 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:15:00 ]
string shorten_path(string orig_path) {
string[] path = [];
foreach(dir; orig_path.split("\\")) {
if(dir == ".")
continue;
if(dir == ".." && path.length > 1) {
path.length = path.length-1;
continue;
}
path ~= dir;
}
return path.join("\\");
}

こんな感じでどうだろ

535 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:22:00 ]
string normalizePath(string path) {
auto a = path.split(`\`), b = new string[a.length], idx = 0;
foreach(e; a) {
switch(e) {
case ".":
break;
case "..":
if(--idx < 0) throw new Exception("invalid");
break;
default:
b[idx++] = e;
}
}
return b[0 .. idx].join(`\`);
}

536 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:25:43 ]
被ったorz

537 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:57:02 ]
534だけど
if(dir == ".." && path.length > 1) {

if(dir == ".." && path.length > 0 && path[$-1] != "..") {
でした。

538 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 13:03:37 ]
>>534-537
どうもです。
パスの正当性チェックを加えて使います。

539 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 14:37:06 ]
>>538
ま、WindowsならそのものずばりなAPIがあったりするが。

540 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 15:01:16 ]
>>539
似たような処理で、linuxやwebの不正なパスも調べようとしているので。
もしできれば参考までにその関数名を教えてくれると助かります。



541 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 17:16:46 ]
>>540
PathCanonicalize()
あ、不正かどうかのチェックではなく、相対指定の削除の方な。

542 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:56:30 ]
>>526, 530
dout.printf("%d\n".dup, 10);
.dupうぜええ

543 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:16:25 ]
>>542
でじこ・うさだ・ぷちこ

544 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 06:41:00 ]
DMD 2.010 & 1.026 リリース

545 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 10:03:31 ]
バグフィックスが主だね

546 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 11:28:13 ]
pureとな
何に使うんだろう

547 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 11:33:35 ]
まさかpure関数か?

548 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 11:56:36 ]
What's New for D 2.010
Jan 20, 2008
New/Changed Features
opAssign can no longer be overloaded for class objects.
WinMain and DllMain can now be in template mixins.
Added pure keyword.

549 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 17:30:10 ]
とりあえず1.026でwin32が通る。

550 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 01:38:01 ]
win32を使おうとすると出る>>110だが、関数ポインタ型の宣言が使っている所よりも後ろになっているところがあって、それが原因みたい。
Func func;
alias void function() Func;
というふうになっていると、そこでエラーになる。
rpcndr.dとか、rpcdcep.dとか。

だから、それを解消するように書き換えてやれば、使えるようになる。
alias void function() Func;
Func func;
というように。

まあ、ちょっと調べれば分かることだけど、とりあえず報告。




551 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 01:43:32 ]
Bugs Fixed
* Bugzilla 1319: compiler crashes with functions that take const ref arguments
* Bugzilla 1697: Internal error: ..\ztc\cgcod.c 2322 with -O
* Bugzilla 1700: ICE attempting to modify member of const return struct
* Bugzilla 1707: '==' in TemplateParameterList in IsExpression causes segfault
* Bugzilla 1711: typeof with delegate literal not allowed as template parameter
* Bugzilla 1713: foreach index with tuples and templates fails
* Bugzilla 1718: obscure exit with error code 5
* Bugzilla 1719: Compiler crash or unstable code generation with scoped interface instances
* Bugzilla 1720: std.math.NotImplemented missing a space in message
* Bugzilla 1724: Internal error: toir.c 177
* Bugzilla 1725: std.stream.BufferedFile.create should use FileMode.OutNew
* Bugzilla 1757: there is an fault in phobos windows api interface
* Bugzilla 1762: Wrong name mangling for pointer args of free extern (C++) functions
* Bugzilla 1767: rejects-valid, diagnostic
* Bugzilla 1769: Typo on the page about exceptions
* Bugzilla 1773: excessively long integer literal
* Bugzilla 1779: Compiler crash when deducing more than 2 type args
* Bugzilla 1783: DMD 1.025 asserts on code with struct, template, and alias
* Bugzilla 1788: dmd segfaults without info
* D.announce/11066: Re: DMD 1.025 and 2.009 releases

552 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 01:44:06 ]
ぺたぺた
やっと最初のやつ直ったのな

553 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 12:44:34 ]
Open Tech Press | プログラマの生産性を高める新たな言語「D」
ttp://www.itmedia.co.jp/enterprise/articles/0801/22/news058.html
これでD言語にも人気が出てくるといいな。

554 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 17:34:28 ]
>>541
へー、WindowsAPIってOSの機能を使うだけって思ってたんですがこういう関数も結構あるんですね。
ありがとです。

555 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:26:52 ]
functionをdelegateに変換!みたいなことってできないの?

556 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:37:44 ]
>>553
>GDCはDMDとは違って今のところはまだ標準に100%の準拠はしていない。
標準?そんなものあったの?

557 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:50:09 ]
>>556
ウォルたんのページに書いてるのが標準。ただし、頻繁に変わるw

558 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:56:03 ]
>>555
delegateは実はただの構造体のようなもの。

TR delegate(TA) toDelegate(TR, TA...)(TR function(TA) fn) {
typeof(return) dg;
dg.ptr = null;
dg.funcptr = fn;
return dg;
}

559 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 19:07:24 ]
>>558
それスタックずれる

560 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 19:13:03 ]
じゃあこうかな

TR delegate(TA) toDelegate(TR, TA...)(TR function(TA) fn) {
return delegate TR(TA args){ return fn(args); };
}



561 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 21:49:56 ]
private struct FunctionCaller(R, A...)
{
R call(A args)
{
return (cast(R function (A))this)(args);
}
}

R delegate (A) todg(R, A...)(R function (A) func)
{
FunctionCaller!(R, A) c = void;

auto res = &c.call;
res.ptr = cast(void*)func;

return res;
}


562 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 06:33:07 ]
>>558-561
なんでそんなに詳しいんだ

563 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 12:23:38 ]
>>557
そのアップデート速度がDの魅力。
仕様が10年も変わっていないC++には真似ができない。
ただ、最近はDMDの更新が遅いと思い始めた。病気だろうか。

564 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:49:37 ]
>更新が遅い
超わかりすぎるw


565 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 14:07:56 ]
機能追加されるたびに「迷走しすぎじゃね?」とか書き込むけど、バグフィックス中心の更新だとなんか寂しい俺は既に完全調教されているのか。

566 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 15:29:41 ]
>>563,565
よう俺

567 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 16:56:03 ]
さびしがりやさんかわいい

568 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:17:05 ]
>>550
その手直しされたファイル群をうpしてくれ

569 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:08:47 ]
if (s[$ - 2 .. $] == "\r\n")
if (s[$ - 1] == '\n' && s[$ - 2] == '\r')

文末にCRLFがあるか調べるだけの条件式ですが、
これらは似たようなものなのに、後者の方が6倍ほど速くなるのは何ででしょうか?

570 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:23:29 ]
>>569
文字列の比較か整数の比較か。



571 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:27:42 ]
>>569
一番大きいのは配列比較関数を呼び出すオーバーヘッドじゃなかろうか。

572 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:14:43 ]
>>570-571
いろんな理由があるんですね。
でも、どっちにせよ10000000回まわしてやっと差が二秒出る程度なのであまり気にしないことにします。

573 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 10:40:33 ]
DでつくったCOMサーバにTypelibを埋め込むにはどうしたらいいんだぜ?

574 名前:573 mailto:sage [2008/01/25(金) 10:49:57 ]
言葉足らずすんません
DでつくったCOMをC#からつかってみようと思ったんだけど、
登録できなくて、いろいろしらべたら、タイプライブラリが組み込んでないからだと
思うようになったんです。

以下C++でDのサンプルにあるdserver.dを呼び出す方法です
GUID CLSID_Hello = { 0x30421140, 0, 0, {0xC0,0,0,0,0,0,0,0x46} };
GUID IID_IHello = { 0x00421140, 0, 0, {0xC0,0,0,0,0,0,0,0x46} };
HRESULT hr;
class IHello : IUnknown {
public:
virtual int STDMETHODCALLTYPE Print()= 0;
};
IHello* pIHello;
hr=CoCreateInstance( CLSID_Hello, NULL, CLSCTX_ALL, IID_IHello, (void**)&pIHello);
pIHello->Print();

575 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 14:31:29 ]
IDLを書いて、midlでタイプライブラリにコンパイルして、typelib型のリソースとしてリンクすればいいんじゃなかろうか。

576 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 16:28:14 ]
Ubuntu (amd64) 上でのGDC (amd64) で、Tango使えますか?
↓ここには、バイナリはi686用しか用意してないって書いてますが...
www.dsource.org/projects/tango/wiki/GdcDownloads

ソースから自力コンパイルするといいのかしらん。


577 名前:573 mailto:sage [2008/01/25(金) 16:46:13 ]
>>575
VisualStudioで適当なActiveXプロジェクトをつくって
そこでできたresファイルをDMDにくわせたら・・・
うをを、登録できた!
これで575さんの言うとおりの事をやればいける予感です
 ありがとうございます!

578 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 19:00:57 ]
pure関数ってconst関数となにか違うの?

579 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 19:14:37 ]
結果が引数だけに左右される関数。
CTFE出来る関数は純粋関数。

580 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:55:01 ]
副作用が無い関数か。
ところでpureキーワードの説明、どこに載ってる?



581 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:02:56 ]
>>580
news://news.digitalmars.com:119/fn1p18$aem$1@digitalmars.com

> > Thanks! Are there any short-term plans to do anything with 'pure',
> > or are you just reserving the keyword (as was done for 'macro')?
>
> It's just to reserve it.

582 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 08:24:35 ]
emacsのflymake使えるの?
使えたら設定の仕方教えてください。

583 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:36:06 ]
【レス抽出】
対象スレ: D言語 Part16
キーワード: の?

抽出レス数:26

584 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:39:12 ]
>>582
ちょっとはぐぐればいいのに

585 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:44:20 ]
教えてください。
と丁寧に頼む割りに
使えるの?
というたずね方。

つまり
教えてください。
は形だけ丁寧にしたってことだね><

586 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:48:30 ]
>>585
細かいぞ、と初レス

587 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:12:01 ]
kmonos.net/alang/d/ がみえないよ(TT)
ど、どうしたのかなぁ・・・

588 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:30:55 ]
>>587 少しはさがせよw
www.kmonos.net/alang/d/1.0/
www.kmonos.net/alang/d/2.0/

589 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:36:51 ]
>>588
いやいや、更新中だったと思われ
/2.0フォルダが無かった
乙です。お世話になってます。>inaba氏


590 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:33:08 ]
久々に一日みっちりコード書いたけど、
string回りでエラー出すとinvariant(char)[]がうじゃうじゃ見えるのが鬱陶しいー。
文字列=>文字列の連想配列とか使うともうわけわからん。
stringがクラスになる日はもう来ないのかなぁ……

ところでDで設定ファイルを扱うとなると、何が定番だろう。



591 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:40:04 ]
iniとかyamlとかでいいんじゃね

592 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 17:41:01 ]
ふとC++を知っている人にD言語のコードを説明するとき、ベースは似たようなものだから説明も少しでいいか…と思ってたら、
withだのsyncronizedだのscopeだの型推論だのプロパティだのとD節全開な自分のコードがそこに広がっていた。

(C++やJavaさえ知っていれば)習得が容易というのはDの売り文句なはずだけど、
誰かヲルタたんを止めないと…この調子でいったら……とおもった。
まぁ個人的にはバッチコイだけど。

593 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 17:49:42 ]
syncronizedはJava、withはVBやJavascriptにあるから、それなりに知名度あると思う。
scope属性はC++のauto属性、scope文は他の言語では見たこと無いなぁ。

594 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:13:15 ]
scope 文は C# の using 文じゃないの?

595 名前:593 mailto:sage [2008/01/27(日) 18:30:47 ]
間違えた。scope文じゃなくてスコープガード文ね。

596 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:06:04 ]
>>590
全然関係ないけど、うちの同僚が「久々にムッチリコード書いたぜ」ってメールだしてきたのを思い出してワラタ


597 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 21:27:15 ]
>>595
boostにスコープガードなかったっけ。

598 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 23:19:11 ]
エントリポイントってmain固定?

599 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 23:28:13 ]
main
WinMain
DllMain
の3つじゃなかったかな

600 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 08:40:53 ]
D1→D2の違いまとめ、だそうだ
www.digitalmars.com/d/2.0/features2.html




601 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 17:32:47 ]
 Version D 2.011   Jan 25, 2008
New/Changed Features

    * Re-enabled auto interfaces.

Bugs Fixed

    * Bugzilla 1072: CTFE: crash on for loop with blank increment

更新内容が最近寂しいのは、そろそろ3.0ですよってことなのだろうか

602 名前:デフォルトの名無しさん [2008/01/29(火) 17:46:00 ]
>>601
>そろそろ3.0ですよってことなのだろうか

だめだはやくウォルタンを止めないと・・・

603 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:30:36 ]
D2は黒歴史ってことなのか

604 名前:デフォルトの名無しさん [2008/01/29(火) 18:54:58 ]
その問いにはまずD1.0が黒歴史か否かを答えねば

605 名前:デフォルトの名無しさん [2008/01/29(火) 19:54:59 ]
早くtangoを標準にしてくれ...

606 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 20:00:45 ]
tangoは命名規則きもちわるいんだよなあ

607 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 20:58:43 ]
だよなー
どうして推奨の命名規則を守らないのか
訊いてみたいが言葉の壁ががが

608 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:05:01 ]
auto interfaceってなんだっけ。

609 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:00:09 ]
tangoキモいキモい言いながら、実際に使ってみるとphobosよりもいい感じなんだよなぁ

610 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:08:47 ]
tangoはStdoutのopCallのオーバーロードがきもすぎ。
C++のシフト演算子よりも寒気のする記法があるとはおもわなんだ。



611 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 02:05:01 ]
>>610
>C++のシフト演算子よりも
そんなまさか

612 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 02:32:17 ]
>>609
そうなんだあ・・・勉強してみようかな

613 名前:デフォルトの名無しさん [2008/01/30(水) 02:35:20 ]
おまいらキモイキモイ言いたいだけちゃうんかと

614 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 03:38:33 ]
opCall使わないほうのやつなかったっけ?

615 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 07:10:43 ]
foo("")(1)(2)(3)(4)(5); みたいな形だっけ?

616 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:21:17 ]
Stdout("foo")(bar)とかもう何ひとつ分からない。
「標準出力に"foo"、barを書き込む」って言わせてほしいのに、
「barを"foo"を標準出力したものする」と言わされるという不思議。

あ、なんか書いてて「標準出力って動詞じゃね? ”標準出力する”て自然じゃん」て思えてきた……。
「"foo"を標準出力先する」 うん、これならちゃんと不自然だ。


んあ? API Index見たら、tango.group以下のだけちゃんと小文字だな。
tango.group.collectionならtango.util.collection以下を全部public importするのか。ほほー。

617 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:45:39 ]
実際はこういうことをやってるだけなんだよな

auto o = Stdout(1);
o = o(2);
o = o.newline();
o = o(3);
o.newline();

618 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:47:59 ]
newlineをメソッドにしちゃうあたり、神経を疑うわ

619 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 14:39:47 ]
無理にopCallのを使わなくても、tango.io.Print 使えばC#形式で使える。

620 名前:619 mailto:sage [2008/01/30(水) 14:52:34 ]
すまん。tango.io.Stdout だった。classがtango.io.Printな



621 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 19:48:19 ]
2.011ってどこにあるの

622 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 19:49:55 ]
をるたんのマシン

623 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 17:09:33 ]
2.011は落とさせる気はないのか

624 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 17:18:11 ]
まえもあったな、こんなこと。

625 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 17:21:11 ]
作りかけので更新して気づいてないんじゃね。
それか気づいてても直すの面倒なだけか。

626 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 17:44:50 ]
D2.0でコンパイル通るGUIライブラリないかね。

Winだけで動けばいいから、あまりごてごてしてなくて、
普通にWinAPIのオブジェクト指向ラッパみたいなのでも構わないんだが。

627 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:53:43 ]
>>626
豊富な日本語ドキュメントもほすぃ

628 名前:626 mailto:sage [2008/01/31(木) 22:05:19 ]
どう探しても無いみたいだから、自分で作るかなあ。
激しく車輪の再発明なわけだが、勉強にはなりそうだし…


時代はWPFに遷りかけてるのに一体何をやってるんだか。

629 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:16:13 ]
>>628
完成したころにD3.0が…

630 名前:デフォルトの名無しさん [2008/01/31(木) 22:57:26 ]
さっきDFLとWinAPI同時に使おうとしたらエラー出て使えなかった。
SetWindowsHookExとDFLのフォームを使いたかったんだけどなぁ。

ちなみにWinAPIってのは
www.dsource.org/projects/bindings/wiki/WindowsApi
を利用した方ね。tango内のWin32ではなくて。

...あ、static importすればいいのか。



631 名前:630 [2008/01/31(木) 22:59:50 ]
↑なんでstatic importだよw
そうじゃなくて「選択 import」ね。
でもstatic importも選択importも使ったこと無いなぁ。

632 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:25:04 ]
バージョン1.026とbinding win32apiだけでコンパイルできる
GUIライブラリを使わないでwin32apiだけを使ったウインドウをただ表示するだけのサンプルコードはどこかにありませんか?

633 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 11:14:51 ]
>>632
わなDのが近い。書庫の展開とかやってるけど、main関数はまんま。
つか、その条件ならDじゃなくて、C/C++のサンプルコード探したほうがいいんじゃね?

634 名前:デフォルトの名無しさん [2008/02/01(金) 15:28:53 ]
>>632
www.kmonos.net/alang/wnd/topics/winapi.ja.html

635 名前:デフォルトの名無しさん [2008/02/01(金) 17:39:16 ]
>>634
そこからWin32のバインディングをダウンロードしたいのですが
やりかたがわかりません・・・
TortoiseSVNでやってみてるのですが・・・

636 名前:デフォルトの名無しさん [2008/02/01(金) 18:22:12 ]
あー、あれね。俺も迷った。←SVNよく分からない
ダウンロードは
www.dsource.org/projects/bindings/browser/trunk
の一番下のDownload in other formats: Zip Archiveから出来る。
trunk以下すべてが入ってるけどそこからWin32だけ抜き出せばOK
trunk/win32をブラウザで開いてもZip Archiveのリンク無くて迷った。

637 名前:636 [2008/02/01(金) 18:30:15 ]
ちなみにあれってSVN使えばDL出来るのかな。一応試したんだけどエラーばかりだった。(自分の操作が間違ってた可能性大)

それと今exeファイルのアイコンを変える方法探してるんだけど。。。無理?だよねぇ。
外部ツール使って書き換えでもいいけど、コマンドラインから使えるタイプのものってないだろうか。

638 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 18:40:14 ]
>>636
ををっそんな小さなところに!
ありがとうございます

これすごいですね、DirectX10まである

639 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 18:40:34 ]
>>637
ttp://www5.atwiki.jp/yaruhara/pages/74.html#id_7e0a1665
これ? でいいんかな。試してないんでよく知らんが。

640 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 18:51:33 ]
svn co svn.dsource.org/projects/bindings/trunk/



641 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:00:34 ]
ここで>>550氏の出番ですよ

642 名前:636 [2008/02/01(金) 19:02:03 ]
>>639
サンクス!これで出来た。dsssはresの扱い方知らないとか言ってきたけどw

643 名前:636 [2008/02/01(金) 19:17:50 ]
>>640
なるほどアドレスが違ったのか。そのままwww.dsource.org/でコマンド打ってたらそりゃ無理だ罠。

644 名前:636 [2008/02/01(金) 19:34:46 ]
dsssでも以下のようにするとresをつけれました。
dsss build main.d -L/RC:test.res

645 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:36:41 ]
某所にあったシリアライザーをちっとだけ修正してみました
{{は.diになったときのエラーよけ

ubyte[] serialize(T)(in T t)
{
ubyte[] rv;
static if( is(T==struct) ) {{
foreach(x;t.tupleof)
rv~=serialize(x);
}} else
static if( __traits(isIntegral,T) ) {{
rv=(cast(ubyte*)[t].ptr)[0..T.sizeof];
}} else
static if(__traits(isStaticArray,T)) {{
rv=cast(ubyte[])t;
}} else
static if(is(T U:U[][])) {{
rv=serialize(t.length);
foreach( v; t) {
rv~= serialize(v);
}
}} else
static if(is(T U:U[])) {{
rv=serialize(t.length) ~ cast(ubyte[])t;
}} else {{
assert(0,"unsupported");
}}
return rv;
}


646 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:37:10 ]
template ReturnType(T)
{
static if(__traits(isStaticArray,T) && is(T U:U[])) {
alias U[] ReturnType;
} else {
alias T ReturnType;
}
}

ReturnType!(T) deserialize(T)(ubyte[] t)
{
ubyte* ptr = t.ptr;
return _deserialize!(T)(ptr);
}



647 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 19:37:54 ]
private ReturnType!(T) _deserialize(T)(ref ubyte* t){
ReturnType!(T) rv;
static if(is(T==struct)) {{
foreach(i,x;rv.tupleof) {
static if(__traits(isStaticArray,typeof(x)))
rv.tupleof[i][]/*x[]=*/=_deserialize!(typeof(x))(t)[];
else
rv.tupleof[i]/*x=*/=_deserialize!(typeof(x))(t);
}
}} else static if(__traits(isIntegral,T)){{
rv=*cast(T*)t;
t+=T.sizeof;
}} else static if(__traits(isStaticArray,T)&&is(T U:U[])){{
rv=cast(U[])t[0..T.sizeof];
t+=T.sizeof;
}} else static if(is(T U:U[][])){{
int len = _deserialize!(size_t)(t);
rv.length= len;
foreach( i; 0..len) {
rv[i]= _deserialize!(U[])( t);
}
}} else static if(is(T U:U[])){{
int len = _deserialize!(size_t)(t);
rv= (cast(U*)t)[0..len];
t+=len*U.sizeof;
}} else {{
assert(0,"unsupported");
}}
return rv;
}

だれか連想配列たのむ

648 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 20:04:16 ]
>>647
単に長さを最初に入れて、キーと値を交互にserializeして詰めていけばおkじゃね?

649 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:04:22 ]
こういうの見るとC++はつらかったな・・・と思いだす

650 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:36:59 ]
>>633-634
どうもです。
そこの気合いの入った例のコードをとりあえずコンパイルしてみました。
何度かエラーが出たりしましたが何とかコンパイルできました。

出たエラーは
tchar.dのtc.TtoW().toUTF8()の部分。
no property 'toUTF8' for type 'int'といわれてしまった。
これはほかのサンプルソースを拾ってきて学習しているときにも、同様の形式でよく出た。
javascriptでこういう書き方を良くやったけど、出来ないのかな?
toUTF8(TtoW(tc))にしたらコンパイルは通った。

後はインポートするファイルがどれかわからなかったのと、
リンクするファイルもどれかわからなかった。
で、コンパイルのコマンドラインはtcharを同じディレクトリにおいて
dmd test tchar shell32.lib win32.lib main.def -version=Unicode

import win32.core;
import win32.shellapi; // DragQueryFile 等
import tchar;
import std.windows.charset;
をインポートしたら通った。

tchar.dの方は
module tchar;
import win32.windef;
import std.utf;
import std.string;
private import win32.winbase;
で通った。



651 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 00:52:04 ]
ちょっとOpenGLでも触ってみるかと思って
Derelict落としてchar[]をstringに置換したりしつつdmdに突っ込んでみたら
例のAssertion: t->decoで泣ける。
>>550を見つけて神かと思ったものの、
問題の箇所を見つけるのはなかなか大変そうだ……早く直してくれぇ。

あと.di食わせたら"Error: unrecognized file extension di"とか言われてしまった。
まさか仕様じゃないよな……?

652 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:51:11 ]
>>651
.diはimportに使うだけで、コンパイラに与えるものじゃないよ。

653 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 08:26:57 ]
>>648
もうちょっとだけがんばってみた
www.kmonos.net/alang/dee/diki7/serializer


654 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:20:30 ]
>>653
ReturnTypeのinvariant外しが気になるなぁ。
ReturnTypeはinvariantを外さないようにして、invariantを外すMutableReturnTypeを作って、rvの型をMutableReturnType!(T)にして、returnをcast(ReturnType!(T))rvにすると良いと思うよ。

655 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:25:05 ]
>>654
それをやったらかなり使えそうだね。。って
車輪の開発じゃね?どっかに絶対ありそう。


656 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:42:32 ]
>>655
phobosのstd.conv.toが近いような。
マージできる予感?

657 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:56:02 ]
それって、tangoのReaderとかWriterとかじゃないの?
残念ながらD2.0には対応してないけど。

658 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:41:35 ]
やっぱりTangoにはあったか

659 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:19:23 ]
   /⌒ヽ
  / ´_ゝ`)すいません、ちょっと場所お借りしますよ・・・
  |    /
  | /| |
  // | |
 U  .U

D言語BOFを
オープンソースカンファレンス2008 Tokyo/Spring www.ospn.jp/osc2008-spring/
セミナー会場にて開きます。

日程:3月1日(土) を希望していますが未定です。
会場:日本電子専門学校 7号館(東京都新宿区・JR大久保駅徒歩2分)
ustreamか何かで中継する予定です。

スピーカー
- k.inaba : D言語リファレンス 日本語版 わかったつもりになるD言語
- ABA : ABA Games
- shinichiro_h: SDL bindingほか
- bero: wxD

f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF

                          /⌒ヽ
                         / ´_ゝ`)それじゃ、お騒がせしました・・・
                         |    /
                         | /| |
                         // | |
                        U  .U


660 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:32:22 ]
>>659
俺地方だから、高嶺の花。
動画、マジで配信してください。



661 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 21:04:08 ]
>>659
中継じゃなく、Stage6とかニコニコにUPでお願い。

662 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:44:13 ]
>>659
わざわざ言わなくても出ると思うけどページに当日レポうp頼むね

663 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:45:27 ]
>>659
あ、行きたい


664 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 23:07:05 ]
>>659
期日までに今作ってるものが形になったら見せびらかしにいくかも。

665 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 23:15:08 ]
2.0でDirectX10アプリ納品したって勇者も来ないかな

666 名前:デフォルトの名無しさん [2008/02/02(土) 23:21:04 ]
>>659
俺も地方だから無理。
ってか東京に住んでたらちょっと駅数個行くだけで有名人の講演が聴けたりするんだよな。
上京したことない俺にとっては、そんなの考えられない。イイナ...

667 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 23:40:42 ]
>>666
歩いて10〜20分程度置きに駅があるから実は数駅ではすまないwww

668 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 23:47:18 ]
>>665
行く予定です

669 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:14:15 ]
>>665
ウォルタンを呼ぼうぜ!

670 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:29:26 ]
>>666
はやく上京しちゃいなよ!
田舎で競争もせずにボーっとしてちゃ
技術の発展なんてありえないぜ!



671 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:42:39 ]
>>669
なんにしろ、こういう事を日本でやってるということを伝えねばなるまい

672 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:26:18 ]
ここに投稿してきていいかな
ttp://www.digitalmars.com/webnews/newsgroups.php?search_txt=&group=digitalmars.D.announce

673 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:12:46 ]
>>672
てっきり関係者が投稿するんじゃないかと思ってたんだが・・・

674 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:39:49 ]
>>672
やっていいんじゃない?

そこで見つけたんだけど、DでOSをつくろうとしてる人たちがいるね
ttp://www.slate-project.org/start

675 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:03:13 ]
>>672
まだ日時とか確定じゃないんでちょっと待ってくれ


676 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:51:39 ]
ustreamは中継と録画の両方が公開できるらしいので挙げたまでで、
どの配信方法がいいのかよく知らない。
実のところそんなんやったことはおろか、webcamもノートPCも持ってない。

ただ漏れも昔は地方在住だったから気持ちはわかるので、どうにかしたいと思った。
いざとなったら中古ノートでも買う気だけど、

みんな、オラにちからをわけてくれ


677 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:53:32 ]
>>676
会場にそういうシステムはないの?
ノートPCやWebcamとかは大学から借りれそうにも思うけど

678 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:54:20 ]
>>676
あとたぶん日本語オンリーだよね?
難しいかもしれないけど英語通訳がいればいいのにね

679 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:57:04 ]
>>672
関係者以外が投稿するのはどう考えても迷惑だろ
書かれた方もどう反応しろと

680 名前:デフォルトの名無しさん [2008/02/03(日) 17:51:25 ]
>>673 >675 >679
了解しました

>>674
この辺がしびれるあこがれるw
Importance: Programming environment > Server > Users

>>676
ディレイ中継でもいい気がする



681 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:03:07 ]
>>676
途中で切れると嫌なので、peercastで流してホスィ。

682 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:31:12 ]
ustreamはチャット連動なのがいいよね

683 名前:デフォルトの名無しさん [2008/02/03(日) 21:00:47 ]
Dってかんたんなのか?
Cでウィンドウ表示するだけで、めっちゃ長いプログラムをコピーしなきゃいけないんだが。

684 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:05:25 ]
> ウィンドウ表示
それは OS の API やライブラリのレベルではないか?

685 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:09:21 ]
>>684
そのとおりだぜ

686 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:46:35 ]
とはいえ標準ライブラリにGUIが無いのは確かではある。

wxDのスピーカーの人って日本人?

687 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 22:51:53 ]
>>683
ライブラリ化されていなければ同じ手続きを踏むことになる。
言いだしっぺの法則発動しとく?

688 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:23:49 ]
HDハンディーカムとかで録画して後日公開がいいんじゃね?
webcamだと解像度低すぎて、文字とか映されたら全然読めない気がする。


689 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:56:32 ]
>>688
が撮影
>>678
が英語字幕作成
>>661
が変換してうpしる


690 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 00:46:40 ]
>>689
つまり
>>687 言いだしっぺの法則発動しとく?
ってことだなw



691 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:21:34 ]
言いだしっぺの法則便利すぎわろた

692 名前:デフォルトの名無しさん [2008/02/04(月) 14:01:33 ]
>>689
字幕作成と変換はデータ送ってもらって家で作業できるからいいけど、撮影のために会場に行かなきゃならない>>688はきついなw

693 名前:デフォルトの名無しさん [2008/02/04(月) 14:04:44 ]
>>683
ウィンドウ操作は言語がどうこうじゃないな。
でもDが扱えるGUIライブラリはたくさんあるから、使いやすいのもある。はず。
今DFL使い始めだけど、印象は良い感じ。

694 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 14:33:25 ]
DFLってD2.0で使えますか?

695 名前:デフォルトの名無しさん [2008/02/04(月) 14:35:53 ]
多分使えない。
俺はtango+DFL+DMD1で使ってる。tangoも2使えないからな...

696 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 16:51:12 ]
Dで書いてて
「これこれ!これがDの醍醐味っていうか力だよねー」
みたいなのはありました?

697 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 17:26:43 ]
C++からみたらね、Dは配列がすっごい便利だと思う。
スライスとリサイズと結合が簡単にできてGC搭載。メモリの負荷はどうなってるか知らないけども。
あれさ、配列が無責任にリターンできる感動は忘れがたい。

で、これの劣化版をC++で実装してみたんだけど、俺にはclass3個(カウンタ、アロケータ、それ)必要だったから保守が面倒。
参照カウントも正しいかわからんし。独自規格っぽいし。

698 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 18:15:33 ]
>>697
けど数値シミュレーション屋からするとDの配列はまだ行列演算が実装されてないから不便w

699 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 19:34:47 ]
ttp://www.kmonos.net/wlog/82.html#_2031080204
Descentの気合いに鼻血吹いた

700 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:05:34 ]
>>699
正直勃った。



701 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:15:23 ]
これはEclipseに乗り換えざるを得ない…

702 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:22:34 ]
>>698
FORTRAN みたいな配列演算ができればいいのにね、
って前にも言った事がある気がする。

703 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:31:53 ]
>>702
並列演算最適化の意味も含めてその機能はほしいんだけどねえ。

real[4][4] a, b, c;
c = a * b;

いいような悪いような。
構文解釈のあいまいさを除かないと無理ぽ。
動的配列と静的配列が同じ構文で扱えるのも利点のひとつなだけに。

704 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:39:06 ]
ベクトル演算はずっと昔からFutureのところに書いてあるよね。

どうするか決めかねてるのか、単に他にやりたいことがあって気が回らないだけなのか。

705 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:56:50 ]
extern(Windows){int Beep(int, int);}
void main(){ Beep(2000, 30000); }
このコードを
EXETYPE NT
SUBSYSTEM WINDOWS,4.0
というdefファイルと
dmd main win.def
というコマンドでビルドすると、しばらくマウスポインタがバックグラウンドで作業中のもの(砂時計つき)に変わるんですが、
何ででしょうか?

706 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 21:07:47 ]
ビルドしたexeを実行すると、でした。

707 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 21:13:07 ]
Visual Dはまだかね

708 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 21:13:24 ]
Fortran は嫌いではあるが、
配列演算に関しては優秀だと思う。

709 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 21:25:58 ]
>>701 禿同
これで秀丸ともおさらばか

710 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 21:29:04 ]
>>708
はげどう
Dに実装するならぜひFortanライクな配列演算を実現して欲しい
それなら数値計算屋にもアピールできる



711 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 22:02:53 ]
>>705
30秒間音なってるから。耳壊す気ですか。

712 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 22:06:45 ]
2kHzはうるさいなw

713 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 22:12:00 ]
>>699
時代を一足飛びですなぁ。これがうわさの伝説のIDEか!!

714 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 22:14:12 ]
stringが型名として認識されないなあ。
どうすればいいんだろう。

715 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 23:16:49 ]
>>699のおかげでEclipseを使えるようになりました!
今では女の子にモテモテです!

716 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 23:46:43 ]
これって3.2.xじゃないといかんの?
ついうっかり3.3.1.1落としちゃったんだが


717 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:36:17 ]
>>716
同じく3.3.1.1だが、普通に動くっぽい。
まあ、あんま詳しくは使ってないが。

718 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:59:22 ]
>>697
リターンといえば構造体も、
S f(){
S s;
s.a = 1;
return s;
}

void f(ref S s){
s.a = 1;
}
にコンパイラが最適化してくれて、とても速い、とかあるらしい。

719 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:00:58 ]
戻り値最適化は C/C++ でも一般的だ

720 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:04:55 ]
Dにちょっと興味を持って
ttp://www.kmonos.net/alang/d/1.0/class.html
とか
ttp://www.digitalmars.com/d/1.0/class.html
とかを見てみたんですけど、public, private
がどう違うのかみたいな事が見当たらず、やや
当惑してます。
細かい所を調べたい時は、どこを見たらいいですか?




721 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:06:29 ]
>>720
www.kmonos.net/alang/d/1.0/attribute.html

722 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:06:55 ]
別にそこは講座なわけでも仕様書なわけでもないから、
そこを読むには C++ や Java は前提知識と思った方がいい。

723 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:12:23 ]
仕様書でしょ。

724 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:18:14 ]
というか、C/C++辺りをを知らない人にとってDのいいところってなんだ。
開発途上の嫌なとこが目につくだけのような気がするが。

725 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:18:55 ]
Descent、とうとう日本語含んだソースでも正常に動くようになったね。ヽ(´∇`)ノ
伝説のIDE候補

726 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:22:28 ]
>>724
少なくともいちばんはじめの言語学習には向いてないよなw

727 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:27:26 ]
Descent、クラスのアクセス指定をC++式の
public:
  void func() {
  }
とかで書くとインデントがおかしい。俺だけかな。
フォーマッタの設定色々弄ったんだけど(弄ったから?)上手くできん。
Java式か、もしくは中括弧使えばいいんだけども。みんなどれ使ってるの?

728 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:27:57 ]
>>721
まさかと思ったら、もう返信が…
dクスです。
属性のとこにあったんですね。

729 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 08:45:40 ]
>>711
30秒なのはサンプルだからです。
他に簡単に長いこと起動させるのを思いつかなかったので。
その30秒のうち、最初の6秒間くらいはポインタが砂時計つきに変わるんです。
ほかのコンソールアプリケーションを>>705のdefファイルを使ってビルドしたときも
同様に砂時計つきに変わるので、どうしてかと思ったのです。

730 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 09:24:58 ]
>>669
無茶言うな、と思ったけど
BO開くから日本のDユーザーにビデオかなんかでメッセージくれない? といったら

>That sounds great! What is the event where there will be the BOF? -Walter

割と好感触

>>672

投下してきました

このへん自分じゃ気づかなかったのでここに書いてみてよかった




731 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 11:01:15 ]
>>730
をるたーーーーーんんんん

732 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:00:55 ]
EclipseのDLページに行くと落とせるファイルが
いくつもあるんだけどどれを落としたらいいですか?

733 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:04:40 ]
>>732
3.3系列のWindows向けC/C++版でインストールしたけどうまくいったよ
まだほとんどいじってないが。

734 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:40:54 ]
だめだ、なぜだかわからないがDescentが
"No features found on the selected site" ってなるorz

-clearしてんだけどなぁ…

735 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:41:39 ]
>>730
欲張るなら
オンライン講義かディスカッションができないかな?w

736 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:51:34 ]
どちらかというとディスカッション希望

737 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:51:55 ]
ところでBOってなに?

738 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:52:45 ]
>>736
>>735の追記だけどたまに国際会議や研究会でそういうのがあった
スクリーンに向こうの映像を表示してオンラインディスカッションとか

739 名前:734 mailto:sage [2008/02/05(火) 13:54:17 ]
descent.ui_0.5.0.20080203.jar から descent.ui_0.5.0.20080204.jar にあげるときに descent.ui_0.5.0.20080204.jar  アップし忘れてるみたいだorz

全部落としてsite.xml編集するか…

740 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:57:49 ]
>>737
BOF
Birds of a Featherかな?

初めて聞いたが情報系だと一般的な呼称なのかしら?



741 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 14:47:09 ]
>>740
この手のイベントでは割とよく聞く言葉だな

742 名前:デフォルトの名無しさん [2008/02/05(火) 14:51:46 ]
descent.ui - 0.5.1.20080204
見つからない。どこいったんだ〜〜〜。
やっと。やっと伝説のIDEを使えると思ったんだけども。

743 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 14:53:48 ]
>>726
GCのおかげで気楽に関数を書けるし、
慣れ親しんだ.exeファイルを自分で作れる点も考えると、
かなり初学者に向いた言語と言えるんじゃないだろうか。

特にGCが無いと、結果を受け取るバッファへのポインタを引数で渡すとか、
戻り値はエラーコードのために空けとかなきゃとか、
必要なメモリサイズをあらかじめ調べとかなきゃとか、
関数を作って使うだけの時点で既に敷居が高くなる。
その制限から抜け出せないまま育つと、
複雑怪奇なシグニチャの関数を書いたり、そもそも関数を書かなかったりして……ああ畜生、
プログラミングは設計だっつってんだろダラズ共が!

744 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 14:54:40 ]
>>741
そか
計算物理畑の人だからかわからんかったw

745 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 14:56:00 ]
あげちゃった。ORZ

って>>739にかいてあったか。

746 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 14:59:03 ]
>>743
最後の2行でワラタ

747 名前:746 mailto:sage [2008/02/05(火) 15:08:17 ]
変な意味で取らないでほしいんだが、
なんか経験がにじみ出てるみたいでちょっと面白かった。

748 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 17:38:05 ]
>>747
わかってまんがな

749 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 19:06:15 ]
変な意味ってどんな意味?

750 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 20:58:55 ]
>>743がおかしなことを言っているからワラタのではなく、
むしろ>>743の言ってることが妙に真に迫っていたことにワラタんだ」
ってことでしょ。



751 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:25:26 ]
>>734 >>742 ちゃんとDescentを入れられるようになったよ

752 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:40:17 ]
eclipse 使ってみたけど動作が不安定な感じだなぁ。
最初、保管機能はきいてるのに何故かセマンティックエラーでまくるし、
デバッグもブレークポイントはきくのにローカル変数が表示されず。
その後、何かの拍子にいきなり正常に動作し始めた。
機能はすごいんだが、eclipse を使い慣れてないせいでめちゃくちゃ使い辛い・・・

753 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:48:42 ]
SDL_rotozoomを使いたいんですがヘッダの部分は
shinh.skr.jp/d/porting.html
で入手して、中身は
www.ferzkopp.net/Software/SDL_rotozoom/
で入手して、MinGWのgccで -c でオブジェクトファイルを吐かせて
ゲームのソースとDMDでリンクしようとしたんだけど
「.o じゃなくて .obj しか対応してないよ!」
みたいに怒られたので困っています。
助けてください。
これが無いとスプライトの拡縮が出来ないんです。

754 名前:746 mailto:sage [2008/02/06(水) 00:49:12 ]
>>750
そそ。そんな感じ。

755 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:52:48 ]
"Hello"と"return"でスペルミス指摘されたのでぶち切れてスペルチェッカー切りました

756 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:03:43 ]
>>751
一個前の入ったね。
VCに慣れた身としてはちょっと戸惑ってるけど問題なさげ。

>>755
すげー高機能だなぁ。。。

757 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:05:13 ]
>>753
dll作るがよろし。
その後implib。

758 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:06:29 ]
Eclipse試してみたら
import std.stdio;
~~~~~~~~~
writefln(
~~~~~~~
とか言われて俺涙目w
時間あるときにひとつずつ設定していかないとダメだな・・・

759 名前:752 mailto:sage [2008/02/06(水) 01:06:38 ]
eclipse を起動しなおしたらまたうまく動作してねーやorz
なんか別の言語のパーサが動いている気がする。他の言語は切った方が良いのかな。

>>755
スペルチェックだけなら良いんですけど、ddoc 表示もできない。
正常動作中は import モジュールの上でF2押すと説明文出たのに、
セマンティックエラーが出てる状態だと
「単語`xxxx` のスペルが正しくありません。」なんてエラーが出る。

760 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:07:23 ]
ずれた
import std.stdio;
    ~~~~~~~~~



761 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:07:47 ]
>>758
ちゃんとコンパイラの設定してるかい

762 名前:753 mailto:sage [2008/02/06(水) 01:08:05 ]
>>757

了解

763 名前:デフォルトの名無しさん [2008/02/06(水) 01:18:11 ]
>>753
gccじゃなくて、Digital Marsのdmc か Borlandのbcc
にオブジェクトファイルを吐かせるといけるとおもわれまる。

764 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:21:56 ]
Linux(ubuntu)でhello world書いてみたらFLOCKがundefined言われた。
ソースみてなんとなくGCC_IOを定義するようにしてみたら行けたけど、これでいいのだろうか。

あとstringでエラーが出る。CompilerVersionちゃんと2.xにしたんだけどなぁ。
alias見てくれないのかなぁ。

765 名前:753 mailto:sage [2008/02/06(水) 01:24:55 ]
>>763

了解。まずそっちをやってからDLLをやります。

766 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:36:42 ]
>>764
D2.0対応はまだ不完全で、invariant()まわりでちょっとバグがあるっぽいこと書いてあった。

767 名前:753 mailto:sage [2008/02/06(水) 01:37:57 ]
tokyo.cool.ne.jp/sdl/sample.html

ここでDLLを落としたら簡単に出来ました。ありがとうございました。

768 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:46:36 ]
>>761
お ありがとう コンパイラの設定ができてなかったんだね
プロジェクト作成時に設定したらうまく行きました

769 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:57:50 ]
>>766
そうなのかー。サンクス。

まさか本当にAutoCompleteが(曲がりなりにも)利用できる日が来るとはな……。
ひとつの到達点だな。いち早くたどり着いてくれたのがdescentで嬉しいEclipseユーザ俺。

770 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 09:49:40 ]
意味のあるaliasと意味の無いaliasの区別がつきません><



771 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:18:32 ]
しかしPoseidonがEclipseベースなんだからDescentと共同開発でもしてくれればいいんだけどな
俺のEclipseはDescent専用なのでこれのためだけに100M近く使うのがもったいないというだけだがw

772 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:25:29 ]
PoseidonはDWTベースというだけで別にEclipse関係なかったような

773 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:45:39 ]
例のBOFって、Dを試しに使い始めました程度の人でも
参加していいもの?
行くと場違いだったりしないかな。


774 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 14:27:54 ]
福岡ならいけたのに(´・ω・`)

775 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 14:39:19 ]
遠いw

776 名前:デフォルトの名無しさん [2008/02/06(水) 17:25:26 ]
ttp://builder.japan.zdnet.com/news/story/0,3800079086,20366701,00.htm
これも「D」言語?

777 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:52:02 ]
マイクロソフトはどうしてかぶらない名前に出来ないのか。

778 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:52:24 ]
MSらしい嫌がらせだよな。
Borlandの次は、をるたんが標的なのかw

779 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:56:23 ]
どーせコードネームだろ。
本リリースではXのつく名前にするに違いない。

780 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:12:34 ]
>776
DってDQNの略だよ。



781 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:23:56 ]
>>773
そんなの大丈夫だろ

782 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:16:41 ]
MSに目をつけられるほど完成度の高い言語だったのかw

783 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:24:24 ]
MSが肩入れすることで、ようやくD言語も日の目を見るな。

784 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:56:33 ]
やばいwD言語の検索結果が少しM$に侵食されてるw

785 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:01:49 ]
>>783
おいおい。「D」と名の付く全く別の言語だぞ。
> 「非開発者を対象とした宣言型言語」

ただでさえD言語の情報はWEB検索しづらいのに、
MSのせいで更に困難に・・・

786 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:03:59 ]
SolarisにDスクリプトってのがあったよな

787 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:13:21 ]
何処かにEclipseのわかりやすい使い方無いかな
どこをどうさわっていいやらさっぱりだ

788 名前:デフォルトの名無しさん [2008/02/07(木) 00:13:45 ]
>>776
吹いたw

ところで、
module main;
import tango.io.Stdout;
void main(){
  C c1 = new C();
  c1.Func();
  Stdout.formatln( "&c1 = {:X8}", &c1 );
}

class C{
  void Func(){
    Stdout.formatln( "Func-this = {:X8}", &this );
  }
}
を実行すると
Func-this = 0012FE74
&c1 = 0012FE84
となって、二つが違うアドレスなのはなぜ?
C++で同じようにthis調べると一緒だったけど。

789 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:21:21 ]
>>787
EclipseWiki
ttp://eclipsewiki.net/eclipse/?FrontPage
Eclipse入門
ttp://www.javadrive.jp/eclipse3/index.html

790 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:24:16 ]
>>788
&c1はc1があるスタックを指していて、&thisはthisがあるスタック(thisはアセンブラ的にC.Funcの引数として渡される)を指してる、多分。



791 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:34:22 ]
>>789
ありがたや

792 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:41:46 ]
>>788
Dのクラスは参照型だから、C++でいうとC*に相当する。
だから、cast(void*)c1 == cast(void*)this; になるはず。

793 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:54:54 ]
>>788
Cをstructでやってみれば、C++と同じ結果になると思うよ。

794 名前:788 [2008/02/07(木) 01:18:41 ]
>>792
なるほど。その通りになりました。
参照型。。。あれよく分からないんだよなあ。

795 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:25:54 ]
struct内でもthisはポインタだった気がするんだけどまぎらわしいようそうでないような

796 名前:788 [2008/02/07(木) 02:19:19 ]
>>795
試してみたら、構造体ではthisは普通にポインタみたいです。


797 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 04:27:40 ]
synchronized ( Expression ) ScopeStatement

これの存在意義がわからないです・・
どなたか教えていただけますか

798 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 08:28:04 ]
Object lock = new Object;
void foo() {
bar;
synchronized(lock) { hoge; fuga; piyo; }
buz;
}
とかでメソッド全体よりも細かい単位でロック制御できる

799 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 08:42:34 ]
>>798
横レス失礼
それって、Mutexとどこか違うの?
逆に、Tangoのtango.core.sync.Mutexって意味あるの?

800 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 08:47:00 ]
ブロックから出れば勝手にロックが解除される



801 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 08:51:39 ]
>>799
要するにMutexだよ。
tangoのMutexはsynchronized文での自動lock/unlockだけじゃなくて、
手動でもlock/unlock/tryLockが出来る
www.dsource.org/projects/tango/wiki/ChapterThreading#Mutex

802 名前:799 mailto:sage [2008/02/07(木) 09:50:33 ]
なるほど、ありがとう。把握した。
大した違いはないけど、より細かいことがやりたかったら
synchronized ( Expression ) ScopeStatement
だの、Mutexクラスだのを使えってことか。


803 名前:797 mailto:sage [2008/02/07(木) 11:41:03 ]
なるほど、Mutexとして使えばいいのですね
ありがとうございました

804 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:04:54 ]
この俺をさらに強固なアンチMSにしてくれたね。
痛い目を見るよ、この結果は。

805 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:20:34 ]
でもぶっちゃけお前スライムより弱いべ?

806 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:50:19 ]
かたやMSは絶好調時のムドーより強い

807 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:53:13 ]
Descent 0.5.1

808 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 18:33:18 ]
tangoの日本語ドキュメントは、何処かで公開されてないですかね?

809 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 18:50:21 ]
Descentつかってる方におききしたいんですが、
デバッグ機能としてのbreak-pointや、watchもばっちりなんですか?

810 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 18:51:32 ]
>>808
今のところこの二つしかない
ttp://shoo.s20.xrea.com/shoo/programing/
ttp://f17.aaa.livedoor.jp/~labamba/?tango



811 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 20:51:11 ]
MSにパクられた
ttp://namidame.2ch.net/test/read.cgi/news/1202382434/



812 名前:808 mailto:sage [2008/02/07(木) 20:52:35 ]
>>810
ありがとうございます。
見て来ましたが、ぜんぜん日本語化進んでないって事ですねw
英語ダメダメだから、安物の翻訳ソフトでも買おうかな。

813 名前:デフォルトの名無しさん [2008/02/07(木) 21:15:01 ]
今Dでキーボードフック(グローバル)を書いてみてるんだけど、なぜか上手くいかない。
ちゃんとDLLからSetWindowsHookEx呼んでるし、SetWindowsHookExは成功してるみたいないんだけどな。
Dだとグローバルフックが出来ない理由ってある?(ローカルは出来た)

もうちょっとコード見直してきます。

814 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:44:24 ]
そーいやD言語でググってたらSunにもD言語があるのを見つけたっけなぁ。
ウォルタンはSunからは何も言われなかったんだろうけど。
Firebirdほど大きな問題にはならない気がするけど、
やっぱややこしいから変えてほしいところだ。

815 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:48:46 ]
Sunのほうが5,6年後でしょ。

816 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:55:14 ]
>>813
グローバルフックなら共有データセグメントとかメモリマップトファイルとか使って、
フックハンドルをプロセス間で共有できるようにしないといけないよ。

ローレベルフックを使うのも一つの手。

817 名前:813 [2008/02/07(木) 22:02:14 ]
>>816
今までずっとそう思ってたんですが、WindowsXP/2000ではCallNextHookExの第一引数はNULLでいいらしいです。
第一引数に何か渡しても無視されるそうな。


818 名前:813 [2008/02/07(木) 22:04:11 ]
msdn2.microsoft.com/en-us/library/ms644974.aspx

819 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 22:06:51 ]
D言語でもお麻衣さんの問題はAPIスレで面倒みてもらったほうがよろしかろ

820 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 22:11:22 ]
MSがD言語作るらしいぞ
headlines.yahoo.co.jp/hl?a=20080206-00000007-cnet-sci



821 名前:819 [2008/02/07(木) 22:12:07 ]
実はVC++2008で書いたコードでは上手くいっているのでAPIというよりDLLの問題かなと。
そのVCで作ったDLLをDのmainから呼び出した場合上手くいきました。

822 名前:813 [2008/02/07(木) 22:13:18 ]
失礼。↑は813です。

823 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 22:14:45 ]
>>820
何回同じ話題振ったら気がすむんだよww
同じスレぐらい検索しろ

824 名前:デフォルトの名無しさん [2008/02/07(木) 22:32:00 ]
>>820
別物なんだよ。

825 名前:デフォルトの名無しさん [2008/02/07(木) 22:36:19 ]
ネームぱくられました

826 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 22:44:43 ]
たぶん、D言語では商標とれないよね。

827 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:06:27 ]
>>813
ソースコード見てみたーい

828 名前:813 [2008/02/07(木) 23:19:49 ]
いろいろしてみたけど結局分からないorz
>>827
というわけで載せるためにソース整形してきます。

829 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:30:07 ]
>>815
あ、ほんとだ。
向こうのnewsでも「"D"も有名になったもんだ =P」なんて皮肉られてる……のかな? 英語ヨクワカラナーイ。

830 名前:813 [2008/02/07(木) 23:50:35 ]
↓DLLのソース
// test_hook.d
module test_hook;
import win32.winbase;
import win32.windows;
static import tango.stdc.stdio;
import tango.stdc.stringz;
import tango.io.Stdout;

pragma( lib, "tango-user-dmd.lib" );

HANDLE g_hModule = cast(HANDLE) null; // DLLのモジュールハンドル
HHOOK g_hHook = cast(HHOOK) null;

extern (C){
 void gc_init(); // GC初期化
 void gc_term(); // GC終了
 void _minit(); // モジュールリスト初期化
 void _moduleCtor(); // モジュールコントラクタ実行
 void runModuleUnitTests(); // 単体テスト実行
}



831 名前:813 [2008/02/07(木) 23:51:14 ]
extern(Windows) BOOL DllMain( HANDLE hModule, ULONG ulReason, LPVOID pvReserved ){
 switch(ulReason){
  case DLL_PROCESS_ATTACH:
   gc_init(); // GC初期化
   _minit(); // モジュールリスト初期化
   _moduleCtor(); // モジュールコンストラクタ実行
   runModuleUnitTests(); // 単体テスト実行
   g_hModule = hModule;
   break;
  case DLL_PROCESS_DETACH:
   gc_term(); // GC終了
   tango.stdc.stdio._fcloseallp = null; // DLLが終了しても標準入出力を閉じないようにする。
  break;
  case DLL_THREAD_ATTACH:
  case DLL_THREAD_DETACH:
   return false;
  }
 return true;
}

export extern(Windows) void HookStart(){
 g_hHook = SetWindowsHookEx( WH_KEYBOARD, cast(HOOKPROC)&KeyboadProc, g_hModule, 0 );
}


832 名前:813 [2008/02/07(木) 23:51:53 ]
export extern(Windows) void HookStop(){
 UnhookWindowsHookEx( g_hHook );
}

extern(Windows) LRESULT KeyboadProc( int code, WPARAM wParam, LPARAM lParam ){
 if( code != HC_NOREMOVE && code >= 0 ){
  MessageBox( cast(HWND)null, toString16z( "Key pushed" ), toString16z( "test_hook" ), cast(UINT)0 );
  return 0; //処理をした。
 }
 return CallNextHookEx( cast(HHOOK)0, code, wParam, lParam );
}


833 名前:813 [2008/02/07(木) 23:53:57 ]
-----------
↓main.exeのソース
// main.d
module main;
import win32.winbase;
import win32.windows;
import tango.stdc.stringz;

pragma( lib, "tango-user-dmd.lib" );

const wchar[] HOOKDLLNAME = "test_hook.dll";
alias extern(Windows)void function() FUNC;
FUNC HookStart, HookStop;

void main(){
auto hMod = LoadLibraryW( toString16z( HOOKDLLNAME ) );
HookStart = cast(FUNC) GetProcAddress( hMod, "HookStart" );
HookStop = cast(FUNC) GetProcAddress( hMod, "HookStop" );

HookStart();
MessageBox( cast(HWND)0, toString16z("フックしています。"), toString16z("main"), cast(UINT)0 );
HookStop();

FreeLibrary( hMod );
}

834 名前:813 [2008/02/07(木) 23:58:15 ]
-----
// test_hook.def
LIBRARY 'TEST_HOOKDLL'
EXETYPE NT
CODE PRELOAD DISCARDABLE
DATA PRELOAD SINGLE
EXPORTS
HookStart @1
HookStop @2
--------
以上です。
環境はtango 0.99.4 ( dmd 1.024 ), Binding Win32API
-Unicodeでコンパイル。

835 名前:813 [2008/02/08(金) 00:03:33 ]
あ、-version=Unicodeのことです;
フック中に他のアプリでキーを押すとMessageBoxを出します。

が、実際は反応してくれません。メモ帳起動->main.exe->メモ帳でキーボードを押す、として反応しませんでした。
さっき気づいたのですが、なぜかほかのコマンドプロンプト上のキーボード操作には反応するみたいです。

836 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:50:18 ]
Dがなんか特殊なことやってんのかもね。
俺もグローバルフックプロシージャ内で try/catch() 文書いたら全プロセスがこけた。
SEHフレームの構築で何かやらかしてんじゃないかと予想してるが。

837 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:00:42 ]
2chにソースはるなボケ

838 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:03:48 ]
罵倒するほどでもないが、読みにくいのは確かだな。

839 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:09:25 ]
【技術】マイクロソフト、新開発言語「D」を開発中[08/02/07]
news24.2ch.net/test/read.cgi/bizplus/1202379742/

840 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:10:40 ]
なんどめだ



841 名前:813 [2008/02/08(金) 01:11:27 ]
すみません、スペース入れようかどうか迷ったのですが結局入れませんでした。
全角スペース挿入だとコンパイルする人が半角に直すのが面倒かと思い、
nbspを入れるのも考えたんですけど、それが一般的なのかわからなかったので、そのまま入れました。
ソースを張るときはどうするのが一般的ですか?

842 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:15:12 ]
1レスに収まりきらないなら、適当にアーカイブ化してどっかのアップローダにでも上げればいいんじゃないかな。
複数ファイルだとビルドするのも面倒だしねえ。

843 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:19:25 ]
>>776
>>811
>>820
>>839

開発開始を宣言しただけなのに大々的に取り上げられすぎだろw

844 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:23:48 ]
>807
stringがエラー扱いにならなくなってるな。ありがたい。

845 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:32:08 ]
おお、Descentがstringをchar[]として認識するようになった。
全体的にautocompletionが賢くなって、aliasの扱いが改善されてるらしいな。
"str".tolower()とかはまだエラーって言われるけど。

846 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:34:21 ]
ttp://blogs.itmedia.co.jp/satohiroshi/2008/02/d-3d55.html
こうやって宣伝に乗っかるわけか。

847 名前:デフォルトの名無しさん [2008/02/08(金) 01:45:45 ]
>>846
ちょw DigitalMars完全否定w

848 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:00:25 ]
tango入れてないので、Phobos用に少し書き換えてやってみたけど、症状ほぼ同じ。
自分とこの環境では、メモ帳が固まったまま応答無くなる。

849 名前:813 [2008/02/08(金) 02:10:22 ]
あ、出来た...
defファイルの
DATA PRELOAD SINGLE

DATA PRELOAD
にすることでちゃんとフック出来ました。
defファイルの書式(メモリ指定あたり)とか調べても見つからなかったからサンプルのまま使ってたけど、ここだったんですね。
C++の方ではdefファイルを書かずに作っていたので普通にフック出来ていたようです。

>>848
試していただいてありがとうございます。

次からは長いコードはアーカイブするなり気をつけますm
あと、defの書式やオプションの解説はどこかにありますか?

850 名前:813 [2008/02/08(金) 02:17:40 ]
勘違い。VC++の方でもdefは書いてたけど、EXETYPE/CODE/DATAの設定が無視されてました。



851 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:25:36 ]
>>849
www.digitalmars.com/ctg/ctgDefFiles.html

852 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 06:06:17 ]
>>846
あれだな、情報操作に一番騙されるのって、「自分の頭で咀嚼する」意欲だけはあるけど、
調べる気があんまり無く、誘導されるままに「自分なりの見解」に辿り着いて満足しちゃうタイプの人間だよな。
この短いブログを書く時間で、D言語が既に存在するかどうかなんて調べられるのに、
「あるかどうか」という事実より、「実はなかったということのようです」という見解をひけらかすほうが大事なわけだ。

まったく思考が発展しない馬鹿のほうが、その点では無害かも。

853 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 07:38:26 ]
製品化してないものは存在しないという考えかもね。
DMDなんて同人サークルが勝手に作った独自言語程度に思われてたらやだな。

854 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 09:26:11 ]
digital marsって会社のポジションがよくわからん。
IT世界的に見たらどれくらいの影響力があるんだろう。

855 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 10:03:49 ]
IT世界とかあやふやすぎるだろ・・・
Cコンパイラ界、ECMAScript界なら 結構いいはずだぜ!

たぶん

856 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 10:37:19 ]
トップページに会社情報がないあたりが何とも。
ウィキペディア(英語のほう)みた感じだと
小規模なベンチャーかな?って思った。

857 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 12:07:13 ]
digitalmarsは本当にWalterタンの同人サークル程度のもんだが。
コンパイラ界でWalter Brightの名前を知らん人間はいないだろ常識的に考えて、くらいの影響力。

858 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 12:21:56 ]
それはともかく次スレからはDigitalMars Dって書かないといかんな
めんどくせえ

859 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 12:39:27 ]
後発がMicrosoft Dって書くもんじゃね?

860 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 12:53:44 ]
>>859 まったくだプリプリ



861 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:38:04 ]
文字コードの変換はこのモジュールを使うしかないんでしょうか。
www.wikiroom.com/sakurai/index.php?DJcode

これを使ってみたんですが、全く同じデータを渡してもたまに末尾にゴミが混じるようで変換時に末尾に〓がついたりします。

862 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 17:53:45 ]
encoding周りをちゃんと実装してるライブラリは見ないね。
iconvとか使ってみるといいかも。

863 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:28:57 ]
>>861
キミがそいつのバグを取ってくれたら、38万の日本のDユーザが喜ぶよ

864 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:56:45 ]
>>668
ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF
>特に仕事に使ったという事例。2chにいたらしい

865 名前:デフォルトの名無しさん [2008/02/08(金) 18:58:46 ]
Eclipse起動しただけでメモリ83MBくってる。。。でかすぎ.
ちなみにVC++2008Expressは28M

866 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 20:15:20 ]
もはやメモリ1G五千円の時代だよ。
28と83なんて大して変わらない。

867 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 20:16:17 ]
誤差だな

868 名前:809 mailto:sage [2008/02/08(金) 20:58:29 ]
>>809
どなたか、よろしくお願いします・・・

869 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:03:13 ]
>865
GoogleDesktopに600Mほど食われたのに比べればどうということはない

870 名前:デフォルトの名無しさん [2008/02/08(金) 21:06:11 ]
>>866
メモリ512MBノート使ってますorz
増設しようかと思ったけど今主流のノートメモリの一つ前のタイプらしい。
新しいノートに変えたときに流用出来ないんで、やめときました。



871 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:12:36 ]
>>866
>メモリ1G五千円

ノートか?
今は樋口一葉で2GB買えるだろw

872 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:14:34 ]
バルクか

873 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:22:32 ]
>>871
そりゃ味を選ばないならいくらでも食えるだろ。

874 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:29:45 ]
>>868
なぜ自分で試さない?
ttp://www.dsource.org/projects/descent/wiki/DebuggingPrograms
ttp://ddbg.mainia.de/doc.html

875 名前:809 mailto:sage [2008/02/08(金) 21:54:48 ]
>>874
うわぁ、すいません m(_ _)m
ありがとうございます!

876 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:07:45 ]
>>873
ノーブランドだったら1GBで英世2枚だよ
メーカー製でも4枚要らない
そのくらいのことも調べずに価格の最新事情を指摘されたくらいで「味を〜」とか騙らないでね

877 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:23:09 ]
何を必死になってるのかさっぱり分からん。

878 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:23:36 ]
言っとくけど俺をあまりナメないほうがいいよ
vipでコテハンやってるしこのスレ潰すくらいの影響力は持ってるから
くだらないことで刺激して後悔しないようにね

879 名前:デフォルトの名無しさん [2008/02/08(金) 22:25:34 ]
>>878
ぺろぺろ

880 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:28:27 ]
この味は! ・・・ウソをついている『味』だぜ・・・



881 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:28:59 ]
じゃあつぶせば?
それとも口だけ?

882 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:30:34 ]
まったくだ

883 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:33:11 ]
>>878




えーと・・・
この場合つっこんだら負けなんだろうな。

884 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:33:28 ]
最近はやってきたコピペだしな

885 名前:デフォルトの名無しさん [2008/02/08(金) 22:34:40 ]
>>884
だよね。さっきSleipnirのスレで同じ文章見かけた。

886 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:35:02 ]
俺もgdi++スレで見たよ

887 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:38:11 ]
他所のスレで見かけたコピペをすぐに使いたくなっちゃう子って可愛いよね。

888 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:41:03 ]
たった3行でここまで哀れみを誘うコピペ作ったやつも凄いな。
俺さっきから得も言われぬ哀れみを感じて表情が微妙なままだ。

889 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:44:51 ]
それマジで言ったん?ソースあんならすぐ出せ
マジなら2ちゃんねら総力を上げて潰すが

890 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:45:30 ]
大漁だなw
お前らコピペだと分かってるならスルーしろよw
それくらいもできないのかこのオタクどもはww



891 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:48:02 ]
この流れは参加しないと勿体ないとおもっちまって。
D言語スレでやるこっちゃないけどな。

892 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:48:38 ]
いまどき、後釣り宣言は流行らねえだろ

893 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:55:02 ]
class Fileを使いforeachで行ごとに処理する場合、
foreachの頭で毎回ディスクにアクセスしてデータを取り出してるんでしょうか?

BufferedFileを使ったら速度が20倍になったんですが。

894 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:59:22 ]
正直釣りや煽りならそういって欲しい派だけどな俺は
釣りも後味良いのと悪いのとがあるんだよな

そういやなんだか2ちゃんねるの中で話されていること(煽りやら学歴厨やネトウヨその他の・・・)を
マジに取ってしまってる人が最近出始めてきてるように思う
こりゃあやばいかもわからんよ10年後は

895 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:01:50 ]
>>893
そうだよ。それも1byteずつReadFileなりreadなりしてるよ。

なんで、ソースついてるのに読まないのか不思議だ。

896 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:03:28 ]
知人の話ではいい年こいた大人が会社で自分はにちゃんねらだのVIPPERだの大喜びで宣伝してるらしい。
年の離れた上司がそんな感じで萎えるとか愚痴られた。10年経たなくとも一部はもう駄目かもしらんね!

897 名前:デフォルトの名無しさん [2008/02/08(金) 23:03:46 ]
Descentでtangoを使う為の設定が分からんorz

898 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:09:49 ]
>>895
そうなんですか。。。
単純な文字列変換なんですがperlより遅くなってしまってどうなってるのかちょっと不思議に思ったので。

ソースは読んでも多分わからないので読まなかったのです。
モジュールの中身を知らなくても動くには動くので今まで気にしたことがなかったのですが。
これからは気にして読んで理解することからはじめようと思います。
どうもです。

899 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:19:08 ]
>>897
TangoのウェブサイトからDMDバンドル落としてきて、
D>Installed Compilersからパスを設定すれば普通に動いたよ。

900 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:27:39 ]
813氏いる?
プログラムを実行してグローバルフックかけた状態で、ファイルのショートカットのプロパティを開いてリンク先を変更すると、エクスプローラがフリーズして電源切るしかなくなるのだが、同じ症状出る?
俺は、これがあるせいでDで作るのをあきらめた過去があって、ほかの人はどうなのかちょっと聞いてみたい。
GDCやVC++だと大丈夫なんだけどな。
ちなみにOSはXP。




901 名前:813 [2008/02/08(金) 23:33:55 ]
>>900
フックの種類は?

902 名前:デフォルトの名無しさん [2008/02/08(金) 23:36:45 ]
>>899
出来ました。設定する前にプロジェクト作って、その後に設定したからエラーのままだったらしい。
設定後に一端プロジェクト消してもう一回作ったらちゃんと動いた。
設定変えたらちゃんとプロジェクトに反映してほしいな。。再起動はさせてたんだけど。

903 名前:900 mailto:sage [2008/02/08(金) 23:40:09 ]
>>901
>>830あたりのコードと同じ、普通のキーボードフック。
tango入れてないから試せないけど、このコードでも同じ症状が出るはずなんだけど。

904 名前:デフォルトの名無しさん [2008/02/08(金) 23:42:23 ]
あげ

905 名前:813 mailto:sage [2008/02/08(金) 23:47:25 ]
>>903
キーボードフック中にリンク先変更で?まさかねーw
と思いつつ試したらフリーズしましたorz|||

906 名前:813 mailto:sage [2008/02/08(金) 23:49:27 ]
しかもタスクマネージャからKILLしても死なないし、CPU使用率0%のまま。
explorer何者だよ...

907 名前:813 mailto:sage [2008/02/09(土) 00:00:01 ]
ちなみにWM_GETMESSAGEフックではならなかった。


908 名前:900 mailto:sage [2008/02/09(土) 00:16:04 ]
仲間がいたw
GDCやVC++だとなんともないから、たぶんリンカが悪いと思うんだけど、モジュール定義ファイルをいくらいじくっても改善しなかったんだよね。

>ちなみにWM_GETMESSAGEフックではならなかった。
WM_GETMESSAGEはすべてのメッセージをピックアップするみたいだから、必要なメッセージを抽出すれば使えるかもしれない。
明日にでも試してみるよ。
ありがとう。

909 名前:813 mailto:sage [2008/02/09(土) 00:30:21 ]
WH_KEYBOARD_LLでも発生しなかった。
代用ならLLかGETMESSAGEだな。

ちょっと調べたことを列挙。
LLはNT/2000だけ、DLLも作成しなくていい。
GETMESSAGEはメッセージの書き換えとかも出来る。もちろんWM_KEY系も来る。
WH_KEYBOARDはWM_KEYUP/WM_KEYDOWNの時に呼ばれるらしい。おそらくGETMESSAGEの場合と同じタイミングのフック。

だからGETMESSAGEで代用は出来ると思います。
でもDLL自体の問題がどうにもならないのは少し気持ち悪いな。

910 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:31:03 ]
自分もやってみた。確かにフリーズ。クリック何回かしたら勝手に終了。
フォルダオプションで、別プロセスでフォルダ開くようにしてるから
メインのエクスプローラには影響なし。

タスクマネージャが起動できるのなら、電源切らんでも、
メニューのファイル→新しいタスクの実行で、
explorerを入力してOK押せば回復するはずだけど。

これ使った、ソースとexe+dll
ttp://a-draw.com/uploader/src/up31499.zip.html



911 名前:813 mailto:sage [2008/02/09(土) 00:34:40 ]
>>910
新しいタスクの実行も試してみたけど反応無しでした。既にexplorerのプロセスがあるから多重起動だと思われたんじゃないかと。
再起動じゃなくてタスクマネージャからログオフして回避した。

912 名前:813 mailto:sage [2008/02/09(土) 00:38:59 ]
>>910
解凍するとup31499って名前のファイルが一つだけ。。。

913 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:45:56 ]
失礼。直リン対策に引っかかるね。
ttp://a-draw.com/uploader/upload.html
up31499.zip

914 名前:900 mailto:sage [2008/02/09(土) 00:48:31 ]
>>909
俺もちょっと過去に調べたことを・・
LLはフックだけならDLL作らなくていいけど、他アプリでの固有の状態、たとえば、キーボードメッセージがきたときにコントロールキーの状態が知りたいというときには、やっぱりDLLを作る必要がある。
GetKeyboardStateはローカルな状態しか取得できないから、他アプリ上でフックしたときの状態はDLLの中のプロシージャから取得するしかない。

だから、GETMESSAGEにはちょっと期待。
>でもDLL自体の問題がどうにもならないのは少し気持ち悪いな。
これには同意。

915 名前:813 mailto:sage [2008/02/09(土) 00:48:48 ]
いえ、zipのDLまではしたんだけど、解凍するとなんか変です;一応二種類の解凍ソフトで試してみましたが。

916 名前:910 mailto:sage [2008/02/09(土) 00:58:23 ]
>>915
中身は、813さんが貼ったソースを、phobosで動くようにしただけの物です。

917 名前:813 mailto:sage [2008/02/09(土) 01:02:50 ]
>>916
えーと、>>912に書いたように、解凍すると中身がup31499というファイル一つになってます;
アップローダが何か変なことしたんじゃないかと思いますが。



918 名前:900 mailto:sage [2008/02/09(土) 01:11:57 ]
>>917
自分は
1.913のアドレスをブラウザで開く。
2.up31499.zipのリンクをクリックする。
3.さらにup31499.zipのリンクをクリックする。
でちゃんと
hook
-bin
--main.exe
--test_hook.dll
-src
--main.d
--test_hook.d
--test_hook.def
という内容のものが出てくるよ。
Noah使用。

919 名前:813 mailto:sage [2008/02/09(土) 01:17:51 ]
一応解凍出来ました。でも動作は変だ。
zipを保存->Lhaforgeで解凍->up31499.zip_extractedというファイルが出来る->それをLhaforgeで解凍->hookフォルダが出来る。
なんだろ、これ、二重圧縮?

920 名前:813 mailto:sage [2008/02/09(土) 01:22:19 ]
ちなみにLhaplusで解凍したら>>912の現象。
zip_extractedでぐぐって見たけど、同じような事例があるだけですね。



921 名前:900 mailto:sage [2008/02/09(土) 01:26:25 ]
>>919
こちらでは、7-zipでも正常だった。
ソフトとの相性?

922 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 02:00:29 ]
ところで、TangoのGCではminimizeができるようになるのかな?
なんかだれかほしがってた気がするけど。

923 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 02:04:17 ]
極窓に投げると.gtzと判別されますよ、っと

924 名前:813 mailto:sage [2008/02/09(土) 02:07:43 ]
gtz...検索しても情報無し。と。

925 名前:813 mailto:sage [2008/02/09(土) 02:21:16 ]
>>923
あ、tgzですね。

926 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 03:24:13 ]
>>859

D++(笑)
D#(笑)

とかw

927 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 04:36:27 ]
でもC++やC#はCから派生したって意味だろうし、これは全く違う言語だからなあw

928 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 05:36:26 ]
Eclipseってもっさりしてるし欲しい機能がどこにあるか分からなくて疲れる。

929 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 07:22:49 ]
おまいら当然Dのリンカが吐くモジュールのOpt.OSVer[0]とOpt.SubSysver[0]って毎回書き換えてるよな?


930 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 07:27:22 ]
>>929
素直にdefファイルなり/exet: /su:なりで指定しろよ…



931 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:20:45 ]
-gオプション付きでコンパイルしたものって配布しちゃだめなの?

932 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:41:35 ]
>900
確かにフリーズするが、ほっといたら直ったが(一分くらい?)


たしかに、このバグはちょっと困るなぁ……

933 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:19:37 ]
自分用に導入ガイド書いたんだが誰か添削してくれないかなぁ。

導入ガイド。@DMD+Phobos編@Windows@20080209

1,DIGITAL MARSのサイトからDMD.zipとDMC.zipを落としてくる。
--筆者はVer1.015で試している。
--dmd.2.010.zipでも同じ構成と思われる。
--圧縮ファイルは念のためとっておきましょう。
2,両方を解凍。
--DMD.zip->(DMDとDM)
--DMC.zip->(DM)
3,DMD側のDMにDMC側のDMを上書き。同じフォルダにDMDとDMになる。マージするんです〜。
4,任意でPATHを通す。
--c:\dmd\dmd\bin;c:\dmd\dm\bin とか。Pathの区切り文字は ; です。
---場所は貴方が決めます。
--XPの場合:マイコンピュータを右クリック->システムのプロパティ->詳細設定タブ->環境変数ボタン->Path
---開発ユーザのユーザPATHにするのが良いと思います。
5,テストします。
--ソースを用意しましょう。
---文字コードはUTF-8オンリーです。SJISとかEUCとかではだめです。
--お好みでbudやdsssを用意しましょう。
---dsss:www.dsource.org/projects/dsss/
----筆者は使ったこと無いです。
---bud:www.dsource.org/projects/build/
----budはpath上の日本語を許容しません。

934 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:22:05 ]
わなDで十分な気もしないでもない

935 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:43:15 ]
OSを良く吹っ飛ばすので実行ファイル系はいったんなくなっちゃうんです。ウイルス怖いので。
で、手元にまとめて置いておきたかったんです〜。
そういえば、わなD有りましたね。。。
ちょっとのぞいてこよう。


936 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:48:44 ]
改めて読んでみるとわなDで十分なきがしてきた。orz
Descentのことも書いてあるし。
車輪の再発明再び!XP

937 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:57:49 ]
EclipseをDで書き直すって需要ある?

938 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:58:27 ]
質問なんだけど、数学の行列って必ず長方形なり正方形なの?立方体にはならない?

939 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:59:39 ]
>>938
誤爆?

なんとなく言いたいことが不明だが
テンソルのことかな?
行列の添え字が3つ以上あったりするやつ

940 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:03:07 ]
>937
「もっさりしないEclipse」はEclipseユーザの誰もが夢見る代物だと思う。
実現するかはともかく。



941 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:04:48 ]
>>937
D言語で書かれたIDEは、D言語が実用にたえることの証明になると思うよ。
がんばれ

942 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:07:05 ]
>>939
あー、行列って言わないのね。もっと大きな体系があるのか。
勉強になった。Thx!

943 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:07:39 ]
>>938
>>939の追記だけど普通に多次元行列は定義できるよ
んで扱いやすい性質を持ってるのがテンソルと呼ばれてる
大雑把に言えばこんな感じかな?

944 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:13:16 ]
>>943
把握した。・・・多分。
テンソルって言うのは初めて聞いたよ。
調べてみる。俺、文系だけど〜。^^;

945 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:25:39 ]
ここ何スレだよwww

XX年後、D言語にテンソル型が実装されることをこのスレの誰も知る由がなかった。

946 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:40:05 ]
その前にD言語はMSに乗っ取られてしまいましたとさ。

947 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:51:59 ]
しかしなんとMSがDMを買収

めでたしめでたし

948 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:11:28 ]
行列用クラスを作りたいけど、テンソルも最初から考えるかどうかは悩むよね。
FORTRANとかMATLAB(GNU Octave)とかがあるから、それに対抗しようとするとさらに悩める

>>944
こういうのがある
ttp://www.oonumerics.org/blitz/

949 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:16:43 ]
テンソル使うならやっぱMathematicaじゃね?
計算の速さ考えるなら別だけど

950 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:37:18 ]
その中間としてSun Fortressなんかが出てきたりとか。
いろいろありますねえ。



951 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:53:06 ]
個人的には線形代数だと三角行列と対角行列が欲しい。
んで、対角化や特異値分解とかやってくれるの。
粗行列と Lanços 対角化もサポートしてくれると最高。

952 名前:デフォルトの名無しさん [2008/02/09(土) 21:54:40 ]
でOcamlも結構よくね?
手続き型と静的なシンボルリストをあわせもつSystem.out.println標準内蔵だしな

953 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:09:35 ]
そういえばD言語に標準の国際化機能ってあるの?C#のサテライトアセンブリみたいな。

ないなら何が一般的かな?

954 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:14:55 ]
>>802
遅レスだけど…。
tangoのmutexがどうゆう仕様かは知らないんだが、
synchronized文はロック・アンロック(ロック変数の処理)をプログラマが
気にしなくていいのが、pthreadとかのmutexと違うところ(良いところ)だと思う。
例外発生時とかのイレギュラーな動作の時もアンロック保証がされてる所。

変数に対してじゃなくて、制御フローに対するatomicの保障を言語レベルで行う
ってのはうれしいことじゃないかな。
(変数に対するatomic保障もできるけど)

スレッドプログラミング超初心者の時に、下みたいなプログラムを書いて泣いた覚えあり。
下は極端な例(&雰囲気)だけど…。
下の例で、ほかにたとえば関数func()内で例外が発生してどっか飛んだ場合のアンロックは…、とか。
まあ、他の人はそんなミスしないのかもしれない…。

int a; // ロックに使用するグローバル変数
int hoge() {
 bool b;
 lock(a); // ロック開始
 b = func();
 if (b){
  return 10; // bがtrueだとロック解除されないで、hoge()を抜けてしまう…
 }
 unlock(a); // ロック解除、falseの時のみ解除される
 return 0;
}

基本、クリティカルセクションは必要最低限で。
そういう意味で、上の例のプログラムはよくないかもね。
(もしfunc()内全体の処理をロックする必要がないなら)

955 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:18:54 ]
スコープガードを使うのも手だね。

lock(a);
scope(exit) unlock(a);

956 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:49:15 ]
結構スコープガードって便利だよなー

957 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:51:48 ]
便利すぎ
あれ無しでは生きていけない体になりました
特に害も無さそうだし

958 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:25:14 ]
>>953
マルチリソースっていう感じのはまだなさそう。
文字コード自体はUTF-8採用で国際化という感じになってる。

959 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:25:16 ]
行列演算もいいけど、複素数演算ももうちょっと充実してくれないかな。
せっかくネイティブで複素数対応してるんだし。

960 名前:デフォルトの名無しさん [2008/02/10(日) 01:47:55 ]
ぱっと見C言語なんだが。



961 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:52:04 ]
いきなりそんなこと言われてもどう返事してあげればいいのか分からない。

962 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:54:05 ]
>>960
GC搭載ですよ。
Cライクって事は過去の遺産、コーディングの癖とか使えるって事です。適合してるかは別ですが。

963 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:57:12 ]
GCってステキ

964 名前:デフォルトの名無しさん [2008/02/10(日) 02:51:27 ]
なるほど、{ } このトークンは亜種の言語処理系でもよく採用されている。
今更言語Dを勉強するほど若くもないので参考にしておきましょう。

デジタルマースにもこのDコンパイラが確かにあった。

965 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 02:55:28 ]
日本語でおk

966 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 03:10:00 ]
>>864
見落としてた。ありがと
>>668
本人かどうかわからんけど、発表する気があるなら時間配分とか(NDAがらみで録画公開不可とか)あると思うんでスピーカの誰かに連絡くれまいか
当日いきなり「お、そこに○○がきてるじゃないか。お前のほうが詳しいからお前話せ」みたいなのもカッコいいとは思いますが

>>686
漏れだ。ただ今のメンテナは漏れじゃないからサイトやドキュメントは任せてる


967 名前:デフォルトの名無しさん [2008/02/10(日) 08:49:33 ]
GCゲーム向かない
C++だって簡単にGC実装できるんだから
donguri.sakura.ne.jp/~shock8/wisper/gc1.html
リアルタイム性が要求されるものはメモリを手動で管理し、特にその必要がないものにはGCで管理の負担を減らすといった使い分けができる

968 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 08:54:31 ]
>>967
ゲームにもよると思うけどな。
でも、今時のGCで困るほどリアルタイム性が要求されるゲームなんて
そうそうないと思うぞ。

969 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 09:00:18 ]
>>967
DもGC使う/使わないは切り替えられると思う。
GC使う場合でも
www.sun-inet.or.jp/~yaneurao/dlang/Chapter-06.html
あたりを気をつければゲームも問題なく作れる。

970 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 09:31:26 ]
>958
そっか、ってことはまずはそこから作らなきゃならないのか。ありがとう



971 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 09:33:09 ]
向かないつっても実際作って公開してる人はいるし(ABAさんとか)、企業製品でもGC使うゲーム結構多いと思う。
うぉるたんも力説してるけどGCは怖くないよ!

972 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:19:56 ]
ストップザワールドが怖かったら、
その時だけ一時的に GC 止めればいいしな。

973 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:28:30 ]
今時on the flyじゃないGCなんて・・・

974 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:39:12 ]
そういう妄信的な姿勢って薄気味悪ささえ覚える

975 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:46:00 ]
もともとGCは補助であってプログラムのメインじゃないし、シンプルなもので十分だと思う。

976 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:47:21 ]
もっと高度なGCが必要ならプログラマ側で交換すればいいだけ。

977 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:49:39 ]
Dって完全にGC使わないなんてことできるんですか?

無理無理無理無理

978 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:52:42 ]
scope 文で事足りる処理しか書かなければ可能。
実用アプリじゃほぼ無理だろうが。

979 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:56:59 ]
>>977
方法を調べたことは無いけど、
www.kmonos.net/alang/d/2.0/dll.html#Dcode
のDLLのコンパイルの説明で
>dmd mydll.obj \dmd\lib\gcstub.obj mydll.def -g -L/map
>mydll.obj を mydll.dll という名前のDLLへとリンクします。 gcstub.obj は必須ではありませんが、これをリンクすることで、 不要なGCコードを省くことができます。 およそ12Kbの削減になります。
ってあるのが関係あるかも

GCをオフなるようにしてGCコードを省くようにすればGCの機能は消えるんじゃない?

980 名前:979 mailto:sage [2008/02/10(日) 12:59:08 ]
>>977
>>978
あ、機能の消し方じゃなくてGCの要らないコードの書き方の話?



981 名前:977 [2008/02/10(日) 13:34:57 ]
俺が言いたいのは、そんな泥臭い方法でGCを無理に押さえつけなくてもC++なら使いたいときだけGCが使えて便利だねって話



982 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:42:25 ]
何か妄信的なC++厨が迷い込んでるな
そこまで言うならC++でGCを実装してABA GamesのOpenGLゲームやXNAのサンプルゲームと同じクオリティを省メモリで作って上げてくれ
C++なら便利みたいだからD言語やC♯より楽にGCアプリを作れるんだろ?

983 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:43:51 ]
>>981
まあ確かに簡単にオフに出来ないのなら言語仕様変えて欲しいな。(俺は今の言語仕様でGCを完全に切れるかは知らない)
でもDは標準でGC有り、C++は標準でGC無し。どちらも有り無し選択可能ってだけで変わらないんじゃないかな。
C++でGC使うのに外部ライブラリ使う準備する手間と、DでGCを切る手間はどちらも変わらない気がする。

984 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:44:33 ]
C++ で GC って C++/CLI を想定しているのだろうか?

985 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:48:30 ]
BoehmGCじゃないの

986 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:52:43 ]
もうそろそろ次スレ必要じゃね?誰かよろ。俺はホスト制限で弾かれた。

987 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:21:40 ]
>>975 というような事を言う奴にかぎってメモリリークさせるんだよw

988 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:50:03 ]
GCの制御に多少手を取られても、
言語組込みの方がコードは圧倒的に読みやすくなると思う。
それでもC++を使う方がベターな分野は常にあるんだろうけど、
そういう分野はできればこの先減っていって欲しい。

GCをもっと簡単かつ細かに制御できるれば、Dの適用範囲を広げられるかもねぇ。

989 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:53:01 ]
本来GCはOSに組み込まれいているべきで(ry

990 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:10:56 ]
Part17: pc11.2ch.net/test/read.cgi/tech/1202623572/



991 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:15:09 ]
>>990
サンクス

992 名前:975 mailto:sage [2008/02/10(日) 15:16:55 ]
>>987
すまんw 俺高校生の趣味プログラマだから、大規模プロジェクトとか経験無しで言ってるw

993 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:20:16 ]
>>990
乙牌

994 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:29:52 ]
しかし最近流れが速くなってきたな
げいつのせいか

995 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:33:19 ]
Descentのおかげじゃないか

996 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:37:12 ]
だな。どうせMSのは製品になったら名前変えるだろうし、Descentのが気になる。

997 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:41:27 ]
>>994
テンソルのせい

998 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:44:33 ]
BoF、Descent、MS-Dと、話題が集中したからな……

むしろMSには、OSの開発言語を刷新するような
モダンなDリスペクト言語を期待してたのになぁ。

999 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:46:07 ]
Part17: pc11.2ch.net/test/read.cgi/tech/1202623572/

1000 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:46:28 ]
Part17: pc11.2ch.net/test/read.cgi/tech/1202623572/



1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<212KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef