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)
826 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 23:53:54.57 ] 静的配列 サイズがコンパイル時に決定 値渡し、返り値にも使える 静的配列の代入は複製 動的配列はサイズが同じなら代入できる、違えば例外、この場合も複製されるはず(うろ覚え) 動的配列 参照型 int[]にint[10]とかを代入できるはずだがどうなるかは忘れた
827 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 01:53:58.80 ] >>826 int[10] a; int[] b; b = a; // 複製されない assert( b.ptr == a.ptr ); b = a.dup; // 複製される assert( b.ptr != a.ptr ); b[] = a; // 複製される assert( b.ptr != a.ptr );
828 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:48:53.28 ] $ type reg.d import std.regex; import std.stdio; void main() { writeln(match("他"d, regex("バ"d))); writeln(match("他"d, regex("ビ"d))); writeln(match("他"d, regex("ブ"d))); } $ dmd -run reg.d [] [] core.exception.AssertError@D:\devtools\dlang\dmd2\windows\bin\..\..\src\phobos\std\utf.d(800): Attempted to decode past the end of a string 偶然踏んでしまった
829 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 22:41:57.52 ] 056->057間のstd.regexの変更っぷりに吹いた
830 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 08:13:07.47 ] typeidと.classinfoがあるのは歴史的な理由?便利さから?
831 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 08:28:41.96 ] >>810 公式ドキュメントのArraysに暗黙変換できるって書いてんだが…
832 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 12:44:43.72 ] きっと夢でも見たんだろう
833 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 12:49:28.15 ] 2.057ではねられるようになって首を傾げてたんだぜ やっぱり regression か
834 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 17:44:44.34 ] Arrayに関しては禁止するべきだと思うんだがな 動的配列に静的配列入れたときも破壊的変更するとき初めてコピーされるという奇妙な仕様になってるし明示的にdupとかキャストさせるべき
835 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 19:04:51.37 ] っCopy-On-Write
836 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 12:32:24.51 ] >>831-833 d.puremagic.com/issues/show_bug.cgi?id=926 なんか 「D2 では禁止!ドキュメントが古い!」とか 言ってるんすけど・・・ユルセナイ シャザイト バイショウヲ ヨウキュウシル
837 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 13:12:32.03 ] trunk のドキュメントをのぞいて見たらこうなってた。(´・ω・`) ショボーン ○ A[] -> const(Object)[] × A[] -> Object[]
838 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:16:23.41 ] あー、うーん、まあそうか…
839 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:35:51.35 ] なるほど、そうじゃないと auto a1 = new A[](10); Object[] a2 = a1; a2[0] = new Object; でバグっちゃうのか。 明示的に Object[] a2 = a1.dup; こうするのは今もできるってことね
840 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 20:30:19.03 ] そういやdupでimmutable剥がせる件ってどうなったんだろ
841 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 17:22:48.20 ] 細かい仕様変更にはもうついていけないよう
842 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 00:52:17.22 ] dupはimmutableはがせるでしょ idupだとimmutableのまま
843 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 02:57:23.76 ] constとimmutableの違いがよく分からないよぅ
844 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 03:03:38.39 ] const: 不変値を関数間で共有 immutable: 不変値をスレッド間で共有
845 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 09:54:57.34 ] 2.058ダウンロードどこでできるんですか!?
846 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 12:12:21.70 ] まだリリースされてない どうしてもさわってみたければ github から3点セットでDLしてビルドしる
847 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 17:35:50.05 ] >>844 間違ったこと教えちゃいかんよ・・・ const その参照から値は変えられないが、別の要因で変わることがある。 immutable いかなる要因でも値が変わらない。
848 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 17:50:05.45 ] constの分かりやすい例。 ideone.com/sGgmK
849 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 18:46:46.08 ] ガンダムで例えると シールド付きがconstで フルアーマーがimmutableってことね この例えはとにかく、なるほど…勉強になりました。
850 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 18:52:49.18 ] constは引数変数向けの型ってイメージがあるな 引数と関わりのないconst変数なんて作らないよね?
851 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 19:05:15.37 ] クラスのフィールドでインスタンス初期化時に固定するものとかconstにする
852 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 19:09:39.82 ] それってimmutableでもいけるんじゃないの?
853 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:19:05.10 ] Const と Immutable www.kmonos.net/alang/d/2.0/const3.html >>852 static this()
854 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 16:56:02.59 ] static thisでだとimmutable初期化できないのかーと思ったけどできるじゃん どういうことが言いたかったの?
855 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 18:53:53.23 ] >>854 ごめん、勘違いしてた
856 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 19:16:59.45 ] 下のコードをコンパイルするとdmdが落ちるんですが。 dmdのバージョンは2.057です。 template foo(T){ enum foo = __traits(hasMember,T,"sizeof"); } static assert(foo!(int)); //DMD Crash
857 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 19:33:23.96 ] 久々にGUIライブラリを見て回った gtkD・wxD・DFL(fork)・DWT辺りは元気だけどQtDが死んでるなぁ どこか別の所で元気にやってるのかな?
858 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 19:45:03.62 ] >>856 trunk の最新ソースを落としてビルドしたら落ちなくなってた(WinXP 32)
859 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 19:57:57.79 ] >>858 では、2.058では解決されているのですね ありがとうございます
860 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 10:01:51.83 ] 明日は2.058リリースか 3.0とかどうなったんだろな
861 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 13:11:08.52 ] D3はmoduleに代わってnamespaceを導入して 呼び出し側でもrefとかoutとかつけて属性を明示できるようになって プロパティはset/getキーワードを用意して自然に表現できるし Attributeクラスでメソッドの属性を自作できる上にラムダ式とかも余裕で使えるし しかも.NETフレームワークで動く
862 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 13:12:55.18 ] 今更namespaceとかありえないんじゃないかな
863 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 13:16:46.99 ] >>861 あとはVisualStudioで開発できれば完璧だな
864 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 13:29:42.65 ] D3では多重ディスパッチがついて型推論が進化
865 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 14:26:26.13 ] D3ではなんとヘッダーとソースをファイルレベルで分離して記述することができるようになります!
866 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 14:27:41.37 ] ヤメテ!
867 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 15:37:41.30 ] 機能追加を国民投票で選びます 投票券はTDPLに付属
868 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 17:04:21.14 ] 呼び出し側にrefつけるのは普通に欲しい 必須じゃなくてもつけまくるわ
869 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 17:49:28.42 ] >>868 C# とか VBのアレか アレはすごくほしい けどタプルとかうまく使ったらいらないぜ ってものかも知れない
870 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 00:20:34.12 ] なにそれ。 D3 と C# の違いを教えてくれ。 const ありの C# としても使えるならぜひ使おうかと思うんだが。
871 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 00:23:01.61 ] D3.0はPerl6よりは現実的な開発が予定されてる言語
872 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 01:02:54.60 ] Perl6ってそんな非現実的なの?w
873 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 01:12:46.83 ] はたしてあれ実装できるんだろうか WebProg板にスレあったはず
874 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 01:23:54.85 ] ググってみたら吹いた。 設計開始から10年で初の処理系ってD言語超えてるな
875 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 07:09:01.91 ] 心配すんな、クリスマスには出る
876 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 19:03:17.74 ] Dは登場と共に処理系もあったじゃないか 永遠に開発中だけど
877 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 19:16:20.31 ] 設計完了に先立つこと10年にして早くも処理系
878 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 20:23:52.67 ] C言語だって・・・最終仕様より先に初期実装があったんだ!