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


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

D言語 Part17



1 名前:デフォルトの名無しさん [2008/02/10(日) 15:06:12 ]
プログラミング言語 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の入門講座)
ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画)

■ IDE
ttp://dronten.googlepages.com/dscite (DSciTE)
ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks)
ttp://www.dprogramming.com/entice.php (Entice Designer)
ttp://www.dsource.org/projects/descent (Descent)
ttp://www.dsource.org/projects/poseidon (Poseidon)

331 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 03:36:51 ]
D言語で積み木シューティングってゲーム作ってるやついたよな
あれくらい使いこなせてるんなら本格的っていえるか

332 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 05:04:39 ]
>>331
TUMIKI Fighters は ABA さん
ちなみに Wii でゲーム化されるほど
ttp://www.gamespark.jp/modules/news/index.php?p=2808

333 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 06:05:33 ]
でもDは基本ゴッタ煮だから言語設計の勉強には向かないと思われ

334 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 06:52:44 ]
>>328
ngen使っても遅いのがちょっと速くなるくらいであまり変わらんよ。

335 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 06:59:18 ]
ABA始まったな

336 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 07:06:08 ]
次はまさしくんハイ!だな

まあ冗談だがWiiの操作性には割とマッチすると思わなくもない

337 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:18:37 ]
関数の中のswitch文の中でreturnを使った場合はその後にbreakはいらないよね?

338 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:24:38 ]
プログラムの動作上はなくても問題ない。
保守・改変まで考慮する場合(それがよい習慣か否かとか)は話が別だけど。

339 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:39:48 ]
ふと思った
関数にデストラクタ機能欲しくね?
quitでユーザー定義なデストラクタへ抜けてreturnでdefaultなデストラクタへ処理を渡す。



340 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:41:56 ]
デストラクタ作るなら return したら常に呼ばれるべきだと思うが。

341 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:45:02 ]
goto と同じ問題が発生するな。
変数の初期化を飛び越える事ができない。

解決するにはコンストラクタと称して
デストラクタで使用可能な変数を宣言する場所が必要になるな。

342 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:52:19 ]
scopeじゃいかんの?

343 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:54:51 ]
scope(exit) か。

344 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:12:38 ]
>>335
ABAはもうD使ってないよ

345 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:13:17 ]
>>339
撒き戻しとか後片付けならスコープガードや例外を使えばいいと思うよ。

346 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:52:28 ]
>328
ngen使っても完全なネイティブじゃないでしょ。それに.net frameworkで動くからやっぱり遅い(初期起動が特に)

趣味で作る小さなプログラム起動するのに時間かかってたら腹が立つ。Office大きいものならば許せるが。その点Dは高速だし好きだ。IDEさえ何とかなれば……orz

347 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:19:16 ]
例外ってロジック的になんか美しくないじゃん

348 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:21:47 ]
普通にtry{} finally{}で何の問題があるんだろう…

349 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:00:32 ]
処理のフローが、各関数の呼び出し関係から暗黙に決まる、
ってのが美しくないところだと思う。

関数を合成して処理を作ること、処理を連結してフローを作ること、
これはそれぞれ別のまとまりとして定義されないと、処理フローが
ぐちゃぐちゃになると思うよ。



350 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:16:09 ]
tryはDだとWinMain内部でしか使ったことが無いや。

351 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:02:44 ]
D言語BOF
日程:3月1日(土) 10:15 - 12:00 開始時間が変わりました
時間変更に伴い、以前登録された方も前半/後半を個別に登録してください
f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF


352 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:57:23 ]
>>310
俺もそう思ってたけどBOFのBillさんとか本気でつかってるぽい
まあ研究職だからできるのかもしれんが


353 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:04:33 ]
>>222

伝えるだけなら
ココで出たバグ報告をnewsにポストする人と手間はかわらん

しかしその後の議論についていきつつ説得するのは正直めんどい

あと >>214 はあまり集まらないので没りそう


354 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:33:32 ]
scope 関連は記述もわかりやすくなるし、
try ~ finally と違ってネストが深くならないしでかなり好きだ

355 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:37:42 ]
たった一段のネストがそんなに気になるのかなあ?

356 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 22:57:49 ]
印刷することを前提に、80桁以上にならないように注意すると
途端に一段のネストが憎たらしくなるよ。

357 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:20:15 ]
ネストが深くなりすぎるプログラムはダメなプログラム。

358 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:20:23 ]
finallyとかscopeは、ドキュメントいわく
「実行される箇所ではなくそれが概念的に属する場所に配置されている」
というのがいい点だが、概念的にスコープに属している実行保障を
わざわざtryブロックに付け替えるのは分かりにくくなる原因だよなと思う。

359 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:57:43 ]
デバッグ用じゃないin、out、bodyみたいなのがあればいい感じ?



360 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 06:28:56 ]
そろそろCLOSからbefore/afterをパクるのもいいな

361 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 14:38:36 ]
void hoge()
in {
}
out {
}
before {
}
after {
}
body {
}

上から読むとなかなかbodyにたどり着けないな

362 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 15:14:01 ]
361みたいにするのは358な理由で分かりにくくなるだけじゃね?

363 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 16:43:09 ]
>>354
自分は基本的にタブ8でインデント + 80桁でコーディングしてるのですごく気になる。
あと、

step1();
scope (failure) step1_end();

/* なんか処理 */

step2();
scope (exit) step2_end();

こんな感じのを try~finally で書くと鬱にならないか?

364 名前:363 mailto:sage [2008/02/25(月) 16:43:40 ]
ミスった。>>355 ね。

365 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 20:26:47 ]
>>363
それ、いわゆるtry…catch…finallyなパターンじゃない?

366 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 20:49:01 ]
DMDがコンパイル中にエラーで落ちるのは良くあること?

367 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:32:55 ]
なんのエラーだ

368 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:34:24 ]
内部エラー

369 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:41:58 ]
>>363
これと等価かな
try {
  step1();
  step2();
} catch {
  step1_end();
} finally {
  step2_end();
}



370 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:46:17 ]
>>366
よくある

371 名前:363 mailto:sage [2008/02/25(月) 21:55:24 ]
また書き間違いだ……
なんでこんなミスを

step1();
scope (exit) step1_end();

/* なんか処理 */

step2();
scope (exit) step2_end();


372 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:01:09 ]
面倒なのはfailureやexitがたくさんあるときだよね、きっと。
例外が発生した位置によってやるべきことが変わるから。

各段階にあわせた例外処理をするために別々のtry文を用意するか、
深くネストしたtry文で…って感じになるんじゃないかと。

373 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:53:05 ]
>>371
try-finallyがネストするのがそんなに嫌か?
巻き戻す環境が違うんだから、ネストして当然だと思うが。
むしろ>>371のほうが妙な制御依存が発生して嫌だ。

374 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:57:04 ]
tab8で80桁て普通だよな。
マジでプログラムの質が悪いからネストした時辛くなるんだろ。

375 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:05:55 ]
そして>>358に戻る。

376 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:14:28 ]
TAB8でもインデントは4だってさ

377 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:15:46 ]
それでも>>371みたいな書き方を推奨してるわけじゃないよね。

378 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:27:57 ]
その辺の話は本家にあるよね。

www.kmonos.net/alang/d/2.0/exception-safe.html
>>373
 > try-finally による方法は、 概念的に関連している値のセットと復元コードが、
 > 間に関係のないコードが挟まることでいくらでも離されてしまう危険性を含んでいます。
>>374
 > try-finally による解決は、 リソースの初期化コードと巻き戻し処理のコードが分離して記述され、
 > 実際ソースコード上で視覚的に大きく離れてしまします。
 > しかし、密接に関連した処理は一カ所にまとまっているべきです。
>>377
 > scope文だけでは例外のcatchはできませんから、try-catch も必要です。
 > try-finally は、scope文によって冗長な構文となったと言えます。

379 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 03:24:07 ]
配列の要素の任意の組合せでイテレイトしたいのですがどうかけばいいでしょう
ary = [1,2,3,4] から二個含んだ組合せなら
foreach(e; combination(ary, 2)) {
  e; // [1,2],[1,3],[1,4],[2,3],...
}
こんな感じの処理にしたい.

参考にRubyで書くと
def each_combination(ary, k)
  if k == 0
    yield []
    return
  elsif k == ary.size
    yield self
    return
  end
  duped_ary = ary.dup
  x = duped_ary.shift
  each_combination(duped_ary, k-1){|y| yield [x]+y }
  each_combination(duped_ary, k){|y| yield y }
end
each_combination(ary, 2){|x| p x }

御存知でしたら教えて下さい




380 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 06:52:40 ]
直訳した
int delegate(int delegate(ref T[])) each_combination(T)(T[] ary, int k)
{
return (int delegate(ref T[]) yield){
if( k==0 ) {
T[] empty = [];
if(int r = yield( empty )) return r;
}
else if( k==ary.length ) {
if(int r = yield( ary )) return r;
}
else
{
T x = ary[0];
foreach(y; each_combination(ary[1..$], k-1)) { T[] plus=x~y; if(int r=yield(plus)) return r; }
foreach(y; each_combination(ary[1..$], k)) { if(int r=yield(y)) return r; }
}
return 0;
};
}

381 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 08:35:49 ]
>>374
いつの時代の人間だよ。
こういうこと言う奴って ts とか hmi とか訳分からん略した変数名使ってんだよな。
そっちのほうが最悪だっつーの。

382 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 09:01:12 ]
2chにコードとか投稿すると著作権持っていかれるんだよなあ…

383 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 10:25:41 ]
実質「公知のもの」になって委譲されるわけではないと思われ。
独占権は当然なくなるが。

384 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 11:43:25 ]
>>383
info.2ch.net/kiyaku.html

385 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 11:58:54 ]
>>384
著作権は「創作性」なるものがないと認められないんだが、
Dスレで張られてる程度のサンプルないし言語仕様の検証コードなら、
創作性なしと判断されるのが通例と思われ。

386 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:22:14 ]
委譲できる分だけ全部委譲させられるから問題なんだけど。
 > 無償で非独占的に複製、公衆送信、 頒布及び翻訳する権利を投稿者に許諾します。
 > また、投稿者は掲示板運営者が指定する第三者に対して、一切の権利(第三者に
 > 対して再許諾する権利を含みます)を許諾しないことを承諾します。
あたりのせいで、ここでコードを聞いて流用するとなると適用できない
ライセンスが結構出てくる。

20行を越えるようなコードでも創作性はないってのが通例だってのは初めて聞いた。
そうなると、それよりはるかに大きい著作物の20行の断片だけを流用する場合でも、
その断片はもはや創作物として原形をとどめてないないんだな。

387 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:33:38 ]
ttp://slashdot.jp/developers/article.pl?sid=06/10/23/0026258
とか3行で騒いでて何をやってるんだろうなあと思ったことはあるけどよくわからんな。

