1 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 23:00:35 ] プログラミング言語 D (D Programming Language) について語るスレッドです。 過去スレは >>2 ■本家 ttp://www.digitalmars.com/d/ ttp://www.kmonos.net/alang/d/ (和訳) ■コンパイラ ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家) ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド) ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ) ■参考URL ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究) ttp://dsource.org/ (dsource) ttp://tinyurl.com/3da5oa (C/C++に疲れた人のD言語) ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語) ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか) ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)
285 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 13:54:31 ] 罠D
286 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:57:09 ] MSがVisualStudioで出せば・・・ 万が一にもありえんか
287 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:55:09 ] MSがVisualStudioで出すことになれば仕様策定の遅さに苛立って 独自拡張を続け、ライブラリもMS独自のものが出来上がるだろう。 そう思うと当初のJavaと同じ問題抱えているな・・・
288 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:02:25 ] MS Visual D# ... それはそれでよさそうな気がしないでもない
289 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:10:23 ] ネイティブバイナリ吐かないDなんてC#でいいじゃん・・・
290 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:13:12 ] それならVisual D/CLIで…
291 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 23:15:56 ] >>290 /CLI の部分はいらねえー
292 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 23:23:02 ] >>274 IDEが何やってるのか分かる限りは、むしろIDEもライブラリも「使うべき」だと思う。 とeclipseのリファクタリング機能に味を占めたヘタレの俺が言ってみる。 強い型付けとかコンパイルの早さとか、IDEがあると生きてくる言語だと思うから余計勿体ないのよね。 しかし、年の瀬も押し迫ってきたな…… 去年の1.0への期待でwktkしながら年を越したっけなぁ。 来年のDは果たしてどこへ向かうことやら。 正月にはお空の火星に向かってみんなでお祈りだ。
293 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:40:03 ] 1月1日にv1.001が出たんだっけ? あれ?
294 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:57:25 ] じゃあきっと、あと2週間で3.001がでるな。
295 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 19:16:59 ] もうそんなになるっけ??
296 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 19:22:03 ] 0.99リリース ↓ ついに1.0が来るぞー! ↓ 0.100リリース ↓ (゚д゚) は2004年頃だったっけ?
297 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 19:52:33 ] 次のバージョンうpまだー
298 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 23:00:24 ] static foreachまだかお?
299 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 23:20:22 ] import std.metastrings; pragma(msg, Format!("%s%s", 1, 2)); %sが直に出力されちゃうんだけど、使い方間違ってる?
300 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 23:33:08 ] >>299 2.008ではうまく動いてないように見えるなあ
301 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 01:07:23 ] >>299 semanticが呼ばれてないに一票
302 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 17:01:27 ] MC++DのアンドレイがThe D Programming Languageって本書くよってさ ttp://erdani.org/ Andrei is working on "The D Programming Language" book, slated to hit the shelves in October 2008. His interest in the D programming language stems from Andrei's active participation in the design of D 2.0 as a close collaborator of D's creator, Walter Bright. あー 先週京都に来てたんだ Andrei will present the paper "Graph-Based Learning for Phonetic Classification" co-authored with Katrin Kirchhoff at The 2007 IEEE Automatic Speech Recognition and Understanding (ASRU) Workshop, December 9-13, Kyoto, Japan.
303 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:26:37 ] これは期待
304 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:58:32 ] 役に立つとか立たないとかじゃなく、好きな小説家の新作みたいに楽しみなんだけど、 これはちょっと妙な期待をしすぎかもしれんw
305 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:04:28 ] 日本語訳が出る頃には半分くらいコンパイル通らなかったりして そもそも日本語訳が出るかはさておき
306 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:29:16 ] 今時ならXMLベースでリソースファイル作ればいいんだけどね
307 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 01:03:37 ] >>302 本が出ることも単純に楽しみだけどこの文で一番気になったのは D2.0をOctober 2008頃には安定させるつもりだってこと
308 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 01:09:06 ] 3.0をリリースするってことだろw
309 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 05:52:34 ] ペロ・・・これは思い込み・・・!
310 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 05:53:14 ] 誤爆
311 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 22:08:33 ] 関数のインライン展開って何か条件ある? -inline オプションつけても全然効果無いんだけど。
312 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 22:27:27 ] インライン展開したら効率悪くなると判断されてるんじゃなかろうか
313 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 22:38:20 ] 逆逆。むやみにインライン展開されて逆に遅くなってるだけ。
314 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:37:29 ] -inlineつけたらどこまでインライン展開されるの? main以下全部ってわけじゃないよね
315 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:37:29 ] いやいや、例えば配列の境界チェックありで要素を取り出そうってので以下のような コードでテストしたらテンプレート化したほうは確実に遅いんだよね。-inline つけてもつけなくても。 size_t at(T)(T[] a, size_t i){ if( i < a.length ) return a[i]; else throw new ArrayBoundsException(null, 0); } void main() { char[] a = new char[64 * 1024 * 1024]; auto begin = timeGetTime(); for(size_t i = 0; i < a.length; i++) { if( i < a.length ) a[i] = a[i]; else throw new ArrayBoundsException(null, 0); } Stdout.format("{}", timeGetTime() - begin).newline; begin = timeGetTime(); for(size_t i = 0; i < a.length; i++) { a[i] = a.at(i); } auto end = timeGetTime(); Stdout.format("{}", timeGetTime() - begin).newline; }
316 名前:315 mailto:sage [2007/12/19(水) 23:40:33 ] で、上のコード実行すると最初のテンプレート化してないほうが 75ms ぐらいで、 下のテンプレート化したほうが 350ms ぐらいだった。-inline つけてもつけなくても一緒。 -inline つけたやつを逆汗したら当然展開されていなかった。
317 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:50:00 ] どうでも良い事でスマソ。 逆アセって事は、直接アセンブラを吐けないコンパイラなの?
318 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 00:47:37 ] ?? もっと平易な表現でお願い。
319 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 06:44:43 ] マイクロソフトって単位?
320 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 10:02:05 ] >>317 gdcは吐けるdmdは吐かない
321 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 22:01:20 ] dsss + Tango でリソースファイルをリンクするのにはどうするの? dmd-win-tangoとかdsss.confとか見たけどよくわからんかった…(´・ω・`)
322 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 22:48:22 ] >>320 thanx
323 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 23:09:21 ] dmdの場合はオブジェクトファイルをdmのobj2asmにかければ大丈夫じゃね?
324 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 13:48:13 ] 更新まだかなぁ・・・
325 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 00:40:57 ] >>324 じゃあこれで。 Tango 0.99.4 Frank has been released.
326 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 18:32:51 ] D言語ってJavaのJFrameみたいに簡単にウインドウ出せるの?
327 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 19:14:41 ] AWTのD-portingのDWTを使ってみるとか。
328 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 00:04:45 ] DFLならこう // www.dprogramming.com/dfl.php import dfl.all; int main() { Form myForm; Label myLabel; myForm = new Form; myForm.text = "DFL Example"; myLabel = new Label; myLabel.font = new Font("Verdana", 14f); myLabel.text = "Hello, DFL World!"; myLabel.location = Point(15, 15); myLabel.autoSize = true; myLabel.parent = myForm; Application.run(myForm); return 0; }
329 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 00:43:29 ] tango の最新版、日付・時刻関連が少しすっきりしたけど、まだ手の入る余地がありまくってるな。
330 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 03:17:45 ] >>327 DWTはSWTよ あと開発止まってるぽい
331 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 04:52:40 ] とりあえずTango0.99.4のtango.util.Convertの792行目あたりがあやしい。 returnで返さないっぽい
332 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 14:06:20 ] DFLは付属のdfl.exe使わされるのが嫌で使ってないなあ dmd.exeだけでできたい!
333 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 14:08:07 ] dmdでも長ったらしいオプションつけるか、応答ファイル書くかしておけばいけるでしょ。
334 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 22:14:13 ] 寧ろDFLのモジュールとlib以外の使い道知らんかった
335 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 21:57:56 ] ヲルたんからのクリスマスプレゼントwktk
336 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:36:16 ] 実際もうじき約一か月たつし、先月と先々月の更新の日付から見たら夢見てもいいかも? とりあえず全裸待機。
337 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:37:06 ] 風邪ひくぞ
338 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:44:08 ] いい子にして早く寝ないとな… をるたんのとこでは今何時かしらないけど
339 名前:デフォルトの名無しさん [2007/12/25(火) 22:36:46 ] >>110 でも出てるけど Assertion failure: 't->deco' on line 608 in file 'mtype.c' はいつなおるんだあああ
340 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 07:10:52 ] 全裸待機。 この前のカンファで目玉はなんだっけ あまり意味なさそうな static foreachしか覚えてないw
341 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 11:36:34 ] const属性を考慮してphobosが書き換えられているようだ
342 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 11:57:38 ] >>340 macro ADL 拡張メソッド static引数(関数テンプレートの糖衣構文) メンバの委任 コンパイル時に全てのcaseが網羅されているか検証するfinal switch あたりだったか。
343 名前:331 mailto:sage [2007/12/26(水) 21:03:27 ] Tango0.99.4のtango.util.Convertの792行目あたりがあやしいかったのは、rev3066で直ったみたいだ。 しっかし、Tangoもどこまでやったら1.0出す気なんだろ。 まぁ確かにもっとインターフェース良くなるところは多いと思うけど。
344 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:55:05 ] 2.0で追加されたphobosのライブラリを 1.0でも使えるようにするプロジェクト std2 が dsource にできてるね
345 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:14:25 ] それよりアップデートはまだなのか
346 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 20:34:53 ] extern(C++)便利だなこりゃ
347 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 21:19:39 ] >>346 あれってC++のソースのコンパイルをmsvcではなくdmcでしなきゃいけないんだよね? そう思ってstlportのセットアップが面倒で試してないんだが面白そう
348 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 21:27:47 ] C++のobjもOMFとCOFFって分け方でいいの? DMDはOMDってことになるのかな?
349 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 22:29:41 ] >>347 いやいや、VisualStudioで作成したやつだよ。 〜.libをlink.exeにくわさないとだめだけど
350 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 22:43:51 ] 正確には dmc も msvc も同じ修飾名を使っているので問題がない。 Linux ではどうなってるかしらん。
351 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 00:18:13 ] extern(C++)といえば、interface宣言を使ってC++のオブジェクトをDからアクセスできるようになったけど、これの場合はCOMと同様にC++マングルは関係なくなるのかな?
352 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 00:40:44 ] いえす。C++マングリング規則にD側が合わせることになる。
353 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 00:41:45 ] COMインターフェイスってどういう条件で普通のインターフェイスからCOMインターフェイスになるの? IUnknownを継承するだけでいいの?
354 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 00:58:33 ] >>352 ? DのinterfaceがC++のオブジェクトモデルと互換性があるということで、実際のシンボル名関係なしにVTbl手繰ってメソッド呼べるのかなぁと思ってたんだが、この場合でもあの_ZN3なんとかみたいなシンボル名からメソッドを呼び出しているの? >>353 MS用語でいう"カスタムインターフェイス"ならIUnknown継承だけでCOMインターフェイスだったと思う。 実際にCOMコンポーネントとして使えるようにするにはいろいろ登録したり、QueryInterfaceの動作要件とかあったはず。
355 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 07:58:40 ] >>353 extern(Windows)なinterfaceだったと思う。
356 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 11:02:18 ] >>353 IUnknownって名前のインターフェイスを継承するだけでいいみたい。 interface IUnknown { } interface ITest: IUnknown { } void main(){ ITest o; delete o; //Error: cannot delete instance of COM interface ITest }
357 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 07:09:33 ] COMインターフェースが何に使えるかおすえて
358 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 08:44:34 ] DLL を通してクラスを提供可能。
359 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 13:30:23 ] news://news.digitalmars.com:119/fl2jnu$1i6p$1@digitalmars.com > Subject: During these holiday times... > From: Walter Bright > Date: 2007/12/28 19:38 > > ...we should take a moment to reflect on the important things in life. > > uk.youtube.com/watch?v=s_QpBhdvK2Q
360 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 19:47:29 ] えw
361 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:03:28 ] >>349 ごめんできない // cpp.cpp #include <iostream> #include "cpp.h" void Cpp::func() { std::cout << "call Cpp::func()" << std::endl; } Cpp* newCpp() { return new Cpp; } void deleteCpp(Cpp* instance) { delete instance; instance = NULL; } これをmsvcでコンパイルして cpp.lib もしくは cpp.obj を作った
362 名前:361 mailto:sage [2007/12/30(日) 01:04:06 ] // main.d extern(C++) { interface Cpp { void func(); } Cpp newCpp(); void deleteCpp(Cpp instance); } void main() { Cpp cpp = newCpp(); cpp.func(); deleteCpp(cpp); } >dmd -c main.d >link main.obj cpp.lib OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved d_to_cpp.lib Error 43: Not a Valid Library File --- errorlevel 1 何がまずいですか?
363 名前:361 mailto:sage [2007/12/30(日) 01:06:09 ] 間違えた C++のソースはcpp.cppじゃなくてd_to_cpp.cpp
364 名前:349 mailto:sage [2007/12/30(日) 07:27:19 ] ごめん、 libにくわすんじゃなくて implib.exe だった C:\dm\bin\implib.exe /s $(OutDir)\$(TargetName).d.lib $(TargetPath) こういうことをやってます。 で出力された 〜.d.lib を lib.exe でリンクね
365 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 21:25:36 ] 皆さんよいお年を をるたん来年もよろしく 2008.1.1の更新きたい
366 名前: 【小吉】 [2008/01/01(火) 03:26:27 ] あけおめ アップデート期待age
367 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 09:51:38 ] あけおめ をるたんところは、夕方ごろ年明けだよね。
368 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 11:10:14 ] ああ、アメリカかあ。生アメリカだよなあそこ。いいなあ。。。
369 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 12:05:15 ] D3.0が出ると聞いて
370 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 14:32:33 ] D 0.2008 になると聞いてやってきました。
371 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 17:57:30 ] 今年こそは伝説のIDEが現れますように
372 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 19:55:39 ] その前に伝説の言語仕様が現れないと
373 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 20:34:40 ] 2.009ktkr…なにこのがっかり変更数 裏で何か巨大なものを作ってると思って待つしかないか…
374 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:40:06 ] これはがっかりすぎる…
375 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:44:13 ] CTFE周りのバグフィックスはまあ嬉しい
376 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 00:31:55 ] 新バージョンへの期待大きすぎワラタ > Redid const/invariant semantics again. やり直し…? どう変わったのかよく分からないや。
377 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 00:57:17 ] >>110 が直ってないし・・・
378 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:01:54 ] >>376 void f(const(int) x); void f(int x); のオーバーロードが出来るようになってるのは確認した。 invariant(int) i; i = 4; もできなくなってるから、トップレベルのconst/invarinatの扱いが変わったみたいね。
379 名前:378 mailto:sage [2008/01/02(水) 01:06:56 ] invariant T var; invariant(T) var; ドキュメントによれば、この二つが完全に等しくなったみたいだね。 やっと気持ちの悪いねじれが解消された感じ。ようやくだけど。
380 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:16:41 ] 全く同じ関数が二つ以上あっても呼ばれなきゃエラーにならなくてワロタ。
381 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:20:05 ] >>380 おおほんとだ。 リンカエラーにはなるけど、コンパイラはお咎めなしなんだな
382 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:31:48 ] Manifest Constant enum string s = "hoge"; もはやenumの意味が消失してしまってる…
383 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:42:20 ] だめだ…をるたたん止めないと… class C { } void main() { const(C) c; c = new const(C); // error!!! }
384 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:15:44 ] struct A {} A a0; const A a1; a0= a1; //Error: cannot implicitly convert expression (a1) of type const(A) to A をるたん・・・
385 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:40:31 ] >>384 それは今まで出来たのがおかしい気がする。