1 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 20:16:30 ] プログラミング言語 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://www.sun-inet.or.jp/~yaneurao/dlang/ ttp://wisdom.sakura.ne.jp/programming/d/
830 名前:802 mailto:sage [2007/11/11(日) 20:46:36 ] >>806 , >>807 , >>815 予想してた斜め上の回答がきててワロタ 構文解析とか意味解析とか知らないくせに左結合とか右結合とか 結合規則だけでコンパイラ語ってんじゃねぇ、ヴォケw 例えば、hoge モジュールの中に foo クラスがあって、bar っていうメソッドがあったとして、 hoge.foo.bar っていう字句列が何を意味するか分かる?
831 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:50:39 ] >>830 何にも分かってないのはお前だけー
832 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:53:06 ] やれやれ、結局煽るだけか。 まぁ、納得できないんじゃなく、理解できないんだからしょうがないが。
833 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:55:24 ] >>832 つーかさ、なんで>802クンは>830で突然戻ってきた風なくせに、 突然>830でキレ気味に「ヴォケ」とかあおってんの? そんなに悔しい出来ことがあったのですかー?
834 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:57:09 ] はいはい、ごめんねー
835 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:57:40 ] やれやれ、反論できずに非を認めて謝っちゃったか。最初からそうしとけばよかったのにな。
836 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 21:00:09 ] うん、そうだね^^
837 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 21:01:23 ] どうやらようやく理解できたようで。めでたしめでたし。
838 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 21:02:32 ] はい
839 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:11:43 ] わかったふりしたい時は 偉そうにクイズ出してごまかすに限るよな。
840 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:12:29 ] 上はじゃじゃ馬下はヘボ これなーんだ?
841 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:23:20 ] ちんこ
842 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:38:35 ] まあ>>833->>841 は俺の自演なんだけどねー
843 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:49:47 ] >>842 自演ってことにしたいの?そんなに悔しかったのかい?
844 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:26:43 ] >>843 オマエガナー
845 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:27:48 ] 無駄なレスで消費するなよな・・・ と言うとこのレスも無駄だろと言われるんだろうけど。
846 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:31:37 ] >>842-845 自演乙
847 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:31:48 ] 糞スレのいい再利用法だな
848 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:10:00 ] >>846 くやしいのうwwwくやしいのうwww
849 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:58:02 ] アイタタタタタ・・・ 今日は802は悔しくて眠れないだろうなこりゃ。
850 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:59:36 ] 悔しがることかどうかもわかってないから大丈夫
851 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:59:39 ] なんかスレのレベル下がったな
852 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:01:42 ] 俺のおかげだな。
853 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:44:38 ] >>848 自演乙
854 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:51:56 ] >>848 =849 いい加減にしたらどうだ? そこまでして勝ち誇りたいかね
855 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:04:02 ] まだうだうだやってたのか。 せっかく俺が>>834 を書き込んでやったというのに。
856 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:13:06 ] でもそんなの関係ねー
857 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:20:07 ] 本当に悔しくて眠れないって、うけるwwwwwwwwwwwwwww
858 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:21:06 ] いい加減に寝ろww
859 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 06:01:30 ] おはよう諸君。 最後に書き込んだやつが、悔しくて最後まで起きてた奴ってことでいいかね?
860 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 07:33:14 ] みんなみんな>>802
861 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 09:22:08 ] >>859 悔しくて、朝一番に書き込んじゃったお前が NO.1だよ。寝てないんじゃない?
862 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 10:27:38 ] 下らない流れで加速させてもなあ(´・ω・)
863 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 10:53:31 ] lazyって何につかってんのww
864 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 12:32:11 ] >>859 おはよう>>802
865 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 13:18:39 ] >>863 lazyとか、macroが導入されたら使い物にならなくなりそうな気がするな。 いまでもdelegateとか使えば表現できるし、使い道的にはぶっちゃけいらないんじゃね? 最適化のために使われたりするのかなぁ… >>864 もういい加減その話題引っ張るのやめようぜ。
866 名前:デフォルトの名無しさん mailto:sage 願わくは俺再帰で無限ループ [2007/11/12(月) 18:00:38 ] 引っ張れば引っ張るほどそいつの悔しさが露呈するという事実
867 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:21:08 ] >>866 やめようぜ、頼むよ。 再帰には終了条件を設定すべきだろ。
868 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:25:41 ] 終了条件はスタック溢れて例外飛ぶまででおk
869 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:56:51 ] 末尾最適化されて無限ループに
870 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:31:00 ] auto D言語_Part15 = std.thread.getThis; D言語_Part15.pause;
871 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:52:44 ] 何をどう書き込んだって俺の勝ちなんだから、 もう諦めようよw
872 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:13:26 ] じゃ俺も勝ちで
873 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:16:29 ] じゃあ俺は負けで
874 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:56:52 ] 何の祭かと思ってスレ開く前に公式すっ飛んでった俺涙目
875 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:13:13 ] DSSS つかってみたんだけど dsss build でexeファイルができない・・・ 1>Creating imports for DD-Debug 1>Creating imports for DD-dsss_objs 1>Debug => DD-Debug 1>WARNING: Section Debug has no files. 1>dsss_objs => DD-dsss_objs 1>WARNING: Section dsss_objs has no files. ってでます。 dsss build main.d ってやればできるんだけど ルートディレクトリでコマンド一発ってのがdsssの機能をつかいたいです
876 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:40:31 ] dmd 2.007で void hoge(void delegate() func){ func(); } void main(){ hoge({goto End;}); End: return; } をコンパイルするとError: label End is undefinedってなるのと mainのreturn;をはずすと(ラベルの後がすぐ}だと)エラー出すのは仕様通り?
877 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:51:03 ] ラベルの後ろには文がないといけない。 End: ; ってしてみるといい。
878 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:58:46 ] >>876 gotoで飛べるのは同じ関数の中のラベルだけで、 関数から飛び出したり別の関数へ飛び込んだりは出来ないよ。
879 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 01:38:38 ] >>874 (´;ω;`)ぶわっ
880 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 05:34:50 ] 継・・・続・・・?
881 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:50:38 ] 継続はいらね
882 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:03:08 ] あのさ、1系列はもういらない子なの?
883 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:32:21 ] まぁ、一度もまともに固まったことのない言語に安定版の3文字など存在しないから、 1.xは実質的には、単なる「試行錯誤の跡地」であり、要らない子かもしれないな。 そこに何かを求めるのは、ついうっかりDの安定性に賭けて何か作っちゃった人くらいだな。
884 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:13:01 ] 今ふと気づいたんだけど、-v1オプションていつからか消えてる?
885 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:13:12 ] >>883 ヒドスwwwww でもそんな感じだな・・・ 2.0もそうなるんだろうな・・・
886 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:19:54 ] >>884 2.xには最初からなかったと思うけど 1.xにもなくなっているのかな
887 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:22:54 ] C♯も3.0出るしな
888 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:26:53 ] >>884 2.001から
889 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:48:23 ] unrecognized switch '-debuglib=tango-base-dmd.lib' Tango入れたらこんなん出てきたんですが、 これはどっか設定変えないと駄目なんでしょうか。
890 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:52:02 ] DMDが古いんじゃね?
891 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 00:41:19 ] 入れてる dmd が古くて -debuglib オプションを持ってないんだろう
892 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 00:52:35 ] omg そうだったんすか。 ありがとうございました。
893 名前:デフォルトの名無しさん [2007/11/15(木) 02:07:06 ] 既出してたらゴメ。dmd2.007(win)で import std.stdio; void main() { auto A = new Object(); auto B = A; delete A; delete B; writefln("end of process"); } を実行すると、end of processは表示されるけど、 プロセスが終了しないんだが、 1.そういうことしちゃだめ。 2.今、gcがもっすごがんばってるからもうちょい待て。 3.delete式なんてただの飾りですよ。エロい人にはそれが分からんのです。 4.バグだけど直すほどの価値がない。 どれ?
894 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 02:15:54 ] テキトーなクラスつくってデストラクタにwritelnでも入れとけば確認できるんじゃないでしょうか。
895 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 02:19:45 ] ていうかよく見たら参照元がdeleteされたあとさらにdeleteしてるんすか。 これはやっちゃだめでしょう。
896 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 04:25:33 ] 気になって眠れないので調べたら、 「ポインタ、動的配列、参照変数は、 delete のあと null にセットされます。」 と言う一文が。 しかしこの場合nullがセットされるのは参照変数としてのA自体で、 Aの実体を参照してた参照変数のBはそのまんま(つまりゴミ参照してる)じゃないでしょうか。 なのでやっぱり複数の参照変数で参照されてる大元消したあとにdeleteするのはまずいかも。
897 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 09:24:20 ] >>893 www.kmonos.net/alang/d/expression.html#DeleteExpression > それ以外の場合はガベージコレクタが呼び出され、 > インスタンスに割り当てたメモリは直ちに解放されます。 とあるから、 delete A; でBが無効な参照になるのは確実だと思う。 ただ、解放済み(だけどもともとGCで確保した)領域への参照に対する deleteについては仕様に言及がないと思うので、これは実装依存だと思う。 (つまり、実装によっては未定義動作となる可能性もあるということ) 実装依存となると、実装がどうなってるか分からない(今回の場合)なら やっちゃ駄目な操作(選択肢の1)になるかな。
898 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:19:41 ] ソースのどこで例外出してるか調べる方法ってありませんか? dfl使ってツリービューとかにドラッグオーバーを何度か繰り返すと 例外吐くんですが、それがどこなのかわかりません。
899 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:59:14 ] flectionedってそういうことできたっけ?
900 名前:893 [2007/11/15(木) 16:09:45 ] >>894-897 あ、やっぱそっか。さんくす。 どうも4から疑ってしまう自分がいて、反省。 でも、例外とか吐いてくれるような仕様にならんかなあ。
901 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:18:37 ] >>899 あれはTangoが無いと動かないみたいで。 dflとTangoの組み合わせは自分でやった限りでは出来なかったので。
902 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 20:52:50 ] ddbg ttp://ddbg.mainia.de/
903 名前:デフォルトの名無しさん [2007/11/15(木) 21:26:28 ] 突然でアレなんだけどさ、これ module a; private import std.stdio; module b; import a; void main() { std.stdio.writefln("hello"); } >dmd b.d a.d が通るって初めて知ったんだけど、キモくね?
904 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:32:41 ] きもいね
905 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:34:31 ] きもいけどどういう挙動が正しいのか仕様にはっきりと書いてないね。
906 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:43:37 ] www.kmonos.net/alang/d/module.html >デフォルトでは、import は private です。 >これは例えば モジュール A がモジュール B を、 >モジュール B はモジュール C をimportしていた場合、 >Cの名前はAでは探索されないということです。 >ただし、 import を特別に public と宣言すると、 >その import が取り込むモジュール内の全ての名前が、 >現在のモジュールを外からimportするモジュールにも見えるようになります。 未定義になるべきなのでは もしかして実はデフォルトがpublicなのかなーとか思って明示的にprivate import aにしてみたがやっぱり通るね。
907 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:09:59 ] バグじゃない?
908 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:00:36 ] >>903 それ、モジュールAとimport a;が無くても通るんだよね。 だから、仕様だと思ってた。 フル修飾だとimport不要、みたいな。
909 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:01:33 ] それだとstatic importの立場がなくなるがな
910 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 07:49:58 ] 8ビットのビットマップクラスをつくてるんだが、streamのFileをオープンした瞬間にアクセス違反で落ちる。 Windowsなんだけど、なんでかな〜。いまのとこ、無いファイルを作ろうとしてるんだけど。 コンソールに違反だよ〜ってでるからAPI内部の犯行ではないはずなんだけど。 あ、コンパイラのバージョンは1.015です。 bool Save(char[] name, bool IsIgnor = false){ BitmapFileHeader bmh; bmh.bfType = 0x4d42;// 'B'<<8 + 'M'; if(exists(name) == true){ if(IsIgnor == false) return false; } static if(IsDebug) writefln("file:",name); File fo; fo.open(name,FileMode.OutNew); /* if(fo.isOpen == false) return false; fo.writeBlock(cast(void*)&bmh,bmh.sizeof); fo.writeBlock(cast(void*)&bih_,bih_.sizeof); fo.writeBlock(cast(void*)Palette_,uint.sizeof*Palette_.length); fo.writeBlock(cast(void*)Pixel_,ubyte.sizeof*Pixel_.length); */ fo.close();
911 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 08:22:13 ] newせいよ
912 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 08:55:43 ] >>911 ぐあ。はずかし!またやってしまった!! くそー。癖って抜けないね。 なんにせよ、レスありがとう!!!!
913 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:16:10 ] aliasじゃインターフェイスを実装したものとみなされないのか…
914 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:53:24 ] Tangobos→Phango
915 名前:デフォルトの名無しさん [2007/11/16(金) 19:05:07 ] Phagos
916 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:15:53 ] Photangobos
917 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:21:30 ] デバッグってvs2005でもいけるんでしょうか。 vs6だとうまく行くんだけど、vs2005だと作業フォルダ指定しても ブレークポイントに反応してくれない。
918 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:21:37 ] pthaonbgoos.
919 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:46:48 ] phandango
920 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 22:20:40 ] Tanpo
921 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:16:22 ] Chi...
922 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:32:45 ] >>889 >unrecognized switch '-debuglib=tango-base-dmd.lib' 自分もその現象が発生しました。Tango 0.99.3になってそのスイッチを使い始めたみたいです。 調査の結果、rebuildが-debuglibに対応できていないのが原因のようで、dsss最新版のrebuildを使ってみてもだめみたいです… というわけで、dsssやrebuildを用いないでコンパイルするとうまくいくことがわかりました。 レスポンスファイルを作ってやるか、makeを活用するとよいかと思います。 というわけでそれを踏まえてDFL 0.96.01を使ってみたのだけど、いくつかはまったので使いたい方は以下を参考するとよいかと思います。 import\dfl\makelib.bat(23)にinternal/_stdcwindows.dを追加 import\dfl\makelib.bat(25)に_stdcwindows.objを追加 import\dfl\makelib.bat(34)の-v1を削除 でgo.batを実行してライブラリをビルドすることで解決したので参考までに載せておきます。
923 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:39:00 ] >>917 ああそういうことだったのかな 前はソースレベルデバッグできてたのにいつの間にかできなくなったと思っていたら
924 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:45:01 ] どなたかDflでドラッグドロップ系の処理が出来ている方っていますか? いたらバージョンを教えてほしいのでスが。
925 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:39:57 ] class A{ static void opBrace(void delegate() v){v();} } A{printf("brace");} みたいなのが欲しい。
926 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:44:01 ] q{} 文字列リテラルを追加しちゃったから、望み薄だな。
927 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:48:39 ] >>926 あれは、{code();}.stringof とかの方がよかったと思うのにな。。
928 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:48:48 ] tanpopo tanbo botan popotan bosan
929 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:53:37 ] >>926 a(b)があるけど、opCallもあるから大丈夫だ。
930 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:55:55 ] >>929 いや、そういうことじゃなくて…