388 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:39:39 ]
try{
 Database database = MySQLDatabase.connection();
 try{
  Query query = database.compileQuery("select * from books");
  try{
   Result result = query.execute();
   foreach(Row row; result){ ... }
  } finally {
   query.close();
  }
 }finally{
  result.close();
 }
}finally{
 database.close();
}

これがscope(exit)ですっきり上から下に書けるから嬉しい。
最初にnullで初期化してclose()前にnullチェックすればtry-finallyは1段階で済むけど、
出来れば変数は宣言と同時に初期化して、再代入したくない。
まぁデストラクタ使えばscope statementすら不要だけど。

389 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:48:05 ]
あ、やべ。コードが全然違った……。

Database database = MySQLDatabase.connection();
try{
 Query query = database.compileQuery("select * from books");
 try{
  Result result = query.execute();
  try{
   foreach(Row row; result){ ... }
  } finally {
   result.close();
  }
 }finally{
  query.close();
 }
}finally{
 database.close();
}



390 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 17:28:56 ]
>>386
このスレで張られるサンプルって、ほとんどが機能的なものではなく「言語仕様の検証」であって、
言語仕様からほとんど一意に決まるものだから検証サンプルそのものには創作性は認められないのではないかと。
何らかの機能性を有していれば3行のコードでも創作性が認められるとは思うけどね。

391 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 17:45:29 ]
>>390
いずれにしても裁判所がそう認めない限りはわからないんだよね。
不確実なことを避ける考え方にも一理ある。

こういう話は嫌いじゃないけど、どうせ結論出せないんだし
気にする人だけ気にしてればいいんじゃね。

392 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 17:48:58 ]
>>390
気にする人だけ気にすればいいというのは同意かな。
多少気になったので裁判例を調べてみた。


ア プログラムの著作物性
 プログラムは,その性質上,表現する記号が制約され,言語体系が厳格
であるため,計算式をプログラム言語で記述したような場合にはプログラムにおけ
る記述が相互に類似することがあり得る。仮に,簡単な内容とごく短い表記法によ
って記述したプログラムをも,著作権法上の保護対象とすると,コンピュータの広
範な利用を妨げ,経済活動や研究活動に多大な支障を来すことになる。また,著作
権法は,プログラムの具体的表現を保護するものであって,機能やアイディア,あ
るいは科学的な計算式やその採用を保護するものではない。当該プログラムがある
目的における公知の計算式の採用を保護対象とすることになると,結果的には計算
式そのものを独占させることとなるからである。
 したがって,コンピュータに対する指令の組合せであるプログラムの具
体的表現がこのような記述からなる場合は,作成者の個性が発揮されていないもの
として創作性が否定されるべきである。
www.courts.go.jp/hanrei/pdf/683C8598E4E61EC4492570DF001C9775.pdf


図表又は図表の使用例に示される思想ないし
アイデアそのものは,著作権法によって保護されるものではない。また,このよう
な図表又は図表の使用例は,次に述べるとおり,かかる思想ないしアイデアを表現
する際にその個性が表れず,定型的な一般的にありふれた表現としかならないよう
な場合には,著作権法によって保護し得る表現上の創作性があるということはでき
ない。
www.courts.go.jp/hanrei/pdf/A04C1CFADEB110E7492570BD001A9BE1.pdf

393 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 17:59:34 ]
392のアンカは391宛てで……

上のほうの裁判例、被告の主張部分で判決部分ではありませんでした(ただし被告勝訴)
しかし、控訴審で判断が一部ひっくり返ってた。
公知の式をプログラムにするだけなら創作性はないが、
それを含むシステム全体は創作性を有するとかなんとか
ttp://www.courts.go.jp/hanrei/pdf/20070104101733.pdf

自分の間違いを訂正したところで、
スレチなのでこの辺で打ち止め。

394 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:10:52 ]
>>389のほうが>>371みたいなのよりずっとマシだと思う。

395 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:12:01 ]
コーディングスタイルやらインデントの話は不毛すぎる

396 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:31:05 ]
>>371だと、コードのどの部分でどんなハンドラが付いてるかが制御依存しちゃうんだよな。

397 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 19:01:36 ]
そもそもデストラクタ使えよって話だ。

398 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 19:43:06 ]
>>396
どういう意味なのか、アホな俺にもう少し噛み砕いて説明してくれまいか。
>>389だと、openなどに対応するcloseがえらく離れちゃうし、
connection, compileQuery, executeという「本筋」の実行パスが分かりづらくて、
可読性の面で問題があるとおもうのだけど。
こう、gotoを忌避するあまり、関数呼び出しの度にif(!error){ ... が重なっていくCのコードみたいに。

399 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 20:20:32 ]
>>396
そりゃあ、どんな処理をしたかによって後始末の処理を予約・保証したいんだから、
処理によって動的に定まるのが自然じゃね?
switch(x){
case 1:
f1(); scope(exit) _f1();
break;
case 2:
f2(); scope(exit) _f2();
break;
default:
f0(); scope(exit) _f0();
}
とかtry-finallyだとどうなるんだろう。
結果的に静的に定まる場合なら、静的に定めるtry-finallyなコードに直訳できるけど、
こういう場合はよく分からん。フローの状態を記録する変数とか用意したりするのが
セオリーなんだろうか。でもそれじゃ結局フロー依存だしなあ。



400 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 20:40:46 ]
単純なサンプルのつもりで書いたコードがボコボコにされててなんか辛いんだぜ

401 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:31:55 ]
どんまい

402 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:44:24 ]
言語仕様に著作権が認められたらサンプルコード載っけるだけで著作権侵害になるのかな。

403 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:00:23 ]
>>402
著作権は親告罪だから言語の作者がよほどの基地外じゃなかったら真っ白だよ
でも今居るGPL厨みたいな人間がしつこく言ってきて結果的な被害は変わらないだろうけどw

404 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:22:52 ]
>著作権法
>第十条  この法律にいう著作物を例示すると、おおむね次のとおりである。
>(中略)
>九  プログラムの著作物
>3  第一項第九号に掲げる著作物に対するこの法律による保護は、その著作物を作成するために用いるプログラム言語、規約及び解法に及ばない。この場合において、これらの用語の意義は、次の各号に定めるところによる。
>一  プログラム言語 プログラムを表現する手段としての文字その他の記号及びその体系をいう。
>二  規約 特定のプログラムにおける前号のプログラム言語の用法についての特別の約束をいう。
>三  解法 プログラムにおける電子計算機に対する指令の組合せの方法をいう。

なので少なくとも現在の日本では著作権法の保護は言語仕様に及ばないはず。

405 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:34:56 ]
じゃ実用新案辺りで手を打とうか

406 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:38:03 ]
言語仕様そのものには及ばないが、言語仕様を説明する文章は当然保護されるよな。
ニュースの内容と、ニュース本文のような感じで。

407 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:25:33 ]
Rubyみたいにソースコードが仕様な場合はどうなんだろ。

408 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:58:46 ]
tryの中でfinallyをscope(exit)と同じように機能させるとか
try {
  starthoge();
  finally endhoge();
}

409 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 01:10:57 ]
{
 starthoge();
 scope(exit) endhoge();
}

これと等価?



410 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 02:54:59 ]
catchがあるときに本領を発揮すると思う

411 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 12:52:51 ]
DFL 0.9.7 is mostly bug fixes and core improvements:
www.dprogramming.com/dfl.php

Entice Designer 0.8.4.03 is a bug fix release:
www.dprogramming.com/entice.php

New Entice Designer and DFL Video Tutorials:
www.dprogramming.com/dfl/videos.php

412 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:10:20 ]
>>407
assert(0)

413 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:20:46 ]
Entice は日本語が使えないのが惜しい……

414 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:31:15 ]
static foreachはまだなのか

415 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 17:37:23 ]
ftp://ftp.uploda.net/exe/test_window.zip
同じスタイルのウインドウを表示するだけのサンプルなんだけど、CとDではなぜか表示スタイルが違ってしまう。
たぶんCの方が正しいと思うのだけど、どこが悪いんだろう。

import std.stdio;を消すとエントリポイントが無いエラーが出るし。

416 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 18:11:42 ]
>>415
Dの場合win.defをですね、

EXETYPE NT
SUBSYSTEM WINDOWS,4.0

って書き換えてみましょう。

417 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 18:16:07 ]
>>416
あっはっは。
前にそれどこかで見つけてそういう風にしていたのになぜか今見てみたら4.0が消えてたほうに変わってた。OTL

どうもです。

418 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:36:53 ]
DFLでウィンドウアプリを弄っています。
メインのFormをいわゆるSW_HIDE状態にしたいのですが・・・できませんorz
visible=false; とか ShowWindow(cast(HWND)this.handle, SW_HIDE);
とか試したがうまくいかないです。
やりかたご存知の方いらっしゃいませんか?

419 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 09:34:45 ]
DFLってかなり.netに似てるから使いやすそうだと思ったけど、情報が少ないっていうのはかなり不利だよな。

>>418
で、.netに似てるなら.netを調べたらいいんじゃないだろうかと思って調べて来たら、.netでフォームを非表示にするには
FormクラスのHide()を呼び出すみたいです。
DFLを見るとhide()があるので、これでいけるかも知れませんね。試してませんが。



420 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 09:51:59 ]
>>416のdefを適用してもコンソールウインドウを出しっぱなしにするにはどうしたら良いのでしょうか。

421 名前:418 mailto:sage [2008/02/29(金) 10:45:48 ]
>>419
とりあえずhide()を呼び出して見ましたが変わりませんでした。

.netのHide()メソッドはvisibleをfalseにするのと同じとありました。
DFLにおいてvisibleプロパティについてはEnticeDesignerのメインformのvisibleプロパティのところに
 "whether or not this form is visible"
