1 名前:デフォルトの名無しさん [2008/04/14(月) 15:16:22 ] プログラミング言語 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フロントエンド) ■参考URL ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究) ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF) 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動画) ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games) ■ 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)
654 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 17:58:19 ] lengthを増やすとアドレスが変わってしまいますね。 そしてリザーブしてもアドレスは変わらないが、追加されたメンバが 更新されないと…… codepad.org/Kg0yzNfz みたいに引数にリファレンスで渡した場合は追加されるので、それと 同じ事が返値でもできればいいのですが。 C++のように返値のリファレンス指定でできないんですねぇ。
655 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 18:29:01 ] std.xml、マニュアルにあるサンプルプログラムちゃんと動く? どうしてもうまく動かない・・・ 2.0.15です
656 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 18:50:59 ] 前に誰かがstd.xmlが動かなくなったって言ってたような・・・ trunk版でも無理なのだろうか
657 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 19:23:54 ] >>654 >C++のように返値のリファレンス指定 俺もこれほしいかも というか、参照とかポインタとかはC++のほうがわかりやすくて好きだ…
658 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 00:43:38 ] (関数ポインタを除く)
659 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 00:57:05 ] >>645 linux環境だと、Theadクラス使うと落ちまくってとても使えたものじゃないのだが、 いつになったら直るのだろうか・・・
660 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 13:22:48 ] >>645 ん、まさか tnago に DBI でもマージするつもりなのか… アレの SQLite バインディングは動かないコードのまま trunk に放置されてるからなぁ…
661 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 00:02:39 ] >>645 じゃあ、0.99.7に移行する前に破壊的変更の予習。 www.dsource.org/projects/tango/wiki/0_99_7_BreakingChanges 今回多いなw
662 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 01:17:41 ] >>661 >tango.io: The use of FilePath and PathView in FileConduit is deprecated in favour of char[] paths >tango.text.xml.XmlPrinter: Deprecated in favor of DocPrinter >tango.group: Deprecation period expired, so will be removed. ここら辺はかなり厳しそうだな。
663 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 02:17:16 ] phobosのtrunkが大量に更新されてる件
664 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 02:24:07 ] あ、やべぇ、なんかTangoのD2.0のマージ来た…!? www.dsource.org/projects/tango/browser/branches/experimental/D2.0
665 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 03:23:46 ] 暴走するのはPhobosだけにしてくれよ…
666 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 03:34:05 ] これはDコミュニティの文化だよ
667 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 04:46:53 ] >>664 キタ━(゚∀゚)━!!
668 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 11:04:08 ] PhobosとTangoがなかよくなりますように・・・
669 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 18:53:28 ] 2.016もきた - re-implemented internal.monitor in D. Rationalized internal.object - Bugzilla 288: changed return type of opEquals from int to bool. ***This necessitates doing a grep for opEquals and changing all the return values.*** - Added .__vptr and .__monitor properties for class objects for use in the internal runtime library. - Made rdmd's source available through svn, see dsource.org/projects/phobos/browser/trunk/tools/rdmd.d - Simplified std.algorithm by fusing together higher-order functions taking an alias and their counterparts taking a string -Added module std.array containing array operations: insert, erase, and replace -Changed the enforce's implementation to generate smaller code per call -Changed std.functional.binaryFun to work with strings and function aliases alike -In std.getopt, added optChar, assignChar, and endOfOptions, per popular demand :o| -In std.math, replaced a bunch of consts with enums -In std.numeric, added Don Clugston as author and operated minor documentation fixes -Improved std.stdio.chunks to take an iteration tally in addition to the chunk また、すごい変更がw
670 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 19:16:19 ] 大して大きくないような。.__vptrと.__monitorは今まで無かったのが(ry それより修正して欲しかったバグの修正ktkr
671 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 20:07:24 ] よくわからん・・・誰か要点を・・・
672 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:05:19 ] >>671 opEqualsの戻り値型が変わったことぐらいだろ。
673 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 12:38:58 ] stringzとかいう型出来ないかな 文字列が入ると最後に'\0'を埋めてくれて writeflnなどD用の時は'\0'を無視、 C用の時は'\0'を使えるという感じに もしくはC用の関数内では最後に'\0'が付加されるというような toStringzで事足りるんだけどな
674 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 16:34:06 ] >>673 リンケージによって文字列の内部構造が変化するのは便利かもだけど怖い
675 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 20:38:11 ] opEqualsとうとうboolになったのか。 パフォーマンスが云々うぉるたんが抵抗してたのは解決したんかな。 しかしTangoはどうあってもモジュール名のUpperCamelを止める気はないのだろうか。
676 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 21:39:03 ] >>675 いまさら変えられても混乱するしこのままでいいかなって最近思ってきた。
677 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 21:49:20 ] opAssign定義した構造体の連想配列に新しく要素を格納しようとすると落ちるのは何でなんだぜ?
678 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 23:18:34 ] 独り言だけど、Win32 とのやり取りが面倒なので、 普通にマルチバイト文字が使えるようにして欲しい。 const char *track_name[] = [mbs"日本語",mbs"日本語"]; みたいな。
679 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:05:18 ] 今更A関数なんて使わないっしょ。W関数で十分っしょ。とか言われてたなあ。
680 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 03:19:48 ] >>678 それはコンパイル時に文字コードが決まるの?それとも実行時?
681 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 03:23:24 ] CTFE-ableな変換関数をですね… const achar* track_name[] = [astring("日本語"), astring("日本語")];
682 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 08:59:23 ] もうShift-JISはやめようぜ
683 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 11:30:13 ] 今更A関数なんて使わないっしょ。W関数で十分っしょ。
684 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 12:46:38 ] dic.nicovideo.jp/b/a/D%E8%A8%80%E8%AA%9E/1 誰だよ
685 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 13:41:25 ] いまどきデフォルトエンコードがUFT-8じゃないOSが糞ということ
686 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 13:45:36 ] >>684 >5のマヌケな足の開き方が素敵
687 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 13:48:48 ] 主要なソフトがsjisにも対応していればいいだけの話で 過去との互換性を気にするならば 最低限のテキストエディタのメモ帳ぐらいが対応すればいい話 win用で人気のあるテキストエディタはutf8とか対応してるしな
688 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 14:49:14 ] はやくstdoutにフィルターをかぶせられるようにしてほしい。
689 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 20:18:32 ] クラスに単純な値コピーをさせる方法ってありましたっけ
690 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 20:59:24 ] >>688 ああそういうことができるんだね でもできないんだね >>689 あったっけ?なかったような
691 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 22:59:57 ] 中文やらハングルやらが扱えないようにおれは A のAPIでやってるぜ。
692 名前:デフォルトの名無しさん [2008/07/12(土) 01:28:36 ] だいぶ前に出てて挫折してた 「dsource.orgのWin32Api Bindingsをdmd2.0でコンパイルすると出るエラー」 が、いつの間にかなくなってるッ!! >>340 (いつからなおってたんだー!?) やっと2.0系に復帰できるワァ
693 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 01:41:01 ] >>692 半年前には大丈夫っだった気がするが、 使ってるAPIの差かもしれん
694 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 06:31:50 ] >>692 DMD2.016でまたむりぽ
695 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 07:25:41 ] >>692 半年前には直ってたものを壊れた瞬間に知るとかw
696 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 07:28:55 ] 型なのに型として認識してくれなくてやってた苦肉のtypeof(型)ができなくなってるね 元々の問題が修正されたのならいいのだけど
697 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 10:44:36 ] DMD 2.017 リリース
698 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 11:16:58 ] >>697 まじだ バグフィックスだけだね
699 名前:デフォルトの名無しさん [2008/07/12(土) 15:04:08 ] Webから画像ダウンロードできたりしますか
700 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 15:27:12 ] できる。
701 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 21:05:40 ] >>678 だからUTF-8でない文字列をchar*に入れるなとあれほど…
702 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 21:12:50 ] mbsはubyte*にするべきだったりするの?
703 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 21:14:19 ] >>702 もちろん
704 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 22:16:11 ] charはutf-8って規格で決まってるからな−。 それ以外が入ってるのは気持ち悪いというか、間違っているという話。
705 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 23:09:10 ] >>678 >>701-704 こういう案はどうなの? ttp://rayerd.ddo.jp/pukiwiki/ingwiki/index.php?D%B8%C0%B8%EC%A4%C8MBCS%A4%CE%CF%C3
706 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 00:35:33 ] もうstd.encodingがあるしやるならその上に作るべきでは
707 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 00:37:29 ] >>705 wstring toUTF16(in mbchar[] s, in uint codePage=0) { mbstring sz = (s ~ cast(mbchar)'\0').idup; wstring result; result.length = MultiByteToWideChar(codePage, 0, cast(char*)(sz), sz.length, null, 0); MultiByteToWideChar(codePage, 0, cast(char*)sz, sz.length, cast(wchar*)result, result.length); return result; } invariantであるresultに書き込もうとしてるのはおかしいな。 キャストしてしまってるから本来検出されるはずなのエラーがでなくなってる。 MultiByteToWideChar(codePage, 0, sz.ptr, sz.length, result.ptr, result.length); でコンパイル通るように直したほうがいい。
708 名前:デフォルトの名無しさん [2008/07/13(日) 01:23:06 ] Dで外部アプリの実行とかってどうやればできますか。
709 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 01:27:03 ] >>707 ノ >>708 import std.process; std.process.system("dir");
710 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 01:31:20 ] >>706 正直申し上げますと、あれインターフェイスが糞すぎる
711 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 01:34:08 ] >>709 あ・・・ありがとう。 CreateProcess使ってできてやったーとか思ったらそんな簡単に・・・
712 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 01:35:03 ] std::basic_stringの仕組みを丸ごと移植したらどうかと思うのだが
713 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 01:44:57 ] >>707 > MultiByteToWideChar(codePage, 0, sz.ptr, sz.length, result.ptr, result.length); > でコンパイル通るように直したほうがいい。 え・・・そんなんできんの・・・
714 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 02:02:06 ] OpenGLのポーティング、D2.0でもデフォのまま使えるようになったのね さっき最新取ってきて直そうと思ったら、既に修正済・・・感動した
715 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 02:07:24 ] Linux系でD言語やろうと思ったらここ見ればいいってHPないですかね。
716 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 02:07:29 ] >>713 ???
717 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 02:11:21 ] >>716 MultiByteToWideChar(codePage, 0, sz.ptr, sz.length, result.ptr, result.length); キャストなしのこれをコンパイルエラー出さずに書くやり方があるのかなと
718 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 02:50:24 ] もうperlみたいにしてしまえ
719 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 04:22:25 ] tangoのProcessってサンプル使ってもうごかないんすけど。
720 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 04:25:54 ] よくあること
721 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 04:41:14 ] Executeしないと動かなくなってた><
722 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 05:20:48 ] HttpClientのGetResponseが爆発してて自分の手に負えません。 だれか画像ゲットのやりかた教えてください。
723 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 08:40:25 ] 1年ぶりに着たけどやっぱ仕事では使えなさそう。 俺と同じ。知ってた。
724 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 09:09:18 ] >>720 本当に良くあるから困る stdioのwriteflnの時は俺がラリった ioを自分で作成して出力せにゃいかんのかと思ったり
725 名前:722 mailto:sage [2008/07/13(日) 09:29:22 ] Descentが教えてくれる関数一覧を信じすぎました。 事故解決。
726 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 18:23:13 ] だから安定版ならD1.0があると(ry
727 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 18:36:52 ] D1.0系列って本当に安定してるの?
728 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 18:37:31 ] 仕様は安定してるよ。
729 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 18:55:23 ] >>726-728 わらた このままバージョンが変わらないでいてくれたら D-1とかD-2とかいう扱いでコードの配布が安定できて嬉しいな
730 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 19:00:23 ] D2.0が安定化するころにはD3.0が登場してて阿鼻叫喚になってると予想してみる
731 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 19:02:17 ] メジャーバージョンアップ=仕様の確定=完全な互換性の断ち切り
732 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 19:06:18 ] phobos vs tango d1.0 vs d2.0 で組み合わせが四通りあるから困る d1.0+phobosで開発してきたが、tangoのFiber使いたい俺としては せめてphobosとtangoが共存してくれれば...
733 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 19:12:06 ] codepad.org/biiWqnSH FizzBuzz書いてみたいがtoStringってコンパイル時に動かないんだな
734 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 20:00:40 ] >>733 っ std.metastrings
735 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 20:07:07 ] DだとFizzBuzzを最小何文字で作れるんかな ちなみに俺は140文字だった
736 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 20:18:48 ] >>735 www.shinh.org/p.rb?FizzBuzz#D に83バイトという記録がある。 いったいどんなコードなのやら。
737 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 20:24:29 ] >>730 それは>>731 から本望 QED >>732 tangoがphobos準拠じゃないのが悪いんだよ なんで自作ライブラリごときが標準ライブラリと共存できないんだってことだよw
738 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 20:33:21 ] tangobosは?
739 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 20:40:02 ] >>737 tangoはGCや配列キャストなどの言語の基幹部分も独自に持っていて、 phobosを置き換えるのが目的で作られてるから、共存できなくて当然。
740 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 21:39:01 ] >>736 切り詰めて87文字 しかも数字が表示できない、中括弧使うと文字増えるしなぁー import std.stdio;void main(){int i;while(i++<100)writef(i%3?"":"Fizz",i%3?"":"Buzz");}
741 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 21:44:04 ] >>740 printf使えばもっと短くできるんじゃない?
742 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 21:55:04 ] >>739 じゃあphobosが言語の基幹とライブラリの機能分担に失敗してる?
743 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 22:21:54 ] >>741 これで99文字 void main(){for(int i;i++<100;)printf("%.*s%d",(i%3?"":"Fizz")~(i%5?"":"Buzz"),!(i%3&&i%5)?0:(i));} こっちが別案(100文字ジャスト) void main(){int i;char[]s;while(i++<100)printf("%.*s%d",s=(i%3?"":"Fizz")~(i%5?"":"Buzz"),s?0:(i));} どっちもゴミが入るし83文字なんて…
744 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 23:16:42 ] >>732 D言語研究室にファイバあった。 前に試したけど、ファイバの部分だけならコンパイル通るようにするのはそれほど難しくない。
745 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 01:40:53 ] d で windows アプリケーションを作るときに XP のビジュアルスタイルを当てる方法をおしえてください
746 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 02:13:17 ] マニフェスト作ればいいんじゃないの。 詳しくしらんが。
747 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 02:26:09 ] %03dとかやれる関数ってないっすか。
748 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 02:35:44 ] std.string.format
749 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 03:12:25 ] std.c.stdio.sprintfでおk
750 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 03:53:45 ] tangobos で tango と phobos を同時に使うと、無駄に富豪的な気分がするぜ
751 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 08:10:02 ] tangoではないんでしょうか。 char[] format(char[] format, ...) { Sprint!(char) sp = new Sprint!(char); return sp.format(format, _arguments, _argptr); } とかやっても%がそのまま出力されちゃうんですが。
752 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 08:34:12 ] >>751 tangoのフォーマットはC#と同じなのでそのようにやると良い。
753 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 10:31:52 ] >>750 同時につかえるやつなんだ!しらんかった 両ライブラリの最新に対応してるのかなぁ てかObjectクラスが違うはずなのに大丈夫なのかな
754 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:25:00 ] tangoの方のオブジェクトが使われるはず。 問題が出たとしても、そういうことの解決をやるのがtangobosっていう擦り合わせのプロジェクトですよ。