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みたいにしたいだけなんじゃ…