と説明がでますのでどっちにしろ表示される・・・・( ;´Д`)ぇー!?
て思ってたんですが、hide()もこれと同じ結果のようです。
なんか方法ないもんですかねぇ;

422 名前:419 mailto:sage [2008/02/29(金) 10:46:49 ]
もう少し調べてみた。

MSDNによると、.netではvisible=falseとHide()は全く同じ動作らしい。DFLでも同じ可能性大。

それと、DFLで試してきたけど、
一つFormを作り、そこにボタンを置き、ボタンをクリックするとフォームのvisibleをfalseにする。って組んでみたら普通に非表示にされた。
だけど、フォームの生成(Application.run(form);)の前にform.visible=falseを設定しても非表示にはされなかった。
これは多分.netと同じ挙動。
natchan-develop.seesaa.net/article/18029500.html
というわけで、>>418がいつvisible=falseしてるのか知りたい。

とりあえず>>418が生成前にvisible=falseしていると仮定して話を進めるが、
↑のURLにあるとおりの回避法をDFLでしようとして、formの生成前に
form.windowState=FormWindowState.MINIMIZED;
form.showInTaskbar=false;
としても上手くいかなかった。(showInTaskbarを指定し、MINIMIZEDにするとデスクトップの左下に小さくなったウィンドウが表示されてしまう。それぞれ単独では上手く動作する。)

ので、Application.run(form)を使うなら、非表示のまま起動は出来ないと思う。
ただもちろんApplication.run()を使えばフォームを表示しないことは出来る。その場合フォームを表示したければform.show()を使えばOK。


423 名前:419 mailto:sage [2008/02/29(金) 10:54:09 ]
つまり、hide()とかvisibleは生成前に設定しても意味無いけど、
生成後ならちゃんと機能するってことだと思う。

424 名前:418 mailto:sage [2008/02/29(金) 11:27:24 ]
>>419
生成前に設定しているのが原因でした。
生成後に設定するにはどうしようかと考えていましたが、
わたしがやりたかったのはApplication.run()で実現できそうです。
使い方がよくわからなくてすみません。
ありがとうございました(・∀・)

DFLに関して検索するとC#とかの情報が役に立つのでその辺を意識して作られてるのだと思いますが、
.NETとかC#とかやらずにC++あたりからDにきた者にはDflDocはひどいです><;

425 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 11:39:20 ]
俺も初心者の頃に訳も分からずC#のフォームデザイナ使っただけだから、ほとんど覚えてないな。
プログラムの流れやメッセージループも理解してないのにデザイナ使うと訳分からず混乱するw

426 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 14:45:33 ]
>>420
EXETYPE NT
SUBSYSTEM CONSOLE,4.0


427 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 18:35:42 ]
あー。そーいえば俺もDFL使ってた時に同じようにはまったかも。
確認してないけど初期設定はonLoadとかloadとかでやったらどうだろう。

428 名前:419 mailto:sage [2008/02/29(金) 18:40:40 ]
>>427
まあいいかと思って書かなかったけど、追記。
load内でvisible=false;をするとフォームが一瞬表示された後に消えます。


429 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:37:54 ]
>>426
どうもです。出来ました。



430 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 23:15:02 ]
D言語って日本語の変数名使えたのね。全く知らなかった。
使わないけど。

431 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 23:44:38 ]
明日はBOFか。
ここんとこ忙しくて予約とかさっぱり忘れてた
でも行ってみる

432 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:20:24 ]
人数のカウントは、部屋の大きさの目安をとるためだけらすぃよ

433 名前:427 mailto:sage [2008/03/01(土) 02:09:54 ]
>>428
あーそうだった。俺もそうなって、そこで妥協したんだった。
いい加減なこと言って申し訳ない。

しかしDFLのコード読んでみたら、初期化の最中にWinProcを介して
あっちこっち飛んでは3種類くらいの可視フラグを立ててはチェックしてで頭が爆発した。

434 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:17:58 ]
C++0xでこんなことできるらしいんだけど、Dではどう書けばいいのだろうか。

template<typename... T>
class C: T... {
C(const T&... t): T(t)... {}
}

435 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:22:52 ]
あ…インターフェイスにコンストラクタないから、これはかけないか。

436 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:32:38 ]
template<class ... Args> void g(Args ... args) {
f(const_cast<const Args*>(&args)...);
}

こういうのはちょっと羨ましいかも

437 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 10:09:46 ]
BOFはじまるよ

438 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:13:51 ]
BOFたのしそうだな

439 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 12:07:27 ]
BOFおわったよ



440 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 12:07:57 ]
BOFたのしかったな

441 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 12:38:41 ]
www.ustream.tv/channel/dbof

442 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 12:44:11 ]
仕事早ぇー

443 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 15:26:05 ]
BOF乙

ところで"Tuple"が複数のモジュールにあって
それらが全然違うものだから混乱したぞ

444 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 15:36:31 ]
あるある
object.dみたいなところにひとつTupleが書いてあればいいのに

445 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 15:38:42 ]
タプルリテラルを作れば解決するのになあ

446 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 16:42:23 ]
>>441
もしかしてABAさんと、をるたんの謝辞だけ?

447 名前:Dubhead mailto:sage [2008/03/01(土) 17:14:32 ]
BOFの簡単なリポートを書きました。
メモが追いつかなかった部分が多々あるけど許してね orz
d.hatena.ne.jp/Dubhead/20080301


448 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 17:19:47 ]
気づいたら終わってた
誰か録画してないのー?

449 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 17:32:04 ]
勇者はやっぱ勇者だった
だがDでSIGGRAPH発表する伝説の勇者が出現




450 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:03:56 ]
>>447
GJ!
概要はなんとなくわかった。
読めば読むほど拝聴したかっただぜ!Orz

451 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:23:38 ]
例の納品した人出てたのかw
ちくしょー見たかったぜ。

452 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:24:37 ]
更新されてる。
>>Walterだけど何か質問ある?


453 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:37:45 ]
>>447
プレゼンまとめうpとかあったら神なんだが

454 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:51:39 ]
Dの更新追うのに疲れてここ一年くらい新機能弄くって遊ぶようなことしてなかったけど今日のでちょっと興味戻ってきたわ

455 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:57:45 ]
>>449
>だがDでSIGGRAPH発表する伝説の勇者が出現
kwsk

456 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 22:39:06 ]
>>455
ビルタンです

457 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 01:08:36 ]
ニコニコに上がってるのか。
話題に乗り遅れてるが、ぼちぼち見てくる。

458 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 01:35:24 ]
おおお素晴らしい
ちゃんとスライドが読める画質っぽいwww

459 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 10:53:47 ]
www.nicovideo.jp/mylist/5343982
これかい。



460 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 11:40:11 ]
コメント少なすぎだろw

461 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 11:54:28 ]
>>460
お前がするんだよ!

462 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:23:41 ]
最初鼻の穴見えすぎ

463 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:30:04 ]
エロくね?

464 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:59:20 ]
鼻のタグが付いてるな。

465 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:39:27 ]
うーむ、コメントしにくいなぁ。
コメントが少ないからじゃなく何となく。

466 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:52:45 ]
聞き取りにくいところに字幕をつけるとかどうだろう。

467 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 16:47:44 ]
いいね

468 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:26:20 ]
やろうと思ったけど自分の耳じゃ復元できなかった…。
実際会場行った人、お願いします。

469 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 20:47:23 ]
ushort型をasmでAXに入れようとしたらサイズが違うと怒られたんですが、

import std.stdio;
void main(){
  ushort n = 0x3132;
  writefln("ushort.sizeof = %dbyte", ushort.sizeof);
  writefln("before:0x%x",n);
  asm{
    mov AX, n;
    rol AX, 8;
    mov n, AX;
  }
  writefln("after:0x%x",n);
}
こういうのは駄目なんですか?



470 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 21:20:55 ]
見てきた。微妙にウォルタンには伝え辛い発言があって困るw

471 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 21:26:57 ]
>>459
しゃべってる人が俺の脳内イメージとは、悪くない意味で違ってた。・・・当たり前か。
理解できてるかはべつとしておもしろかた。

472 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 21:35:24 ]
お願いがあるのだ
ニコ動以外の所に上げて

473 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 22:23:29 ]
>>469
asmの話題はあんまり見たこと無いな。
俺はアセンブリ系はわかんないし。

474 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 22:26:52 ]
word ptr がいるんじゃない?

475 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 22:28:40 ]
>>472
アカウント取ったほうが早い
異論は認める

476 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:08:26 ]
だなぁ。異論はあるだろうが、とりあえず登録はしておいたほうがいい。

477 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:50:10 ]
いちいちページ切り替えるの面倒だったからflvファイル連結してみたけど40MB超えてて\(^o^)/オワタ

478 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 07:34:28 ]
ttp://www.kmonos.net/alang/dee/diki7/brainfuck2d

BOFのコンパイル時コンパイラに触発されて、
brainfuckを、Dの
 delegate void(std.stream.InputStream, std.stream.OutputStream)
なデリゲートに変換するモジュールを書いてみた


以前D言語における日本語利用の話題になったときにインタプリタまで書いてたやつです
今度はきちんとDソースコード表現を経由してネイティブコードにコンパイルされます
文字列mixinを使うと素直な表現になりますね

479 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 07:59:26 ]
>>473-474
自己解決しました。と言うかあまりにあれだった。
結果として>>469だとコンパイル通りました。
通らなかったのは下のコード。(ちなみにやってることは全部エンディアン変換)
import std.stdio;
void main(){
  ushort unknown = 0x3231;
  testa(unknown);
}
ushort testa(inout ushort n){
  asm{
    mov AX, n;
    rol AX, 8;
    mov n, AX;
  }
}
inoutのものをそのままレジスタには渡せないってことですね。
inoutも内部ではポインタ渡しみたいになってるから、
void testa(inout ushort a){
  asm{
    mov EAX, a;
    mov BX, [EAX];
    rol BX, 8;
    mov [EAX], BX;
  }
}
こうしないといけないみたい。
でも、これより↓の方がわずかに速かったのには脱力した。
ushort testa(ushort n){
return (n << 8) | (n >>> 8);
}



480 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 08:13:00 ]
Google Videoにもきた
video.google.com/videosearch?q=D%E8%A8%80%E8%AA%9EBOF+2008-03-01

481 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 11:34:21 ]
tango.core.Thread.Thread には、 phobosのstd.thread.Thread.pause/resume 相当の機能はないのでしょうか?
見た感じないのだけど、どうしてだろう?
void thread_suspendAll() 内には void suspend( Thread t ) なるものが見えるけど外からは使えない…

482 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 11:58:46 ]
pauseでスレッドを停止させる設計が間違ってるからじゃないか

483 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 12:54:04 ]
>481
Thread.yield ではダメ? 実行権が勝手に戻ってきちゃうと都合悪いのかな。
だったらtango.core.Thread.Fiberで yield/callするコードを書いといて、
そのファイバーをスレッドで駆動するという手はある。


484 名前:481 mailto:sage [2008/03/03(月) 13:18:00 ]
>>482
そうなんですか?初めて聞きました。浅学なもので…
でも、使いたくなる時もあるんじゃないかと思うので、
設計の良し悪しは別にして、あってもいいような気がしないでもないのですが…

>>483
それはなんとも強引ですねw

とりあえず使うところはWindowsなので、スレッド内でGetCurrentThreadとかすればなんとでもなる…
けど、なんかスマートじゃない感じが…

485 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:44:55 ]
動けばいいのだ

486 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 14:08:39 ]
Internal error: ..\ztc\cgcod.c 1522
ってなんですか?

487 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 14:22:13 ]
コンパイラのバグ。
bugzillaに報告しとけば一年ぐらいで直るよ。

488 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 15:08:08 ]
一年後かよ!

489 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:15:41 ]
あるある



490 名前:イーペーコー [2008/03/03(月) 19:20:47 ]
D言語はVB.NETよりできることがすくなと聞いたのですが本当ですか??

491 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:22:36 ]
少なくは無いけど、遠回り。

492 名前:デフォルトの名無しさん [2008/03/03(月) 19:43:55 ]
D言語で書くくらいならアセブラで書いたほうがいいと効きました
なにやらアセブラはなんでもできるそうでD言語より高機能だそうです

493 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:45:37 ]
>>480
わー
サンクス

494 名前:デフォルトの名無しさん [2008/03/03(月) 21:24:05 ]
>>490
あの膨大なライブラリを誰が書いたかってハナシだな。
キャパシティはあんま変わらん。

495 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:03:40 ]
>>492
アセンブリ言語でガリガリ効率的に書けるなら,確かに他の言語なんていらないなw

496 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:11:42 ]
チューリング完全(ry

497 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:15:39 ]
アセンブリがあればという奴にかぎってアセンブリでまとまったモノを書いた経験がない。
チューリング機械があればという奴にかぎってチューリング機械でプログラミングした経験がない。

498 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:19:12 ]
僕は、ラムダちゃん!

499 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:21:39 ]
>>497
別に限らないと思う。



500 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:30:38 ]
>>497は経験がないのはわかった

501 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:37:07 ]
       ____
     /      \
   /  _ノ  ヽ、_  \
  /  o゚⌒   ⌒゚o  \  また明日から無限に長いテープを前後に動かす仕事が始まるお
  |     (__人__)    |
  \     ` ⌒´     /

502 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:48:01 ]
絶望的な仕事だなぁ

