1 名前:デフォルトの名無しさん mailto:sage [2011/08/24(水) 06:02:12.35 ] プログラミング言語 D (D Programming Language) について語るスレッドです。 ■前スレ D言語 Part27 hibari.2ch.net/test/read.cgi/tech/1303022487/ ■本家 www.digitalmars.com/d/ www.d-programming-language.org/ (ドキュメント) www.kmonos.net/alang/d/ (和訳) ■コンパイラ www.digitalmars.com/d/dcompiler.html (DMD, 本家) dgcc.sourceforge.net/ (GDC, gccフロントエンド) www.dsource.org/projects/ldc (LDC, バックエンドにLLVM) ■参考URL f17.aaa.livedoor.jp/~labamba/ (D言語研究) f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF) dsource.org/ (dsource) tinyurl.com/candcpp2d2 (C/C++に疲れた人のD言語2.0) www.kmonos.net/alang/wnd/ (わかったつもりになるD言語) shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか) shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座) www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画) www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games) dusers.dip.jp (D言語友の会) www.wish.sakura.ne.jp/desuno/game/Drawing (PrincessDrawing! D言語で作られた横スクロールSTG)
272 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 23:15:55.10 ] >>270 ああ、>>271 はちょっと違うな、ごめん。 toMBSzはAPIコールに特化してるけど、こいつの逐次処理やストリームからの読み書きに便利な版が必要って話だよね。 それなら賛成。
273 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 23:47:12.19 ] 内部はiconvでもその程度は標準で欲しいなあ .NETのEncodingは便利よ
274 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 01:15:11.26 ] ガラパゴスプラットフォームが待たれる
275 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 02:05:14.38 ] かなり緩いBSDライセンスですら取り込まない体制なので、iconvも独自実装でないと標準には
276 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 02:15:22.21 ] とにもかくにもdio
277 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 03:13:57.16 ] 基本はboostライセンスなんだっけ?
278 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 07:49:17.83 ] boostライセンスだな
279 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 00:09:05.29 ] ならiconvは厳しいか エンコーディングの実装にOSの機能はどこまで使えるのだろうか
280 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 00:33:03.90 ] まずOSによって対応エンコーディングに差がある、同じエンコーディングでも微妙にテーブルが違う、 Linuxなんかではlibcのロケール関数を使うことになるが言うまでもなくコイツの仕様は酷過ぎる上にBSD系と動作が違う MacだとCoreFoundationをリンクしないといけない、Windowsだとエンコーディングを数字で指定するがこれと 他OSでLANG環境変数で指定したりするエンコーディング名と一対一対応があるわけでも勿論無い ……とまあそんな感じなので、iconvに丸投げが一番楽よ。 API自体はWindowsが一番整備されてるかな、よく言われるように変換テーブルが多少独自なのを除けば。
281 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 01:31:14.64 ] まあ各国でよく使うエンコーディングが 自国版のOSで使えさえすればいいとは思うけど それ抜きにしてもAPIは厳しそうだな・・・
282 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 01:43:05.75 ] まあWindows以外は、iconvぐらいデフォルトでインストールされてるだろうってのを当て込んで ダイナミックリンクしてもいいとは思うけど。
283 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 12:55:36.47 ] std.encoding.EncodingSchemeから派生させて、EncodingSchemeCP932とか作ればいいのかな? www.kmonos.net/alang/d/2.0/phobos/std_encoding.html 中身は、変換テーブルでやるなり、iconv呼ぶなりして
284 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 16:56:35.51 ] >>283 俺初めてstd.encoding見たけど、dchar : 他のエンコーディングの複数バイト が常に 1 : n なのを想定されてないかこのインターフェース? 誰かウォルたんに合成文字の存在を教えてあげないと。
285 名前:デフォルトの名無しさん mailto:sage [2011/10/05(水) 13:47:51.03 ] >>101 のバイナリを入れたんだけど、 VBのScriptControlからEvalしても何も帰ってこない。 ScriptControl1.Language = "DMDScript" MsgBox ScriptControl1.Eval("1") 'Empty MsgBox ScriptControl1.Eval("+") 'Anonymous(1) : Error: expression expected, not 'EOF' エラーは出るからそれなりに動いてはいるようだけど、だれか助けて
286 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 11:46:51.26 ] DLFってクレジット表示なしで商用利用可能なんだっけ?
287 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 12:13:48.37 ] DFLか?
288 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 12:54:06.05 ] そう
289 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 14:16:46.65 ] 3タイプのうち、普通に使う分にはzlibライセンスになると思う 表示なしでいい
290 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 14:34:23.05 ] なるほど それじゃDLF使おうかなあ
291 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 15:31:51.26 ] その前にちゃんと名前を覚えてあげてください
292 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 20:03:55.36 ] deprecateの関数置き換えたらobject.Error: Access Violationあああああああああああああ
293 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 20:29:40.65 ] extensionがバグってた Notice: As of Phobos 2.055, std.path.getExt has been scheduled for deprecation in February 2012. Please use extension instead. getExtの代わりに使えってかいてあるけど動きが違ってた void main() { string fname = "aaa.ext"; assert(std.path.getExt(fname) == "ext"); assert(std.path.extension(fname) == ".ext"); } 報告できる方よろしくお願いします。 それとも仕様変更だったり?
294 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 20:32:43.33 ] >>291 ワロタ DFLは、バグで結構やばい動作することがあるって話があったから、商用で使うなら 気をつけた方がいいぞ
295 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 20:33:25.70 ] >> 293 これは仕様変更。
296 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 20:37:33.04 ] >>295 やっぱり? .NETとかも'.'ついてるし'.'ないと分割した後単純に結合できないしやっぱりそうなのかー コードの拡張子比較してるとこ全部直さないと・・・・
297 名前:デフォルトの名無しさん mailto:sage [2011/10/09(日) 00:20:28.16 ] 自分でgetExtを再実装すればいい
298 名前:デフォルトの名無しさん mailto:sage [2011/10/09(日) 02:19:18.44 ] listdirとかisabsとか自作してる俺ェ…
299 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 13:11:48.66 ] GCCにDのフロントエンドが取り込まれるらしい 実際にGCCにコンパイラが組み込まれたら 今までみたいに自由気ままに破壊的変更できなくなるんじゃなかろうか
300 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 13:18:03.43 ] 本家が変わらず火星なら、Iainの人が血を吐きながら頑張るだけじゃねーの 利用者とフィードバック増えるとむしろスムーズに進化できる可能性も
301 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 13:25:15.96 ] ideone.com/IuwjS removeの仕様がイケてないというか、テンプレート対応がしょぼいというか・・・
302 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 13:34:23.79 ] .NETレベルのライブラリがないと普及しないお
303 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 13:40:17.44 ] removeはどうせ二つ用意するなら名前変えればよかったのに
304 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 14:12:55.14 ] pythonにはそういうライブラリあるの?
305 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 14:29:28.99 ] >>301 違うな。俺が間違ってた。ごめんよ、ごめんよ
306 名前:デフォルトの名無しさん mailto:sage [2011/10/13(木) 10:29:16.53 ] D -> Go DMDScript -> Dart さようならうぉるたん
307 名前:デフォルトの名無しさん [2011/10/13(木) 13:03:52.61 ] そうなんだ、すごいね
308 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 12:17:05.74 ] 訃報: C 言語の開発者、デニス・リッチー氏が死去 ttp://developers.slashdot.jp/story/11/10/13/0224245/ Google+ で Rob Pike 氏が語ったところによると、C 言語の開発者、K&R の R であるところの Dennis Ritchie 博士が亡くなられた。 70 歳 (Rob Pike 氏による Google+ への投稿) 。 長らく闘病中だったとのことで、先週末に自宅で息を引き取ったそうだ。
309 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 15:40:28.43 ] この人達がBからCを作らなきゃDもなかったし他の派生言語もなかった 黎明期の偉大な人たちが次々去っていくなぁ
310 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 15:59:55.43 ] ttp://cpplover.blogspot.com/2011/10/dart_13.html 某Dの人がDart->Dに置換しても通じるとか書いてるから読んでみたら 予想を遙かに超越してDそのまんまだった まあDはC++も駆逐するけどな
311 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 17:07:49.36 ] はてブのコメントにマジレスの嵐w Dart触ってみようかな。結局Goは敬遠してしまったし。
312 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 17:44:36.58 ] >>310 C系の記法から「常識的に考えて」導かれる記法だからねえ。 DはGCへの依存を弱めた記法を確立してbetter Cとしての立場を強めるとか Variantを活用できるようになればなと思う。
313 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 14:04:18.25 ] iPhoneやらUbuntuやら、巷では破壊的変更に飛び込む勇者だらけなのに 指をくわえてみているだけのD言語erは まさかいないよな?
314 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 17:09:54.34 ] アップルが嫌いだからiPhoneには関わりません
315 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 20:16:42.25 ] 一見破壊的にみえるだけで実は既存のものを延長した結果 という場合もあって一時的に不安定になるけど山を越えると また安定してくるという…繰り返される歴史 山が高すぎると超えられない。というのもそれなりにありそうだけども
316 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 21:20:44.29 ] メモリ関係でバグが出ると挫折する
317 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 22:06:47.85 ] OPTLINKのバグとは戦えない
318 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 23:16:06.35 ] clangみたいにオープンな開発にすりゃいいのに ウォルたん的にも別にクローズドな開発にする必要なさそうなもんだけど せっかく発展の余地があるのにもったいない
319 名前:デフォルトの名無しさん mailto:sage [2011/10/17(月) 22:55:27.87 ] dってオープンソースじゃなかったんですか
320 名前:デフォルトの名無しさん mailto:sage [2011/10/17(月) 22:59:05.96 ] 肝心なところは秘密
321 名前:デフォルトの名無しさん [2011/10/18(火) 18:31:28.75 ] えっ
322 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 01:06:12.82 ] Webで使う分には実用に耐えるんですかね?
323 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 22:33:35.30 ] 規模にもよる
324 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 22:38:28.33 ] CでWebアプリ書ける人なら楽勝
325 名前:デフォルトの名無しさん [2011/10/19(水) 23:50:24.13 ] だね
326 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 00:11:13.61 ] ideone.com/4V7My テンプレート関数のマングリングがおかしい件 map file の tfunc を検索すると文字化けしてるのがわかる(WinXP 32) やっと突き止めたぜ・・・
327 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 00:23:35.05 ] もしかしてこれでOPTLINKの謎エラーが消滅するのか
328 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 01:37:23.43 ] >>326 見落としがあった。保存するファイル名によって再現しなくなるwww テンプレート云々じゃなくてトータルの文字数カモシレナイ
329 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 02:01:22.70 ] test.dで void o123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234(){} void main(){ 略(); } だと正常、1文字付け加えると文字化けか 正常な場合は _D4test115o123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234FZv で丁度128文字だしトータル文字数で確かに間違いなさそうだね
330 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 02:14:16.76 ] 連投スマソ マングリング後の修飾名の文字数→上限128文字を超えると化けた Windows のみかも。ideoneでは再現せず ideone.com/9TWvd 長いモジュール名(std.algorithmとか)ついたテンプレート使うと 簡単に引っかかっちまう
331 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 02:18:35.09 ] 連投スマソ と書いたけど先越されたw まあいいや バグ報告しとく
332 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 03:59:19.24 ] d.puremagic.com/issues/show_bug.cgi?id=6831 直せオラ! で押し通せばよかった・・・つかれた
333 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 10:57:51.06 ] >>332 速攻でコメが来てる ・optlinkを直さないと対応できない ・linkerを書き直す計画はあるけどいつになるかわからん やっぱりoptlinkは切らないとダメだな
334 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 19:02:40.75 ] C/C++のプログラムをソースのみで配布するのは 社会に対する罪だと気づいた
335 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 19:35:40.51 ] うん
336 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 20:23:27.57 ] その点Dのソースならガリガリ修正する楽しみがあって抜群の社会貢献度
337 名前:デフォルトの名無しさん mailto:sage [2011/10/21(金) 00:00:58.48 ] optlinkってoptasmとなんか関係ある?
338 名前:デフォルトの名無しさん mailto:sage [2011/10/21(金) 15:06:13.85 ] ないと思う
339 名前:デフォルトの名無しさん mailto:sage [2011/10/22(土) 11:10:54.16 ] D1からD2に移行したらDLLを動的ロードして使う部分で 謎のエラーというか色々意味不明な現象が発生するんで調べてみたら、 TLSのせいで複数回DLLがロードされているせいだった なんちゅう盲点や
340 名前:デフォルトの名無しさん mailto:sage [2011/10/22(土) 11:47:41.59 ] データ領域は徹底的にデフォTLSにする方針だからなあ 知ってればどうってことないけど、チュートリアルでなるべく周知してかないと 他言語から移行する時の軽いハマりポイントになるかもね スレッド大量に作るような方向へ向かおうとするんだと、 将来的にTLSでの静的初期化はもっと書きづらくして気軽にやれなくなったりして
341 名前:デフォルトの名無しさん mailto:sage [2011/10/22(土) 18:21:11.00 ] エラーになってくれればいいが何が起こるかわからんというのは困る
342 名前:デフォルトの名無しさん mailto:sage [2011/10/22(土) 18:29:20.71 ] そういう意味ではCとのインタフェースを残しているのがすごくマイナス システム言語の看板を掲げるならデバッガが強力じゃないとつらいな
343 名前:デフォルトの名無しさん mailto:sage [2011/10/22(土) 18:55:56.49 ] そもそもスレッドを考慮して無いdllの造りが悪いんじゃないの?
344 名前:デフォルトの名無しさん mailto:sage [2011/10/22(土) 19:17:08.83 ] 俺の為のチラ裏メモ TLS = Thread local storage
345 名前:デフォルトの名無しさん mailto:sage [2011/10/22(土) 19:28:29.22 ] Walterは特にCライブラリをダイレクトに使えるのを大事にしてる気がするので、 避けては通れなさそうなんだよな。 Cなんて実質原始CLIみたいなもんなんだけど、デフォTLS前提としない言語外環境との連携をどう考えるか。 素のstatic thisはスレッド毎に走るのに注意、shared static thisはロックに注意、で当面しのぐしか無いがー
346 名前:デフォルトの名無しさん mailto:sage [2011/10/22(土) 20:27:56.44 ] スレッド使ったことないからその辺平気だぜ
347 名前:デフォルトの名無しさん mailto:sage [2011/10/26(水) 10:38:48.83 ] Visual Dの更新キタ phbosでF1ヘルプ参照できるようになった mago debugger を選んだ場合の機能が強化されてるみたいだがよくわからん
348 名前:デフォルトの名無しさん mailto:sage [2011/10/26(水) 21:18:01.54 ] 特に理由はないんですが、GCJの過去問をDで解いてみようと思いました。 今日初めてD言語に触りました。 TopCoderとかのプログラミングコンテストでC++を使う場合は、 #defineを使ってforループの凡ミスを防ぐためにこんなことをします。 #define rep(i, n) for(int i=0; i<n; i++) こうすることで以下のようなバグをなくすことができます。 for(int i=0; i<n; i++) { for(int j=0; j<n; i++) { // i++がバグ // do something } } 代わりにこう書けるので、これに関してはバグがなくなります。 rep(i, n) { rep(j, n) { // do something } } D言語でも同じようなことができますか? できないなら諦めますが、できるならその方法をご教示ください。
349 名前:デフォルトの名無しさん mailto:sage [2011/10/26(水) 21:28:35.26 ] Dにマクロはない。ので、同じことはできない。 代替の方法については、その例に限っていえばループを foreach (i; 0..n) { // do something } で、書けばバグを防ぐ役目は果たせるな。 もしくは void rep(size_t rn, void delegate() dg) { foreach (0..rn) dg(); } ↑こういうのを定義しておけば ↓こう書ける。 rep(n, { // do something });
350 名前:デフォルトの名無しさん mailto:sage [2011/10/26(水) 22:56:40.38 ] C++でももうすぐforeach的なものが使えるからそれでいいじゃないか
351 名前:348 mailto:sage [2011/10/26(水) 22:59:11.58 ] >349 即レスありがとうございました。 動作させることができました。 拡張性が高そうなので foreach(i; 0..n) を使うことにしました。 foreach(i; 1..n) とかになっても簡単に書けそうなので。 とは言っても、もともとTangoを使っていて、それだと foreach(i; 0..n) がコンパイルできなかったので(found '..' when expecting ';' following 'for condition')、Phobosにコードを書き変えました。 PhobosだとWindowsでコンソールアプリを作るときに、文字化けしたと思うので、ちょっとイヤなんですが...。
352 名前:デフォルトの名無しさん mailto:sage [2011/10/26(水) 23:01:25.17 ] >>348 構文をこういう風に独自defineする人間の神経は疑うけどね
353 名前:デフォルトの名無しさん mailto:sage [2011/10/26(水) 23:28:04.58 ] tangoなんか使ってると恐い日本人コミッタのお兄さん達に睨まれるぞ
354 名前:デフォルトの名無しさん mailto:sage [2011/10/26(水) 23:49:54.92 ] にらまれてるしw
355 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 07:17:55.57 ] dmd 1.071 and 2.056 release
356 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 11:31:57.49 ] www.d-programming-language.org/intro-to-datetime.html std.datetime の解説記事ができてた。 だれか翻訳をt(ry
357 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 13:39:27.54 ] 知ってるだろ? 法則があるのをさ……。
358 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 16:45:13.81 ] Kには近づいてはならない!
359 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 19:04:21.39 ] >>356 おお、簡潔な解説が出たのか!と思って行って著者名を見た時の絶望感
360 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 23:43:09.19 ] > dmd 1.071 and 2.056 release 今回のreleaseの大きいところは Bugzilla 3748: inoutがまともに動くようになった Bugzilla 3659: structのopEqualsシグネチャ制限がなくなった Bugzilla 4022 他 CTFEでAAが結構まともに動くようになった 辺りかな。
361 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 00:00:52.95 ] AAがなんの略だかわかんなくて五分くらい真剣に悩んだけど連想配列か
362 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 00:41:21.27 ] > 360 dusers.dip.jp/modules/forum/index.php?topic_id=106 もう少し細かく書いた。
363 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 00:53:39.18 ] 今回のBugFixは、Regressionのが多いね
364 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 07:15:26.25 ] いつも乙 D2もいよいよ安定してきてしまった感が
365 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 11:01:12.68 ] バグフィックスの数に騙されるな 新たなバグもどんどん増えているぞ コンパイルできないたすけて
366 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 13:15:23.42 ] 落ち着いて全部のライブラリをビルドしなおすんだ
367 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 13:32:44.02 ] GUIライブラリってある?
368 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 18:54:26.37 ] あるよ
369 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 19:01:44.43 ] --- do if (derived is base) return true; while ((derived = derived.base) !is null) return false; --- 2.055までこれがコンパイル通ってたという事実に驚愕しきり
370 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 20:00:20.97 ] >>368 たとえば?
371 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 21:09:23.72 ] dusers.dip.jp/modules/wiki/?Libraries
372 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 21:22:12.52 ] DFL,DWT(2),wxD,gtkD,QtDは去年の段階ではかろうじて生きてた そこに載ってる他の奴は…死んでるねぇ…