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)
201 名前:デフォルトの名無しさん [2011/09/17(土) 19:51:10.43 ] さーてOS作るか
202 名前:デフォルトの名無しさん mailto:sage [2011/09/17(土) 21:01:55.83 ] OSのバージョンアップ頻度 < 開発環境の更新頻度
203 名前:デフォルトの名無しさん mailto:sage [2011/09/17(土) 21:03:29.02 ] DのOSか 名前はDOSで決まり
204 名前:デフォルトの名無しさん mailto:sage [2011/09/17(土) 21:22:36.14 ] あ、DOSを使っててC言語を思いついたのかもね
205 名前:デフォルトの名無しさん mailto:sage [2011/09/17(土) 23:02:18.83 ] >>194 すまん。193は勘違いだった。今やったら再現しないわ。 スレよごしてごめん
206 名前:デフォルトの名無しさん mailto:sage [2011/09/17(土) 23:08:27.23 ] Dだから実は勘違いでない可能性大
207 名前:デフォルトの名無しさん mailto:sage [2011/09/18(日) 03:40:06.23 ] opDotなんて使うのか? もはやalias thisだろ
208 名前:デフォルトの名無しさん mailto:sage [2011/09/18(日) 09:55:18.32 ] WinRTに対応したら ネイティブ言語としてのまさかの覇権があるかもよ
209 名前:デフォルトの名無しさん mailto:sage [2011/09/18(日) 10:03:19.85 ] ではまず WinRTから SJISを排除するところから
210 名前:デフォルトの名無しさん mailto:sage [2011/09/18(日) 11:26:35.64 ] >>207 ひと手間加えるだけでECMA ScriptやLuaのような 連想配列ベースのオブジェクトが作れるという魔法の道具ですぜ。
211 名前:デフォルトの名無しさん mailto:sage [2011/09/18(日) 16:58:12.02 ] >>210 kwsk
212 名前:デフォルトの名無しさん mailto:sage [2011/09/18(日) 17:33:19.48 ] std.xmlか何かに無かったっけ?
213 名前:デフォルトの名無しさん mailto:sage [2011/09/18(日) 17:35:12.26 ] 魔導書2、Dの記事だけ読みてえ
214 名前:デフォルトの名無しさん mailto:sage [2011/09/18(日) 18:48:11.06 ] 記事が1つしか載らないってことはD言語は全然変態じゃないってことか…
215 名前:デフォルトの名無しさん mailto:sage [2011/09/18(日) 18:56:08.44 ] いや、Haskellとか他の言語の記事も入ってる号で単独記事だから十分変態
216 名前:デフォルトの名無しさん [2011/09/18(日) 22:02:25.15 ] phobosの中のような、たとえば sizediff_t indexOf(char1, char2)(const(char1)[] s, const(char2)[] sub ) のような、 関数名(型名)(引数){}の様な構文ってどのような解釈をしたらいいんですか? 関数名(引数){}な構文しか知らないんで、どう読んで良いのか良く判りません。
217 名前:デフォルトの名無しさん mailto:sage [2011/09/18(日) 22:14:19.98 ] www.kmonos.net/alang/d/2.0/template.html#function-templates これです
218 名前:デフォルトの名無しさん mailto:sage [2011/09/19(月) 02:30:26.73 ] テンプレートパラメータです
219 名前:デフォルトの名無しさん mailto:sage [2011/09/19(月) 02:31:30.43 ] opDotってまだ使い道あったのか
220 名前:デフォルトの名無しさん mailto:sage [2011/09/20(火) 02:32:18.02 ] immutableはsharedのひとつ?
221 名前:デフォルトの名無しさん mailto:sage [2011/09/20(火) 07:13:22.23 ] immutableはすべてのスレッドから等しく参照してよいと定められているけど、 コンパイラがどこまでsharedとの一貫性を保ってくれるかは不明。 shared関係はなんというかまだ整理されきっていない感じ。
222 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 15:18:23.70 ] なぜ defineEnum が消されねばならんのだ、ぐぬぬ・・・ enum SCE_D { COMMENT, COMMENTLINE } assertEquals(std.conv.parse!SCE_D("COMMENTLINE"), SCE_D.COMMENTLINE); ---------------------------------------------------------------------- core.exception.AssertError@test.d(123): COMMENT != COMMENTLINE
223 名前:222 mailto:sage [2011/09/21(水) 15:55:58.81 ] Issue 4744 て コードをいじった痕跡があるのに FIX されてないじゃん なんぞ・・・
224 名前:デフォルトの名無しさん mailto:sage [2011/09/23(金) 03:50:26.96 ] >> 222 それコンパイル時に文字列のタプルを長さ順にソートしないといけないから 実装がえらく面倒になる。
225 名前:デフォルトの名無しさん mailto:sage [2011/09/23(金) 10:31:39.37 ] 前方一致いらない 単語切り出して完全一致を比較するだけでいいはず
226 名前:デフォルトの名無しさん mailto:sage [2011/09/23(金) 10:52:13.80 ] Phobos 敗走・恐怖の神 何でこんな名前つけたし・・・
227 名前:デフォルトの名無しさん mailto:sage [2011/09/23(金) 10:58:40.74 ] 木星の衛星だっけ? 火星?
228 名前:デフォルトの名無しさん mailto:sage [2011/09/23(金) 11:29:34.14 ] 火星。MarsだからPhobos 純然たる恐怖の神であるDeimosよりは合ってるんじゃないかな
229 名前:デフォルトの名無しさん mailto:sage [2011/09/23(金) 19:58:08.29 ] ヴァンパイアハンターの土偶さんのイメージがつきまとう
230 名前:デフォルトの名無しさん mailto:sage [2011/09/23(金) 22:51:35.07 ] ウォルター「実は昔知ったのさ。日本でカセイというと別の意味もあるって事にね。おっとこれ以上の詮索は無しにしてくれ。」
231 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 01:17:05.52 ] 誰かDでファイアーエムブレムクローン作ってくれ
232 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 01:18:04.99 ] 231 がんばれ
233 名前:デフォルトの名無しさん mailto:sage [2011/09/25(日) 01:21:41.50 ] それよりdioだ
234 名前:デフォルトの名無しさん mailto:sage [2011/09/25(日) 01:46:23.19 ] 邪悪の化身ッ!
235 名前:デフォルトの名無しさん mailto:sage [2011/09/25(日) 01:46:43.69 ] 無駄無駄ぁ
236 名前:デフォルトの名無しさん [2011/09/27(火) 03:19:52.49 ] 実数型のkeyを持つ連想配列にどのようにアクセスしたら良いのか判りません。 real[real] foo; foo[0.12345] = 0.99; // ok writef( "foo = %f", foo[0.12345] ); // NG 変数を介してもだめで、foreachはRenge violationでした。 もしかしてバグでしょうか? それとも実数型のkeyはもてないのでしょうか?
237 名前:デフォルトの名無しさん mailto:sage [2011/09/27(火) 03:33:11.33 ] 問題なかった@DMD2.055 Win
238 名前:デフォルトの名無しさん mailto:sage [2011/09/27(火) 03:42:35.94 ] writef だと何も出ない?けど writefln ならいけた 仕様かどうかは面倒なので調べない てかもう寝る foreach で回すときは連想配列のプロパティを使わないとダメなはず foreach (f; foo.keys) { writeln(f); writeln(foo[f]); }
239 名前:デフォルトの名無しさん mailto:sage [2011/09/28(水) 20:45:36.41 ] interface I {} class C : I {} void func(Object obj) {} func(cast(I) new C); // コンパイルエラー interfaceのインスタンスは無条件でObjectのインスタンスと看做していいんじゃないかなぁ それともObjectを実装してなくてintarfaceを実装してる存在なんてものがありうるの?
240 名前:デフォルトの名無しさん mailto:sage [2011/09/28(水) 21:03:10.91 ] 元々interfaceはWindowsのCOM互換のための機能だったんだぜ いつのまにかinterfaceからObjectにダウンキャストできるようになったけど、 COM由来のinterfaceでそれやったらどうなるか恐ろしいんだぜ。 Delphiも事情は一緒だけど……
241 名前:デフォルトの名無しさん mailto:sage [2011/09/28(水) 21:37:34.74 ] interface から object のダウンキャストって普通なのか… 俺はなんとなく java みたいに機能追加のための方便の一種として しか認識してないわ > interface
242 名前:デフォルトの名無しさん mailto:sage [2011/09/28(水) 23:00:43.62 ] Javaから入ったくちだからObjectであって当たり前だと思ってた そういうことだったのね
243 名前:デフォルトの名無しさん mailto:sage [2011/09/29(木) 00:14:13.96 ] interfaceをObjectにキャストする必要がでたら設計間違えてると考えたほうがいい
244 名前:デフォルトの名無しさん mailto:sage [2011/09/29(木) 19:09:13.70 ] するとinterfaceで型を定義することが間違ってるってことか… そもそも大幅に性質の違うclassどもに便宜上一部共通の部分を作って 一緒くたに扱う必要がある時点でまずいのか? mixinじゃコレクションは作れないしなぁ Variantの配列なんて悪夢のような代物は見たくもないし
245 名前:デフォルトの名無しさん mailto:sage [2011/09/29(木) 20:43:40.77 ] 「interfaceをObjectにキャストしてなんかする」の部分をそのinterfaceのメソッドにしてしまえば済む話じゃね?
246 名前:デフォルトの名無しさん mailto:sage [2011/09/29(木) 20:44:26.53 ] すまんテンパってた >>244 で書いたような事じゃObjectへのダウンキャストは発生しない そういう状況で出てきたinterface型のオブジェクトを DFLのControl#tag(こいつがObject型)とかにセットしようとした時に例の問題が発生するのであって このtagは.NET由来でObjectになってるんだと思うが、こいつが本来Variantであるべきなんだ 俺が全面的に間違ってました。ごめんなさい。 だからDさん俺を破壊的変更するのはやめてください、やめて、とめ あ
247 名前:デフォルトの名無しさん mailto:sage [2011/09/29(木) 20:55:39.26 ] DFLも.NETもわからんけど、Dで実装されたinterfaceであることが確定的に明らかなら ふつーにObjectにダウンキャストしてもいいんじゃね?
248 名前:デフォルトの名無しさん mailto:sage [2011/09/29(木) 21:41:38.67 ] アップキャストでは・・・・
249 名前:デフォルトの名無しさん mailto:sage [2011/09/30(金) 05:42:46.54 ] 元の型が確定してるなら問題ないでしょ? DFL程度のソースだったらTagを独自に置き換えちゃってもよさそうだけど
250 名前:デフォルトの名無しさん mailto:sage [2011/10/01(土) 13:11:33.01 ] DFLのgithubのforkは健在みたいだけど原作者どこいってもうたんや…
251 名前:デフォルトの名無しさん mailto:sage [2011/10/01(土) 18:27:54.38 ] interfaceをtagとして登録するなら…
252 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 00:07:48.25 ] interfaceは基底クラスとは役割が違うよ 本当にそのコンテキストでinterfaceを使う必要があるのかよく考えてみて
253 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 00:39:48.67 ] 種類も役割も様々なclassに対して一部だけ共通の側面を持たせようとする用途だから interfaceでいいと思うんだけどなぁ
254 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 02:08:09.19 ] interfaceはもっと身近な存在でいてほしいね
255 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 04:17:02.49 ] Objectの派生がいい気がしてきた
256 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 04:20:29.54 ] それともControl#tagが専用のinterfaceを受け取るべきなのかな? でなければVariant?
257 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 08:39:17.92 ] >>256 専用interfaceなんかにしたら既存のクラスを置けなくなっちゃう>< いやラッパかませば置けるけど意味無いし 役割的にはVariantが妥当じゃないかな
258 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 16:36:03.96 ] 久しぶりに来たけどD言語どうなってる? まだ破壊的仕様変更やってんの?
259 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 17:02:52.31 ] 今はそんなでもない 主要API消滅するときも0.002バージョン分ほど猶予がある
260 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 18:10:56.21 ] 標準ライブラリ内での名前被りが解消すれば そこそこ安定するのではないだろうか・・・年明けくらい
261 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 19:01:51.31 ] 言語的な仕様はほぼ固まって、 標準ライブラリを色々いじってるところって感じでいいの? 昔いじってる時いまいちイケてないライブラリだったけど ずいぶん変わったのかな
262 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 19:10:28.76 ] ずいぶん変わった ロケールとかエンコーディングとか微妙に基本的な部分が欠けてるような気もするが 基本的にはすごくいい感じ、だと思う、たぶん… D1の頃から「他の言語よりずいぶん早くやりたい事を書けるなぁ」と思ってたんだが そういう面ではグレードアップしてるとは実感してる
263 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 19:48:44.21 ] ロケールとかエンコーディングとかは やはりCJKの人間が関わらないと厳しいのだろうか
264 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 20:01:58.53 ] D的には内部コードは全部Unicodeだからロケールとかエンコーディングとかは入出力まわりだけどうにかなればいい。 文字コード透過性だのなんだのは内部コードをUnicodeに決め打ってる時点で捨ててる。 だからsetlocaleだのmbなんたらだのは要らなくて、 「ファイルをOSのロケールからUnicodeに変換しながら読む」程度の機能さえあれば充分なはず。
265 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 20:30:11.17 ] これも入出力の他の部分が決まらなくて足止め食らってる感が
266 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 20:39:23.17 ] ロケールは通貨記号とか日付の書式とかにも係わってるから入出力だけじゃないけどね いや入出力なのか?
267 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 20:44:13.31 ] >>266 そういうのは、あっても使われないから問題ない。 日本でも数字区切りを3桁で区切るか4桁で区切るか、12/31って書くか12月31日って書くか、 頭に円記号を付けるか最後に漢字で「円」って付けるかなんてのは ハッキリ言って用途次第アプリケーション次第であって、OSの設定を拾って切り替わったりしたら逆に迷惑な場合がほとんどだろ。
268 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 20:49:38.40 ] そのOSの設定を拾う(「今の設定は"ja-JP"だ」とか)APIくらいあってもいいとは思うけどな
269 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 22:45:42.67 ] 実際そのあたりあまり使わないけど 年/月/日 月/日/年 日/月/年 の順番あたりは 使わなくもないかなあ
270 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 22:48:12.52 ] >>264 メモリ上のデータのエンコーディングを変えたいって事は結構ある 入出力にも当然必要だけど、バイト配列と文字列の相互変換も必要
271 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 23:11:00.27 ] >>270 「OSの現在のロケールのエンコーディング」と「内部コードであるUnicode」以外は 「標準ライブラリ」でやらずに、iconv(をDでラップしたライブラリ)にでも任せるべきだと思うんだ。
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の人が血を吐きながら頑張るだけじゃねーの 利用者とフィードバック増えるとむしろスムーズに進化できる可能性も