503 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:56:25 ]
チューリングマシンより量子コンピュータの方が出来ることが多いそうですが、
D言語は量子コンピュータ上で動きますか?

504 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:07:26 ]
>>501
その仕事はいつ終わるんですか。

505 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:07:59 ]
量子コンピュータなんてろくにできることないぞ。

506 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:16:48 ]
どっかの研究者が並列実行可能な生体コンピュータ(分子生物学的な)を使って
現在のノイマン型だと非常に時間の掛かる問題(確か年単位オーダー)を解いたそうだが、計算は一瞬で終わっても解を取り出すのに数週間掛かったそうだ。
質的な差は確かに違うしできること、奥の深さの違いもあるだろうけど、現時点では量的な差がそれを打ち消してしまうほど使い物にならない。
例の様な特殊な事例でなければね。
というか量子的な動作を記述する言語ってどんなものになるんだろうな。
D言語は言語使用自体の例外的なものをできるだけ排除して、できるだけ簡素なものに帰納的に表現できるように
工夫がされているはず。
その“帰納的”という性質そのものがノイマン型コンピュータに依存するわけだから、勿論互換性なんてない。
量子コンピュータはその動作を確率的に、並列コンピュータはその動作を並列的つまり動的計画法バリバリに記述するんだろうねきっと。

507 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 00:29:37 ]
三行で

508 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 00:52:33 ]
今のプログラムに比して超巨大なステートマシンが
大量に右往左往する量子コンピューティングには
テキストでしこしこ記述する手法では太刀打ち出来ない。

509 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 07:29:30 ]
量子コンピュータは一応チューリング完全だけど、
NOT, CNOT, CCNOT, SWAP っつー可逆な操作のみを使って計算する、
古典コンピュータとは根本的に異なる原理に基づいた計算になる。
その性質をフルに発揮するには、そもそも古典コンピュータ用の言語は向いていない。
さらには重ね合わせとかあるしね。



510 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 07:46:48 ]
> D言語は言語使用自体の例外的なものをできるだけ排除して、できるだけ簡素なものに帰納的に表現できるように
> 工夫がされているはず。

正気か?

511 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 08:42:25 ]
でっていう

512 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 12:13:58 ]
このスレ、なんか今年入ってからか全然関係ない話題で盛り上がる運命にあるのか?

513 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 12:36:18 ]
> 全然関係ない話題
運命についての質問とかな

514 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 12:58:39 ]
これから盛り上がるっていう予言かw

515 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 20:24:23 ]
DコンパイラをDで記述すれば大いに盛り上がるはず
頑張れ↓

516 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 20:31:17 ]
2への完全移行とDMD/GDCの互換性を上げるほうが先だろ

517 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 20:48:27 ]
記述に使用する言語と同じ言語のコンパイラって作って何が楽しいの?

518 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 20:53:52 ]
>>517
動的コンパイル

519 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 21:29:36 ]
>>517
そんなこと言ってたらCコンパイラすら作れなくなるな



520 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 21:30:46 ]
マシン語とかアセンブリ言語とかで作れと?

521 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:03:38 ]
作るのが楽しいんだよきっと

522 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:12:01 ]
でも、そんなもの作る暇あるなら、
何か便利なライブラリでも作って欲しいわ。

523 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:12:58 ]
動的コンパイルできるライブラリ作れるじゃん

524 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:13:36 ]
>>520
でも同じ言語で新しいバージョンのものだったらまだ話は分かるけど、
同じバージョンなんて作っても・・・。

525 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:20:59 ]
その言語がよい言語なら、その言語のコンパイラ自身も
その言語で書かれてる方がいいよね。

移行の過程を無視すれば、だけど。
 > 複雑でデバッグ済みで既に完成しているアプリケーションを
 > わざわざ他言語に 移植することにあまり利点はありません。
 > 新しい Digital Mars のアプリは Dで実装されています。
 www.kmonos.net/alang/d/2.0/faq.html#cpp_to_D

>517のような、新しくコンパイラを書き起こす場合は、Dで書くのも
普通に選択肢に入るんじゃない?
「すでにD言語のコンパイラは2つもあるのに、新しく作って何が楽しいの?」
ならともかく、D言語のコンパイラをD言語で書くこと自体はとくにおかしくないでしょ。

526 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:22:10 ]
Streamクラスのseekableなストリームは絶対にreadableなストリーム、と言い切れるのでしょうか。

527 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:30:36 ]
さあてね、どうだか

528 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:38:04 ]
D 3.0からDで作ります。とかならあり得ない話じゃないかな。

529 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:04:22 ]
じゃあ最初のD3.0はD2.xxで作られるわけか



530 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:14:10 ]
コンパイラ作ってる間に仕様が変わって、新しいコンパイラでは自分自身をコンパイルできなくなると。

531 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 01:03:14 ]
>>526
readableとseekableが分かれているのだから言い切れないんじゃない.
ソースを上から全部読んでないので確証はないけど.

532 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 21:40:09 ]
そう言えば量子コンピュータって量子テレポの原理を使って理論上は
人間が思ったとおりの動作を自動的にしてくれるんだって?
LL(0) 何世紀後の話になるやら・・・。

533 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 21:48:37 ]
??

534 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 05:05:18 ]
LL(0)というのは誤爆です・・・

535 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 06:33:12 ]
Version()掛けてD2.xで出来上がったD3.0でD3.0を作ってそのD3.0でコンパイルしてみて確認。

536 名前:デフォルトの名無しさん mailto:saqe [2008/03/07(金) 08:56:40 ]
D言語でデバイスドライバはC並に作れますか?

537 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 11:53:23 ]
お約束だが「C並」を定義しないと誰も回答できない

538 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 13:33:59 ]
長時間存在するものをモダンでないGCに投げるのは不安があるところだな。
その辺の工夫をすればかけるのではなかろうか。

539 名前:デフォルトの名無しさん [2008/03/07(金) 14:47:19 ]
つまりCでできることは9割がたDでできるのか否かちょいうこと



540 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 15:03:51 ]
D言語終わったな

541 名前:デフォルトの名無しさん [2008/03/07(金) 15:22:35 ]
>>540
ハゲ同
今じゃVisual Basicですら簡単にC++並みのドライバが書けるのにD言語ときたら・・・

542 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 16:51:32 ]
>>35 のバグ直ったみたいだよ
d.puremagic.com/issues/show_bug.cgi?id=1828
> Fixed dmd 1.028 and 2.012 (and thanks for sorting this out)

543 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 17:32:57 ]
>>542
キタ━━━━━━(゚∀゚)━━━━━━!!!!!!
これで安心してマルチスレッドのコードが書けるわ

544 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:09:49 ]
>>539
アッパーコンパチなんで、やろうと思えばできるはず。効率的かはまた別だが。
まー、ビットフィールド位しかできないことおもいつかん。
アラインもいじれるし。ポインタもいじれるし。

>>541
なに?ドライバ入れるのに.NET入れないといけないの?
フロントエンドじゃなくて?

545 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 21:35:45 ]
vbでデバイスドライバとな!?

ランタイムも全部sys 凄すぎるけどネタじゃないか

546 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 21:38:22 ]
>>545
Windows限定なら俺も書いたことがある
仕様が公開されてるキーボードのドライバをvb.netで

547 名前:デフォルトの名無しさん [2008/03/07(金) 21:42:17 ]
ubyteの配列をスライスしてuintの配列として解釈するのはマズいですか

auto ub = new ubyte[0x10];
auto ubs = ub[4..11];

uint* ui = cast(uint*)ubs;

要するにバイト列を任意の値型で再解釈するというモノです。


もっと安全な方法があるぜ!とかあったら教えてください

548 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:09:48 ]
エンディアンにさえ気をつければやっていいと思う。


549 名前:デフォルトの名無しさん mailto:sege [2008/03/07(金) 22:48:29 ]
>>547
VBの場合リトルエンディアンは静的なデストラクタとして扱われるから気をつけて。
uint* uiじゃなくてfile*uint[ui]の方がいいよ



550 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:56:30 ]
>>549
547じゃないけど、もう少し噛み砕いた説明plz

551 名前:549 mailto:sege [2008/03/07(金) 23:04:25 ]
つまり、Dの場合はリトルエンディアン(パソコンでプログラムを使う際に使用される16進数の形式のネイティブWinAPI関数)は
静的(ガベージコレクタによって関数がオーバーロードされ変数のスコープからはずれたりするのを防ぐコア関数)
なデストラクタ(使い終わったオブジェクトをユーザーからのイベントパンドラ無しにイベント駆動型のラムダ式)
として扱われると言うこと。
uint* uiにするとβ変換(変数をグローバルなスコープから外し新しいシステム型変数として使うための変換)
が正常に行えなくなるのでfile*uint[ui]にしておいたほうがいいということ

552 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 23:08:46 ]
すごいバグつぶしっぷりだな・・・

553 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 23:21:18 ]
普及させるにはやっぱD言語製の優秀なアプリが無いと駄目だろうな
ゲームはあるみたいだが

554 名前:547 mailto:sage [2008/03/08(土) 00:09:13 ]
>>551
すいません全然意味がわからないです

エンディアンとガベージコレクタに何の関係が?

>file*uint[ui]
??file型のポインタの配列??

>VBの場合
???

555 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 00:40:40 ]
アプリよりまずライブラリだろ。
そして、ライブラリよりまず言語仕様の安定を・・・。

556 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 00:52:03 ]
安定なんか糞喰らえだ。
Walterたんの突発的な変更に右往左往するのがD言語だ。
と俺は思っているが少数派だろうなぁ。まぁこんな考えだと一生D言語が流行らんけど

557 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 00:52:52 ]
まあ、それはそれで楽しいからいいんだけど、
早く実用したいという欲求もあるしなあ。

558 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:26:08 ]
つまり実用的なD言語と実験的なD言語に分離すれば…
ってそれが1.0系列と2.0系列か。

559 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:36:14 ]
2.0系列に入った機能で
ある程度賛否の賛の方が大きい機能を
1.0系列にマージした系列も欲しい所だな。



560 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 02:11:45 ]
2.012と1.028きてたのね。
dmd_2.012-030608_i386.debってのもあるけどなんだろうこれは。

561 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 02:14:58 ]
debパッケージなんじゃないの。

562 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 03:14:57 ]
dmd、リンクのときのメッセージが出なくなってるんだな。

563 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 06:58:06 ]
>>551を読んで、>>549がデタラメだということはわかった。

564 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 09:46:55 ]
>>551
×イベントパンドラ
○イベントプロシージャ

×関数のオーバーロード
○関数のオーバーライド


565 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 09:52:21 ]
>>486のエラーを避けるために
原因のコードを普通のブロックで囲んでも意味無かったので
(){
  原因のコード
}();
こんなことしたらエラーでなくなった
でも顔はぐにゃってなった

566 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:04:33 ]
{ (
   ^ |
{ (

567 名前:547 [2008/03/08(土) 11:37:37 ]
すいません私の勉強不足でした
ファイル型のポインタも知らなかったなんて・・・
今まで一体何を勉強してきたんだ…
www.geocities.jp/tor_park/Dlang/byte.html

568 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 12:01:12 ]
>>567
なんだこの6章だけデムパで残りはパクリのサイトは...?

569 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 12:26:47 ]
file*uintってなんですか?



570 名前:547 mailto:sage [2008/03/08(土) 12:29:42 ]
>>567
騙らないでください

571 名前:547 ◆iBVPK4.Aq2 mailto:sege [2008/03/08(土) 13:09:14 ]
これ以上詐称するのであれば酉付けます

572 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 13:23:33 ]
IDもなしに後からつけるトリップに何の意味があると

573 名前:547 mailto:sage [2008/03/08(土) 13:37:07 ]
すいません質問はあきらめます
自分で調べてきます

以降の547人は偽認定でお願いします

574 名前:デフォルトの名無しさん [2008/03/08(土) 13:43:06 ]
>>573
だからwww.geocities.jp/tor_park/Dlang/byte.html

575 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 13:55:45 ]
>>574
その偽サイト作るのにどれだけ時間掛けたの?

576 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 13:59:15 ]
すでに時代遅れになっているから、読まないほうがいい
混乱するだけだ

577 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:04:23 ]
自演乙

578 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:10:39 ]
ttp://www.geocities.jp/tor_park/logo.jpg
更新日時 2008年3月8日 10:19:16

ずいぶん新しいね

579 名前:デフォルトの名無しさん mailto:今日の午前中に作ったよーん [2008/03/08(土) 14:12:39 ]
578

暇人



580 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:14:22 ]
Dスレでこんなのを見るとは思わなかった

581 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:15:33 ]
www.geocities.jp/tor_park/Dlang/d2.html
「細かい説明は後述するので、この場ではとりあえず文字を表示する方法を試してみましょう。
文字を表示するにはprintgokko命令を使います」

アホか

582 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:16:43 ]
>>578
文章は何年も前から変わってない。
C++だったらそれでもいいけど、Dじゃ駄目。

583 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:16:49 ]
ジョークサイトにしてももうちょっと知性の感じられるジョークをだな

584 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:19:40 ]
構ってもらえてよかったな坊主

585 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:20:47 ]
yutori.2ch.net/test/read.cgi/news4vip/1204952244/

   1 名前:以下、名無しにかわりましてVIPがお送りします。[] 投稿日:2008/03/08(土) 13:57:24.68 ID:oVsMTN3J0
     次世代言語”D言語”を使ってプログラミングをしてみよう!
     C++で挫折した君も、プログラミング初心者の君も今日からプログラマーだ!

     D言語入門 www.geocities.jp/tor_park/Dlang/d2.html

586 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:26:25 ]
>>582
そのサイト>>567がついさっき作ったんでしょ?、と汲み取ってもらいたかったんだが
文章はWisdomSoftのパクリ

587 名前:デフォルトの名無しさん [2008/03/08(土) 14:27:06 ]
おじゃすー
printgokkoとかアホかと・・・
ptって感じで短くして欲しいぐらいだよ

588 名前:デフォルトの名無しさん [2008/03/08(土) 14:27:11 ]
   1 名前:以下、名無しにかわりましてVIPがお送りします。[] 投稿日:2008/03/08(土) 13:57:24.68 ID:oVsMTN3J0
     次世代言語”D言語”を使ってプログラミングをしてみよう!
     C++で挫折した君も、プログラミング初心者の君も今日からプログラマーだ!

     D言語入門 www.geocities.jp/tor_park/Dlang/d2.html

589 名前: ◆bNGw8Q1jYg [2008/03/08(土) 14:27:59 ]
いつのまにかVIPでこのスレがパートスレ化している件



590 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:30:19 ]
これを面白いと思うセンスが理解できない

591 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:35:24 ]
まあ、547自体が釣りだったということでFA

592 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:38:30 ]
VIPからきますた

593 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:42:09 ]
VIPから(ry ww

594 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:43:28 ]
徹夜までして偽サイト作ったもんだから、引くに引けなくなったのか・・・

595 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:47:27 ]
VIPの方からきますた

596 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:58:05 ]
>>582
釣られてる奴がいる
ワロタ

597 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 15:41:29 ]
静岡県在住の高校一年生か
なるほどこりゃ痛い

598 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:10:44 ]
2章ひでえ。何がやりたいんだこれ

599 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:11:12 ]
こういうのが沸く程度にはメジャー化したということで
順調に発展できたならば、5年後くらいには
Java vs C# vs D
とかでもできてるに違いない(と信じたい)



600 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:16:06 ]
>>599
逆に5年後、JAVAとC#があるのかどうか、という感じだな。
JAVAはマジで死滅するんじゃないかという危惧と
C#はMSが次の言語出してきたらどうなるかと。

601 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:20:57 ]
MSは"D言語"出すしな

602 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:29:07 ]
mjd?

603 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:31:42 ]
D言語いくつ作られるんだよw

604 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:46:10 ]
>>600
5年後に日本のIT業界がJAVAを捨てられるほど熟練者が増えてるとは思えんがな……

605 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:48:24 ]
2章より引用
>細かい説明は後述するので、この場ではとりあえず文字を表示する方法を試してみましょう。
>文字を表示するにはprintgokko命令を使います

>printgokko ("表示したい文字列");

606 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:49:53 ]
必死に貼らなくてもいいから

607 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:49:57 ]
JAVA無くなって困る人は大勢いそうだけど
C#無くなって困る人は少ない気が

608 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:07:06 ]
俺はCOBOLとDなくなったら死んじゃう。

609 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:34:13 ]
それはぜひ半分死んでくれ



610 名前: ◆bNGw8Q1jYg [2008/03/08(土) 18:40:35 ]
ごめん消しちゃった
今度はもっとちゃんとした教材作るね

611 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:50:39 ]
じゃ俺はDとC++の勢力が入れ替わるのなら100年生きる。

612 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:08:01 ]
在る程度メジャーになった言語は、
衰退することはあっても、完全に無くなることは滅多に無いと思うけどなあ。

613 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:13:39 ]
COBOLもそろそろ死んで欲しいんだけど、あと1世紀は生きるよね。

614 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:18:58 ]
ttp://s01.megalodon.jp/2008-0308-1456-03/www.geocities.jp/tor_park/Dlang/index.html

615 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:21:53 ]
もういいよ

616 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:22:03 ]
>>614
そこまでしてかまって欲しいのか・・・

617 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:24:39 ]
なにやってんだろうね

618 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:25:10 ]
つれたw

619 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:25:34 ]
そこら中にマルチしてやがるから通報しときました



620 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:28:59 ]
同一性保持権の侵害で訴えられんようにな
知ったこっちゃねーけど

621 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:30:29 ]
人格権以前に普通の著作権侵害だろ

622 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:30:35 ]
芝ゲーでニコニコから流れてきてるんだろ

623 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:50:42 ]
pythonや なでしこ とか他にもう少しメジャーな言語スレあるのにキチガイ何でDに来るかね

624 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:59:22 ]
Dも有名になったもんだな

あんまり嬉しくないけど

625 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:03:56 ]
ウォルたん「pythonの生産性 + Cの速度 + C++の自由度 = D」
一般的なプログラマー(昔)「Dはこける」
〃(今)「そろそろDもやっておくか」
C++「C++かわいいよC++」
0x「C++が使いやすくなってからD涙目wwwwwwwwwwwwwwwwwwwwwwww」
やねうらお「超素敵!!私の処女あげちゃう!」


626 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:05:34 ]
>>625
やねうらおwwwwwwwww
しかし正直俺あの人居なかったらDに興味持たなかったな。

627 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:30:10 ]
DのGCについての情報が有るページを教えてください。

628 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:33:30 ]
ttp://www.emit.jp/dgca/cmptest.html

629 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:34:20 ]
俺はやねうらおのおかげでしばらく敬遠してたな・・・ なんか知れば知るほどろくでもないとこが見えてくる人物だから



630 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 21:43:27 ]
ABAさんの所でD使ってるというのを見て、かなり興味持ったんだが
俺もやねうらおでちょっと敬遠してしまった。

631 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 22:07:39 ]
>>626
おれも

632 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 22:11:47 ]
>>625
ウォルたん(昔)「Boost対応めんど。新しい言語つくろ。」
〃(今)「バグ生まれすぎワロタ。」
一般的なプログラマー(昔)「D言語? 何それ?」
〃(今)「D言語? (Sun | Microsoft)が出してたやつ?」
C++「高給なのもC++のおかげ。むしろ皆は感謝すべき。」
0x「やっぱ後方互換と知名度が重要だよな。」
Java「結局ライブラリが全てなんだよね」
やねうらお「C#マンセーwwww」

633 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:29:19 ]
あれ、ここって 真面目な D言語の板じゃなかったっけか……orz
ま、おわったぽいからいいけどさ。

>632
C#かwwwww ってかDFLとかだとほぼC#だしなw


634 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:44:53 ]
C#というか、.NETだね。
Windows Formsはデザインがよく出来てると思う。
実装が悪くてもっさりしてるのがどうしようもないけど

635 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 08:37:54 ]
>>627
とりあえず最近の話で
ttp://video.google.com/videoplay?docid=-8961819826231183931&q=D%E8%A8%80%E8%AA%9E+GC&total=1&start=0&num=10&so=0&type=search&plindex=0

あとは本家のWeb-Newsからサルベージとか

636 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 12:56:46 ]
わなD更新されてる。やった知りたかった情報だし*^^
www.kmonos.net/alang/wnd/topics/winapi.ja.html


637 名前:636 mailto:sage [2008/03/09(日) 12:58:17 ]
ってAPI Bindingの更新だけかよ……orz RSSでとちったorz

638 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 13:01:12 ]
>>636
そのページどこか変わった?
前見たときから何も変わってないと思うのだけど。

639 名前:デフォルトの名無しさん [2008/03/09(日) 13:13:16 ]
>>638
イカれ?



640 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 13:59:55 ]
最新: 2007/03/07
ってあるが。

641 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 14:19:37 ]
ちょっと大きめ(最大60MB位)のデータを扱うようなウインドウプログラムを組んだんだけど、
処理するたびに仮想メモリを開放せずに食いつぶすんだがどうにかする手法はないかな。
このままだと他のアプリケーションのメモリをスワップアウトさせてしまう。
タスクマネージャで見てみるとメモリ使用量はウインドウを最小化させると減るみたいなんだけど、
仮想メモリは握ったまま。200MBとかしゃれにならん。
GCの挙動も良くわからないし…。

642 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 14:31:57 ]
std.c.stdlib.mallocで管理しきれるならそれでどう?
下記の解説の「明示的なクラスインスタンス割り当て」の項参照
ttp://www.kmonos.net/alang/d/2.0/memory.html

643 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 15:11:12 ]
>>641
>タスクマネージャで見てみるとメモリ使用量はウインドウを最小化させると減るみたいなんだけど、
それページアウトしてるだけだよ。実際には減ってない。

644 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 15:32:15 ]
>>641
ヤマカンでどこら辺があやしと思う?
GC?ライブラリ?自前?

645 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 16:21:28 ]
現在の実装では、GCが確保した領域は解放されないとか、誰か書いてた覚えがある。

646 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 16:37:32 ]
>>641
TangoのGC使うとちょっとはマシになるかも(minimize実装されてる)。
phobosのGCの実装はプログラム終了時以外に確保したメモリを返却しない。

647 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 16:50:22 ]
>>645
>>646

ということはGCあってもfreeしろってことか。
freeつうかdelete

648 名前:647 [2008/03/09(日) 17:21:28 ]
つまり、Dの場合はリトルエンディアン(パソコンでプログラムを使う際に使用される16進数の形式のネイティブWinAPI関数)は
静的(ガベージコレクタによって関数がオーバーロードされ変数のスコープからはずれたりするのを防ぐコア関数)
なデストラクタ(使い終わったオブジェクトをユーザーからのイベントパンドラ無しにイベント駆動型のラムダ式)
として扱われると言うこと。
uint* uiにするとβ変換(変数をグローバルなスコープから外し新しいシステム型変数として使うための変換)
が正常に行えなくなるのでfile*uint[ui]にしておいたほうがいいということ

649 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:21:46 ]
>>647
違う



650 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:35:34 ]
>>647
解放する手段は無いってこと。

651 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:49:23 ]
つまりサブプロセスを立ち上げて不要になったら殺すしかいないと。

652 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 18:01:55 ]
>>647
プロセスとして確保した領域を解放する話と、
各オブジェクトに使っていた領域を解放する話が
マゼコゼになってるぞ。

653 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 18:06:56 ]
>>652
ごめん、あまり読まずにレスしてた。
穴があったら埋まりたい・・・

654 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 18:16:51 ]
みんなスルーしててワロス

655 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:00:46 ]
自分で開放するにはmalloc&freeしかないってことでおk?

656 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:21:27 ]
レスどうも。

>>643
そうだったんですか。
最小化されるとページアウトさせるのはOSですよね。

>>644
疑おうと思えば全部と言えます。
ただ、自動で回収されるとなってる以上、malloc,freeを使わなきゃいけないのもおかしい気が。。。

>>645-646
以前同じようなことを聞いたときも同じような回答でした。
確かstd.gcの話だったと思います。
minimizeが動かないと言う結論でした。

>>655
mallocでメモリを確保することは出来ても、freeで開放されません。

657 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:22:56 ]
リリースビルドしてる?
解放されてると思うんだけど

658 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:23:13 ]
いや、freeは解放されるだろ。GC関係ないんだから。

659 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:25:26 ]
メモリが解放されないって事はD言語で作られてるゲームとかどうなってるんだろう




660 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:29:52 ]
import std.stdio; import std.c.stdlib;
void main(){
  writef("malloc ");
  void* p = malloc(104857600);
  writef("ok");
  readln(stdin);
  writef("free ");
  free(p);
  writef("ok");
  readln(stdin);
}

#include <stdlib.h>
#include <stdio.h>
void main(){
void* p;
printf("malloc");
p = malloc(104857600);
printf(" ok\n");
getch();
printf("free");
free(p);
printf(" ok\n");
getch();
}

こんな感じで試してみました。
Cのほうはもちろん開放されましたが、
Dの方は開放されませんでした。

661 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:32:24 ]
>>657
dmd -release main
これで良いんでしょうか?
freeでは開放されませんでした。GCの方はまだ試してません。
DMDのパージョンは1.028です。

662 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:33:47 ]
Dのmalloc&freeはプロセスとしてOSからmalloc&freeしているのではなくて、
Dのプロセスが一括してmallocしてきたメモリプールから小分けしているだけでは。
だからプロセスとしては使用メモリは増加する一方。minimizeしないから。

663 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:45:37 ]
んー、卒研のプログラム書いた時は
newとdeleteでメモリ開放されてた気がするなぁ。
少なくとも増え続けることはなかった。
@Linuxだけど。

664 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:52:22 ]
卒研でD言語か・・・無茶しやがって(AA略

665 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:15:03 ]
メモリの解放をどのような意味で使ってるかよくわからない

666 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:19:50 ]
ガベコレだよ?

667 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:29:25 ]
GCは必要なメモリをOSから確保するが、必要のなくなったメモリをOSに解放することはしていない。

668 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:31:29 ]
C#やC++/CLIと同じ様にOSの提供するメモリ管理機能にメモリ管理を任せてるだけ

669 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:41:44 ]
「メモリの解放」 は何を意味するか

1. デストラクタが呼ばれる。
2. 内部的に free の処理が走る。
3. free したメモリが実際に OS に返される。



670 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:43:07 ]
襲いかかる(笑)

671 名前:670 mailto:sage [2008/03/09(日) 23:43:29 ]
ごめん誤爆

672 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:43:55 ]
4. 襲いかかる

673 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:48:17 ]
std.c.stdlib.mallocはCのラインタイムライブラリとリンクされるから、
おそらくfreeした領域は可能であれば適当な時期にOSに返還されるはず。

std.gc.mallocはGCの管理領域から割り当てられるから、
phobosの実装だと、freeしても永久にプールされつづける、と思う。

>>663
deleteした領域は、空き領域としてプールされて再利用されるから、
new/deleteの繰り返しで増え続けることはないよ。

674 名前:637 mailto:sage [2008/03/10(月) 00:02:51 ]
ちょっと付け足しとくと、
> おそらくfreeした領域は可能であれば適当な時期にOSに返還されるはず。
って書いたけど、Windows版DMDの場合は、DMCのsnn.libを使って、
linux版やGDCはglibcを使うと思うから、そこで実装の差が出てくる可能性はある。

675 名前:デフォルトの名無しさん [2008/03/10(月) 00:33:17 ]
僕のブログ見てほしいんですけど
o.z-z.jp/thbbs.cgi?id=sasanunu&p3=&th=541

676 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 00:33:49 ]
すぐ返還

import std.stdio, std.loader;
void main() {
 scope ExeModule msvcrt = new ExeModule("msvcrt.dll");
 extern(C) void* function(size_t) malloc;
 extern(C) void function(void*) free;
 malloc = cast(typeof(malloc)) msvcrt.getSymbol("malloc");
 free = cast(typeof(free)) msvcrt.getSymbol("free");
 writef("malloc ");
 int size = 32*1024*1024;
 ubyte* p = cast(ubyte*)malloc(size);
 for( int i = 0; i < size; i++ ) p[i] = 0;
 writef("ok");
 readln(stdin);
 writef("free ");
 free(p);
 writef("ok");
 readln(stdin);
}

677 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 01:27:12 ]
>>675は危険

678 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 02:12:20 ]
D言語終了のお知らせ

679 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 02:19:48 ]
どのD言語?



680 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 02:20:56 ]
ばかやろう、まだはじまってもいねぇよ

681 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 02:22:46 ]
さっさと開始してくれ

682 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 02:24:28 ]
3.0になったら始動する

683 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 03:33:37 ]
型が同じ連想配列の結合ってできないの?

684 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 09:53:38 ]
できないね。

キーが重複した場合に左右オペランドのどっちを優先するかって問題があるし、
自分で実装したほうが安心なんじゃない?

K[V] merge(K, V)(K[V] a, K[V] b) {
K[V] c;
foreach(k, v; a) c[k] = v;
foreach(k, v; b) c[k] = v;
return c;
}

685 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 09:55:18 ]
AAに.dupがなかったことに今更きづいた

686 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 10:03:03 ]
dup欲しいよねdup

687 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 17:49:06 ]
tangoでsprintfみたいな文字列の整形が出来るのはどの関数ですか?

688 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 18:26:39 ]
>>687
tango.text.convert.Sprint かな??

689 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 18:51:28 ]
>>688
どうもです。C#の文章整形というものははじめて見ましたが、結構使えそうですね。

phobosに比べてclassいっぱい日本語資料ほとんどなしで、
英語の資料もあるには有るけどなれない言語なので情報にたどり着くのが大変です。



690 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:36:00 ]
Tangoはクラス名と関数名だけでだいたい何をするかわかるから、慣れればかなり楽だよ。
細かい挙動は英語読まなきゃいけないけど。
ただ、opCallのオーバーロードがキモイ。それだけ。

691 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:42:33 ]
Tango 0.99.5
ttp://dsource.org/projects/tango/wiki/0_99_5_release

692 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:43:55 ]
tangoのopCallは本当に不人気だな

693 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:29:18 ]
俺の中ではあれのせいでかなり印章悪いけど他は割と強いのかなあ

694 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 03:20:02 ]
そろそろgdcも新しいの出して欲しい

695 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 04:35:54 ]
sf.netのSVNリポジトリからチェックアウトすればいいんじゃね?
今どうなってるのかは俺は知らんが

696 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:28:44 ]
>>694
Subversionリポジトリの方では、1.024と2.008に追従する更新が
9日に来たばかりですね。
lists.puremagic.com/pipermail/d.gnu/2008-March/001474.html


697 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 14:38:12 ]
あまり使わないんで気が付かなかったけど
Tangoだとphobosと違ってmainへの一個目の引数がフルパスにならないんだな。
呼び出しに使ったコマンドそのものになる。

たとえばコマンドプロンプトで
tango使ってdmdでコンパイルしたmain.exeのあるディレクトリをカレントにして
mainと入力して実行すると、第一引数が"main"になる。

windows上での話だけど。

698 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 14:58:47 ]
TangoはGetCommandLineWで取ってるけど、
phobosはCのargvをそのまま使ってるね。

ということは、phobosはマルチバイト文字でおかしくなる可能性があるのかも。

699 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:13:56 ]
その辺はガイシュツ



700 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:07:06 ]
import tango.io.Console;
import tango.core.Memory;

void main(){
   GC gc;
   Cout("malloc").newline;
   Cin.copyln;
   void* p = gc.malloc(104857600);
   
   Cout("free").newline;
   Cin.copyln;
   gc.free(p);
   
   Cout("finish").newline;
   Cin.copyln;
}

TangoだとGCがしっかり動いてると言うので書いてみた。
やっぱりと言うかなんと言うか、仮想メモリはTangoでも開放されないな。
Cのmallocとは等価じゃないってことか。

Win32API使ってphobosのstd.file.readのような関数を作って30MB位のファイルを読み込んで
それに一文字半角スペースを~で足してscope char[]に読み込みcollectとminimizeをやると言うループを作って
Cout.copylnでウエイトを入れながらまわしてみたけど260MBまで遠慮なくメモリを使うぜ。
多分これが効率的だからそうなってるんだろうけど、collectやminimize使っても制御が出来ないのはなぁ。

701 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:28:12 ]
どっちのGCもcompaction機能もってないし、
GC周りはどうにかしないといけないよなあ。

702 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:11:06 ]
リンカがGCライブラリを切り替えられるようにすればいい。

703 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:40:03 ]
>>700
はずしてるかもだけど、この辺の話?
ttp://d.hatena.ne.jp/NyaRuRu/20080306/p1

ちょっと前に読んだなぁって、思い出した。

704 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:43:28 ]
Windowsのdmcも、即OSに返還されないね。orz

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void main(){
printf("malloc");
void* p = malloc(104857600);
memset( p, 0, 104857600 );
printf(" ok\n");
getch();
printf("free");
free(p);
printf(" ok\n");
getch();
}

705 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:52:06 ]
>>704
てか原因はそこじゃないかな?

706 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:59:57 ]
タスクマネージャのプロセス一覧で見えるメモリ消費量は、
そのプロセスが使ってるメモリ領域を正確に表示した物じゃないらしいので、
freeしたら即減るかっつーとそう言うもんでもないようです。

あとDのメモリ管理ってメモリプールみたいな感じで一度メモリ領域拡張されると縮小されにくい物なんじゃ?

707 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 01:05:52 ]
>>704
www2s.biglobe.ne.jp/~hig/q_a/Programing_QA02.html#Q4

708 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 01:11:25 ]
なあんだ、結局Dのnew&deleteとほぼ同じかもしれないってことかー

709 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 02:10:28 ]
>707
ほぉ〜勉強になったさんくす



710 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 07:31:22 ]
>>706
VCのclやgccだとfreeですぐに減ってるので、多分2段落目のとおりだと思う。
これも実装の違いなんだろう。

結局、Cみたいにある程度管理しながらうまいことメモリを使わないといけないのは変わらないわけかな。

711 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 09:18:41 ]
ガベージコレクタのおかげで、うっかりdelete忘れてプロセス起動中に延々と
メモリを圧迫し続ける心配がないっていう程度ですかねえ。


712 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 09:50:29 ]
基本的にはDでメモリをOSには返せないってこと?
VC++だかgccだかでDLL作ってそっちのmalloc/free使えばいいのか。

713 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 10:00:05 ]
自前でHeapAllocすればいいんじゃ

714 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 13:26:29 ]
返還する目処のある処理を別プロセスにすりゃいいんじゃ?
すりゃいいってほど簡単じゃないけど。

715 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:16:30 ]
プロセスにオブジェクトを渡してオブジェクトを受け取る、とか出来ないから
モジュール化がだいぶしょぼくなるな。

出来ればいいのになー。.NET環境だとそういうのもあるのになー。
OSはメモリもオブジェクトのメタデータも管理しちゃえばいいのに。

716 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:35:02 ]
tangoにシリアライザなかったっけ。

717 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 22:37:26 ]
>>715
モジュールをDLLとして作れば、Dのオブジェクトを渡したり
GCをプロセス間で共有したりできるみたいよ。

718 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:13:25 ]
マイクロソフトD言語潰す宣言
「既存のD言語のライセンスはもちろん買収するつもりだ」――CEO会長坂田雄太
an.to/?microsoft01news

719 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:18:29 ]
>>718
Fxで開いたらrundll32.exe url.dll,TelnetProtocolHandlerとか出てきたが何をするつもりなんだ。



720 名前:デフォルトの名無しさん [2008/03/14(金) 10:22:03 ]
>>718
正確に「潰す」とは言ってないんだろ?
だったら問題ないと思うが

721 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:33:20 ]
ブラクラです

722 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:35:46 ]
別にE言語になってもイーっすよ

723 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 11:24:11 ]
Dって元々Mars言語って名前だったのを、
をるたんの友人がD言語って言い張るもんでいつの間にかDになったんじゃなかったっけ。
MSに名前押さえられても元のMars言語って名乗れば問題ないよね。

724 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 11:32:39 ]
>723
マスコットキャラかわいそう・・・・・・

725 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 11:45:40 ]
>>724
あんなゴキブリみたいな顔してるムカつくマスコットなんだから
どこか別の場所に生きる術を見出せるさ。

726 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 11:54:18 ]
>in パラメタ記憶域クラスを scope const の意味としました
あれ、finalは・・・

727 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 13:17:30 ]
finalはみんなの心の中で生き続けるよ

728 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 13:58:12 ]
むしろ「かぶっちゃったけどどうしてもこの名前使いたい」って言って
MSがお金払ってくれたら棚ぼたなのにw

729 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 15:05:36 ]
>>728
最初からそれ狙いでしょ。
つーか、世の中にD言語って、このD言語以前からも色々あるわけだが。



730 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 15:27:27 ]
なるほど、D言語と名づけたのは金狙いか
思惑通りMSが金払ってくれるのは、むしろいいことじゃあないか
めでたしめでたし

731 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 15:57:12 ]
??????????

732 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 16:05:10 ]
このスレもやたらレベルがさがったな

733 名前:デフォルトの名無しさん [2008/03/14(金) 16:12:38 ]
だってD言語だもんな

734 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 16:36:42 ]
なんかマイクロソフトの"D言語"の話題を何回も蒸し返したがる子がいるのね。

735 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:08:00 ]
MSにあのマスコットキャラ売っちゃえばいいんじゃね?

736 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:36:28 ]
MSならきっと立派に育ててくれる

737 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:53:46 ]
マイクロソフトに期待してる人が結構いるんだね
Linux使ってる俺にとってはどうでもいい話だが

738 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 19:12:14 ]
M$ が主導しても自分では Windows でしかコンパイラ作らないんだろ?
価値ないよ。

739 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 20:13:53 ]
そろそろxamlでDFLフォームを作るコンバータをだな



740 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 20:23:43 ]
WPFのDバインディングとかは使ってみたいよね。

Dから.NETのリフレクション機能をさわるのはできたけど、
CLRのGCとDのGCを上手いこと動かしてリークを防ぐのがめんどい。

741 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 20:28:30 ]
Iron DなのかD.NETなのかD#なのかが問題だ。

742 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 20:38:43 ]
どうでもいい

743 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:08:43 ]
D.NET はもうある(正確にはあった)

744 名前:デフォルトの名無しさん [2008/03/14(金) 22:23:18 ]
静的に文字列を置換する方法てないですかね

const string foo = "pal = 5;";

class Hoge{
int val;
void DoSomething(){
const string myfoo = static_replace(foo,"p","v");// <-こんなかんじ
mixin(myfoo); // val = 5; に展開して欲しい
}
}

745 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:24:55 ]
F#はもうある。

746 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:33:36 ]
>>737、向こうで噴いた
200 :login:Penguin :sage :2008/03/14(金) 18:53:16 ID:mDbK1QBH
マイクロソフトに期待してる人が結構いるんだね
Linux使ってる俺にとってはどうでもいい話だが

201 :login:Penguin :sage :2008/03/14(金) 18:54:22 ID:mDbK1QBH
↑誤爆


747 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:34:00 ]
>>744
ないんだったら作ればいいんだ。
string static_replace(string text,string from,string to){
    string result;
    while(text.length >= from.length){
        if(text[0..from.length] == from){
            result ~= to;
            text = text[from.length .. $];
        }else{
            result ~= text[0];
            text = text[1..$];
        }
    }
    return result ~ text;
}
あと、const string myfooだとなぜかdmd君は落ちやがったのでstatic付けてみた
const static string myfoo = static_replace(foo,"p","v");


748 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:37:42 ]
CTFEあるからstd.string.replaceでイケるっぽくない?

749 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:45:26 ]
>>748
残念ながらstd.string.replace君の中のstd.string.findはCTFEで対応していない機能(memchrとか)を使ってるんだよね。

個人的にはversion(compileTime)相当のものを処理系が用意するなりなんなりで、
std.stringとかはCTFE時にも動作するように作り直してほしいなあとか思ってたり。



750 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:49:40 ]
pure関数はCTFEされるとかいう風になると思うんだがどうだろう

751 名前:744 mailto:sage [2008/03/14(金) 22:50:11 ]
>>747
>>748
>>749
ありがとうございます
CTFE・・ 初めて聞く単語だ(実はD言語習いたて)
ググってきます

家の環境にはD言語入れてないのでこれからインスコして試してみます

752 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 23:01:48 ]
CTFE の条件てどこにかいてありますか?

753 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 23:05:39 ]
>>752
ソース

754 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 23:19:52 ]
ttp://www.kmonos.net/alang/d/2.0/function.html#interpretation

755 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 23:32:52 ]
>>754
サンクス!

756 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 00:23:30 ]
CTFEでwithが使えないってのはどういう理由なんだろう

757 名前:737 mailto:sage [2008/03/15(土) 00:35:21 ]
>>746
ヽ( ・∀・)人(・∀・ )ノナカーマ

758 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 04:08:08 ]
>>756
シンボルの検索は兎も角として、ポインタ使えないのにwithが使えてどうするという気が。

759 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 04:16:15 ]
多くのメンバを持つ構造体にアクセスするときとか、
with(std.stdio)みたいに普段は使わないモジュールを導入するとか
便利だと思うんだけどなあ。

withとポインタが使えないことに何の関係があるのかはよくわからない。



760 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 17:24:57 ]
MacOSX 10.5 Leoprad でD言語の環境をそろえようと思って
sudo port install gdc
して、簡単な HELLO WORLD つくって test.d で保存して
gdc test.d
したんだけど object.d が見つからんと言われたので、ひとまずインポートパスを指定して

gdc -I "/opt/local/include/d/4.1.2" test.d

ってやったら、

ld: file not found: crt.o

てエラーが出たんだが。。。これってリンカエラーだよね。
crt3.o ってファイルは dmc 関係のフォルダでいくつか見つかったんだけど、
どこでパスを指定するの?

というか、gdc のリンカに dmc のオブジェクトファイル渡してもいいのかな??



761 名前:760 mailto:sage [2008/03/15(土) 17:26:03 ]
いや、よく見たら gcc のフォルダにも crt3.o がありました

762 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 17:36:01 ]
file not found: crt.o
なのになんでcrt3.oを探してるの?

763 名前:760 mailto:sage [2008/03/15(土) 17:53:03 ]
あ、しつれい
ld: file not found: crt3.o
だった

764 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:42:15 ]
Phobosのboxer.dの中に
TypeInfo type() const
{
return cast(TypeInfo)p_type;

こういうメソッドがあるけど、constがメソッド名の後ろにあるのってどんな意味があるんでしょう?

765 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:48:01 ]
それはC++風の書き方で、普通はconst TypeInfo type()と前置する。
constをつけたメンバ関数はconstメンバ関数とみなされて、
thisポインタを経由してオブジェクトの状態を変更しないことが保障される。

766 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 20:19:41 ]
>>765
なるほど、C++だとこういう風に表記するんですね。
わざわざ後ろにあるので何か特別な意味があるのかと思いました。
有難う御座いました。

767 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 21:43:32 ]
Tangoについての質問です。
やりたいことは正規表現でstr中のURLをハイパーリンクにすることなんですが、

auto replaced = Regex(r"((?:f|ht)tp://[\w\.$,;:&=?!*~@#\(\)/]*)").replaceAll(str, "<a href=\"$1\">$1</a>");

こういうコードにしてみたら戻り値が無いんですが、perlの

$str =~ s/((?:ht|f)tp\:\/\/[a-zA-Z0-9.$,;:&=?!*~@_\(\)\/#]*)/<a href="$1">$1<\/a>/g;

のようにするにはどうすれば良いのでしょうか。


768 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 23:19:16 ]
>>767
Tango使ってないけどソース見てみた.
>戻り値が無い
ということはnullということなんだろうけど,
ただ単にその正規表現だと見つけれてないだけな気がする.
ソース見る限りはsearchやってるだけだし.
Phobosのregexp.dの中にURL用の正規表現文字列があるからそれ使ってみるとか.

Phobosのregexp.dだと後方参照しないグループ化は出来なかったと思うんだけど(余り使ってないので自信なし),
TangoのRegexp.dだと出来るのか.

769 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 01:06:49 ]
>>767
俺もTangoは使ってないんだが、マニュアルを見る限り、
(?:ht|f)の所は(?ht|f)が正しいのではないかと思う。
あと、replaceAllで$1とかは使えないかもしれない。
ソースを見てみると単純に連結していて、$1とかでどうこうという処理はしていないようだから。




770 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 01:45:32 ]
>>768
searchやってるだけじゃないよ。

>>767
なんとか動いた。 $1とかは置換してくれないみたいだね
固定した文字列との置換なら、delegateのいらない方のreplaceAllでもOK

(?:)は使えないので()を使用する。 phobosのregexpもそうだったはず。

//tango-0.99.5 で新しくなったRegex用
import tango.text.Regex, tango.io.Stdout;
void main() {
char[] s = `hoge pc11.2ch.net/ hoge www.digitalmars.com/d/ fuga`;
auto re = RegExpT!(char)(`((ht|f)tp\:\/\/[a-zA-Z0-9.$,;:&=?!*~@_\(\)\/#]*)`,`g`);
auto dg = delegate char[] (RegExpT!(char) re) { return `<a href="`~re.match(1)~`">`~re.match(1)~`</a>`; };
char[] result = re.replaceAll(s, dg);
Stdout(result).newline;
}

771 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 01:57:58 ]
aliasがあるから、わざわざRegExpT使わなくてもいいみたい

import tango.text.Regex, tango.io.Stdout;
void main() {
char[] s = `hoge pc11.2ch.net/ hoge www.digitalmars.com/d/ fuga`;
char[] result = Regex(`((ht|f)tp\:\/\/[a-zA-Z0-9.$,;:&=?!*~@_\(\)\/#]*)`,`g`).replaceAll(s, (Regex r) { return `<a href="`~r.match(1)~`">`~r.match(1)~`</a>`; } );
Stdout(result).newline;
}

772 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 07:27:35 ]
>>770-771
どうもです。
そのソースをまるまるコピペして動かしてみたんですが、
object.Exception: Access Violation
となってしまいました。
うーん。

773 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 14:11:47 ]
>>772
とりあえずTangoを入れて動かしてみたけど
>object.Exception: Access Violation
となるのはStdoutのせいっぽい(俺の環境では).
tango.io.ConsoleのCoutを使ったら,771のソースでちゃんと置換されたのが表示された.
Stdoutでこのエラーになる原因は面倒なので追ってない.

774 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 16:32:06 ]
tango.text.Regex の compileToD すごいな。
出力されたコードを少し書き換えたらCTFEでも動いた。
CTFEで正規表現使いたい時にいいかも。
単純な処理しかしてないから、
Cやアセンブラに書き換えるのも容易かも。しかし長いw

775 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 18:21:13 ]
>>772
Stdoutでバグるのは,Regex.dでdebug時にStdout.dをimportしてたから
コンパイル時にdebugオプションをつけたら動くようになった.
といってもdebugなしで普通にimportしてもエラーが出るので,
この辺の原因はよく分からない.
static thisとかの初期化とかで何か問題が発生してるのかも.
力になれなくて申し訳ない.

776 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 18:54:33 ]
PhobosとTangoが仲良くなりますように(-人-)

777 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 18:54:47 ]
っTangobos

778 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:25:04 ]
>>773>>775
うーむ、
Stdoutはデバッグで使いたいので、こうなると正規表現でURLを抜き出すのは面倒ですね。


別の手法も思いついたのでそっちで一度試して見ます。
どうもでした。

779 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:50:17 ]
>>778
もういいかもしれないけど,とりあえず追加で書いとく.
Stdoutがどうこうとか書いたけど,自分でもよく分からなくなってきたw
771のソース前提で,とりあえず出力される方法.

・Cout/Cerrを置く
色々試してたら,Cout/Cerrを置くと普通にStdoutでも出力されるようになった.
・Stdout(Stdout);
これを置いても出力された.Stdoutの型も出力されるので使えない.
・Stdout.dと同じことをやる
Stdout = new Print!(char) (new Layout!(char), Cout.stream);
同じことしてるのに効果が違うのはよく分からないんだけど.

どれも根本的な解決策じゃないので応急処置的な感じ.
>>770は動いているようだし,環境も関わってるのかなぁ.
それにしてもStdout(Stdout)がまともに動くのは何故…



780 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 12:16:11 ]
日本語うめえ

781 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 12:16:34 ]
誤爆

782 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 15:57:50 ]
なんかネタないの?

783 名前:770 mailto:sage [2008/03/18(火) 17:35:48 ]
>>779
こちらでも、dmdでビルドしたものはAccessViolation出ました。
budで、tango-user-dmd.libを使わずにビルドすると正常動作するけど、
使う設定でビルドだと、AccessViolationでした。

tango-user-dmd.libを再makeすれば直るのかな??

784 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 20:37:12 ]
>>783
budでOKということで,試しにDSSSでビルドしたら普通に動いた.
これくらいは昨日試しておくべきだったorz
770の言うとおり,生成済みライブラリになんらかのバグ(コンパイル状況による?)があるっぽいね.

Tangoのソースからのビルドが英語だらけで挫折.

785 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 06:46:04 ]
>>782
ソースを落として、dmd.exeとdmc.exeにパスが通っている状態でlib内のbuild-tango.batとかを実行
…だと思うのだけど、再コンパイルできなかったりできてもやっぱりバグったリ…何かがおかしい。

786 名前:785 mailto:sage [2008/03/19(水) 06:47:12 ]
>>782 じゃなかった… >>784 でした。申し訳ないorz

787 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 03:37:51 ]
今のところ2.0で動くGUIライブラリってない?

788 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 11:46:08 ]
wxDの履歴にinvariant string対応とかあるけどどうなんでしょ

789 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 15:28:54 ]
tangoのDateTimeとかはどこに消えたんですかね・・・
似たようなクラスって何かありますか?



790 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 19:29:35 ]
tango.time.Timeの中にあるようだけど

791 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 19:55:15 ]
久しぶりにPoseidon落としてみたが、キーボードショートカットでrun_projectの割り当てが出来るようになってた。
軽いし、やっぱり気軽にプログラミングするにはいいエディタだな。

792 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 22:22:35 ]
D言語をMac OS Xで始めました。
目的はWin/Linux用のD言語で書かれたコンソールアプリの移植です。
最初に既存のソースコードをXcodeからコンパイルして勉強できる環境を構築しようと思い立ち
いろいろ調べていますが、参考になるサイト等見つかりません。
どなたかMacでその道に足を踏み入れた方はいらっしゃいますか?

793 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 23:46:49 ]
D1/D2どちらでもいいので
C++のstringstreamみたいなのが欲しいんだけど
ありませんでしたっけ?

>>792
Macのは見かけたことないなー

794 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:02:49 ]
MemoryStreamに書いて、readStringとか。

795 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:24:03 ]
OutBufferに書いて、toBytesとか。

というかOutBufferの存在価値が昔から空気過ぎるんだけど必要なのかこれ。

796 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:27:01 ]
>>794 こうだと何も表示されないんだけど何が足りないのでしょう?
import std.stdio;
import std.stream;
void main(){
Stream ms = new MemoryStream;
ms.writeLine("hello");
string s = ms.readLine().idup;
writefln(s);
}
>>795 OutBufferはいらないよな・・・

797 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:29:54 ]
Streamは読み書きでpositionを共有してるからpositionのリセットが必要。
import std.stdio; 
import std.stream; 
void main(){ 
Stream ms = new MemoryStream; 
ms.writeLine("hello");
ms.position = 0;
string s = ms.readLine().idup; 
writefln(s); 


798 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:30:16 ]
これでできたようです
import std.stdio, std.stream;
void main(){
 Stream ms = new MemoryStream;
 ms.writeLine("hello");
 ms.writeLine("world!");
 string s = ms.toString();
 writefln(s);
}

799 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:31:30 ]
>>797 もしかしてそうじゃないかなと思ってpositionを再設定しようと
思ったんだが 0 を入れればいいのかわからなかったので
発見した toString() を試してみたらいけました
ありがとう



800 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:34:58 ]
>>799
toStringでもOK。
ただ、toStringはread可能,seek可能かによって微妙に動作が変わるから注意な。

801 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:38:38 ]
>>795
std.openrjと同じくらいは役に立つんじゃね?

802 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:47:09 ]
>>790
これは・・・・・

もしかしてまだ作りかけなのかな・・・・

803 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:56:33 ]
壮絶な勘違

804 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 01:00:49 ]
単に.NETみたいにしたいだけなんじゃ…






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<183KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef