1 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 01:09:54 ] プログラミング言語 D について語るスレッドです。 過去スレは >>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)
655 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 03:05:37 ] インテリセンスって未だに実現されないけどそんなに難しいのか
656 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 03:22:51 ] >>655 お前、本格的なGUIコンポーネントの類の開発やったことないだろ。 確かにただ作るだけならそれほど難しくはない。が、 インテリセンスのような類の機能はただ作るだけじゃそれこそ 無いほうがましだ!ぐらいの悪評を買うだけなんだよ。
657 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 08:06:57 ] ふーん、そういうもんかな 具体的には何が悪評を買わせるのか聞きたいな
658 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 08:35:32 ] ためしにEclipseでC++プログラミングしてみるといい
659 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 11:39:50 ] VC++にしたってncbファイルが結構なサイズになってるし。 情報集めるためにレスポンス遅くなったりするしな。(これは俺の環境がしょぼいせいかもわからんが)。
660 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 12:15:29 ] DFL 0.9.5.01 リリース
661 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 15:19:34 ] eclipse/javaやVC#おまけにDelphiあたりはレスポンスも十分早いこと考えると、 C++のは言語仕様の複雑さのせいって気がする。 インテリセンス作ろうと思ったら、 やっぱりコンパイラのソースから構文解析部分を引っこ抜いてくるのかな? だとしたら、言語仕様がコロコロ変わるのが一番の問題なのか?
662 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 18:31:14 ] finalとprivateを同時に付けるのってどんな意味あるの? privateな時点である意味finalみたいなもんだと思ってたんだけど
663 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 18:48:23 ] final privateだとサブクラスでオーバーライド(ぽいこと)ができる?
664 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 19:19:38 ] >>662 www.kmonos.net/alang/d/function.html 多分finalは「決して仮想関数にならない」が保障される予感。 あとはクラス設計者の意思表示として、かなぁ。 個人的には、よほどの理由が無い限りメンバをfinalになんてして欲しくないが。
665 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 19:34:36 ] 俺はむしろ基本finalで 重要な一部分だけ仮想関数の方が挙動が読みやすいし好きだな。
666 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:02:18 ] >>665 C++の仕様か 関数名(と引数の型)の意味論を基準として実装を信用するか、 他者の実装を信用せず特定のクラスの実装のみを信用する、という差かと
667 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:05:16 ] 意図しない再実装をするのは他人なんだから、 そんな状況でfinalにしてあったら余計ひどいことになるような気が。
668 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:20:00 ] Tango 0.96 beta 2 リリース
669 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 01:52:27 ] ん? privateでもすでに「決して仮想関数ならない」ことになるのか。 そいや意思表示の点でも同じことだよな。 んじゃprivateにfinalを重ねるのは、ほぼ意味無しと言っていいのかも。 >>665 private+finalの話とはまた違う話で恐縮なのだけど。 経験的に、予期せぬオーバーライドを行いたいってニーズは結構あった。 派生やUnitTestなんて考慮されてない既存のクラスに対してUnitTest書きたいって時に、 DBアクセスするメソッドだけスタブに置き換えるとか。 基本finalだとそういうときに融通が利かなくなっちゃうんだよねぇ。 virtualとかで”オーバーライド考慮してます”ってマーク付けられるのは良い事だと思うけど。
670 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 01:58:42 ] そういやさ、メンバ変数にfinal付けてる人たまに居るけどさ、あれって意味あるの?
671 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 07:22:55 ] Java だと定数になるんだっけか
672 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 08:18:32 ] テンプレートで型の前にinとか付けるとコンパイラエラー出るけど仕様?gdc使ってる
673 名前:665 mailto:sage [2007/03/20(火) 12:58:46 ] >>669 オーバーライドを意識してないメソッドをオーバーライドって 元のコードを丹念に追いかけないと何が起こるか予測しきれないから恐くて自分は出来ない。 で、元のコードを追いかけるなら元のコードを, ついでに継承を意識した形に置き換えちゃうから結局基本finalでも自分は困らないんだよな。 自分の場合は元のコードを弄れる状況が多いからこういう持論になるけど、 こればっかは普段相手にするコードの種類によって考えもかわってくるんでしょうね。
674 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 00:28:05 ] >>670 サーセン、Javaの癖でconstと間違えました……
675 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 00:37:06 ] tangoてホントに根本から入れ替えちゃうんだなぁ……。 Objectクラスのインターフェースから変わってるとか、 ちょっとそーいう感覚は無かったからビックリ。 標準ライブラリを変えるというのが何を意味するのかなんて 深く考えてなかったんだなぁ俺。 Dを追っかけ始めてからなんか色々と、 普段気にしないような知識が身に付いてきた気がする……。
676 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 01:30:34 ] tangoってGCも変わるの?
677 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 02:27:07 ] 実行時のGC制御は、std.gc.disable()の代わりに tango.core.Memoryをimportしてgc.disable()とかするらしい。 実装自体はパッと見、Phobosのをまんま流用してるように見える。 細かいところは違うのかもしれんけど。 標準として採用されて、パッケージ名の先頭のtango.取れんかな。 あとutil.以下の諸々も、util.外して一階層上げていい気が。
678 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 16:30:28 ] むしろphobosがstd.*からphobos.*に降格するだけでいいとおも
679 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 07:01:16 ] tango名前悪すぎ
680 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 07:01:40 ] 辞書猫の tango だよ!
681 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 09:57:37 ] tangoは魅力的だけど、 乗り換えるのはめんどくさい。 tangoはjava.*みたいなかんじで、 d.*とかにしてしまうとかがいいかもね。
682 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 15:01:27 ] でもやっぱ今後tangoがレガシーになることがあるかもしれないから phobos.*とtango.*がいいと思う
683 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 15:34:58 ] tango入れてみた。インストーラで入れて buildでコンパイルするんだな。 下手な翻訳でもしてみるか。。。
684 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 18:09:26 ] >>683 影でひっそり応援するよ
685 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 18:28:57 ] ライブラリ使うときにいちいちファイル配置とかコンパイルオプションとか気にするのマンドクセーなー。 なのでそろそろD言語独自の中間コンパイル形式が欲しくなってきたなぁ、と思う今日この頃。 プロジェクト内にポンと単一のファイルをコピーして、 $ dmd myapp.d some_d_library.dlib とかできれば楽なのになー。 現状の*.libと*.diをまとめてtar化する程度の手間でできんもんかな。
686 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 22:12:07 ] >>685 つ sc.ini
687 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 00:32:08 ] ガベコレ付きIDEのない言語なんて…
688 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 01:30:33 ] ポイズン っていうかイミフ
689 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 04:54:03 ] そうだね プロテインだね
690 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 20:37:06 ] まあEclipseでVS2005Ex程度の開発環境ができれば最高なんだけどね
691 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 22:40:44 ] そうだね プロテインだね
692 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 01:02:20 ] VSのプラグイン開発してた人ってソース公開とか してくれんかな。。。 俺もプラグイン作ってみたいけど、 英語の資料しかない。
693 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 11:51:02 ] tangoでかいなぁ。とりあえず、D言語研究にごちゃごちゃ乗せてるので 誰か適当でいいので翻訳手伝って欲しいです。 一人じゃ手におえそうにないし、気力も持たん。
694 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 13:35:10 ] >>692 VSIP SDKって使用するのにマイクロソフトと特別な契約交わして クローズドソースにしないといけなかったと記憶してるんだが、改定されたんかな。
695 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 15:22:31 ] マジスカ。 うーむ、そういう項目は見たことないんだけど。 Affiliateが無料で、その上が再販権とか宣伝協力があって有料じゃないのかな。 まぁそういうのあるならしょうがないか。
696 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 18:37:00 ] 1.010なんかいっぱいきたぞ
697 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 18:50:15 ] 一番上がよく分からん Object.factory()はリフレクション関係…?
698 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 19:28:57 ] New/Changed Features * Added template partial specialization derived from multiple parameters. 複数パラメータの(?)テンプレートの部分特殊化を追加 * Added Object.factory(char[] classname) method to create class objects based on a string. 文字列からクラスオブジェクトを作成するメソッド Object.factory(char[] classname) を追加 * Added std.gc.malloc(), std.gc.extend() and std.gc.capacity(). * Added std.string.isEmail() and std.string.isURL(). * Added std.stdio.readln(). * Improved gc performance for array resize and append. 配列のリサイズと追加時におけるガベコレのパフォーマンスを向上 * Bugzilla 64: Unhandled errors should go to stderr ハンドルされていないエラーを標準エラー出力に出力 * Added predefined Ddoc macro DOCFILENAME 組み込み Ddoc マクロ DOCFILENAME を追加 一番上がよくワカラン。
699 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 19:30:14 ] > Bugzilla 931: D Strings vs C++ Strings Page Incorrect Page って、コードページのことか?
700 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 19:45:12 ] >>699 ttp://www.digitalmars.com/d/cppstrings.html この「ページ」のことだよ。
701 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 19:54:53 ] > * Fixed problem with CTFE and array literals が気になる。
702 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 20:01:04 ] >>700 ああ、なるほど。
703 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 20:49:15 ] >>698 ttp://www.digitalmars.com/d/template-comparison.html ここでpartial specializationとページ内検索すれば例が出てくる Partial specialization derived from multiple parameters // D class Foo(T : Bar!(T, U), U) { ... } // C++ template<class T, class U> class Foo< Bar<T,U> > { ... };
704 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 23:23:05 ] うーむ。最近GCまわりがどんどん、良くなってきてますなぁ。 素晴らしい。大規模アプリに使えないとか言えなくなってきてる。 気がする。
705 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 00:11:16 ] あとは仕様確定とライブラr(ry
706 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 00:12:28 ] まだまだ仕様が足りないなぁ。やりたいことができないことが多すぎ。
707 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 00:34:18 ] C++のときも標準ライブラリが生まれるのかなり後だったんだから気長に待とうぜ
708 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 00:43:53 ] C:\dmd\tango\tango\io\Console.d(82): class tango.io.Console.Console.Input D compiler and phobos/object.d are mismatched って感じのエラーが連発して出るんですが、何をしくじってるんでしょう? インストーラーのTangoを使ってみたんですが。 スイッチしても戻しても同じエラーが・・・
709 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 00:49:00 ] >>708 tangoはまだdmd 1.010に対応していない。
710 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 01:00:30 ] おおう ありがとう。 動きました。その上日本語も出た。 ウホ
711 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 01:11:09 ] んー? なんで >>708 がエラーになるようになったんだ
712 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 01:18:58 ] >>711 ClassInfoの構造が変わった。
713 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 01:24:11 ] >>712 そうか dくす
714 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 03:00:12 ] 今度はDFLがダメポ('A`; C:\dmd\import\dfl\internal\dlib.d(27): module Thread cannot read file 'tango\core\Thread.d' 該当するソースを見ても何がわるいんかわかりません。 DFLとTangoはインストーラーでインスコしました。 TangoのLibフォルダの中身空っぽなんですが。 これはまずってますか?
715 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 03:54:01 ] オプションスイッチが必要ではなかったか
716 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 03:58:16 ] 今回のClassInfoの変更で思ったんだが -v1オプションはマジで飾りか?w
717 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 04:21:10 ] なんかわけわからんようになったス... コンパイルは出来てもEXEができんくなったり EXEが出来てるのに実行しても何もおこらんかったり。 import.dがないと連呼されたりと。
718 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 12:18:37 ] DFL 0.9.5.02 リリース
719 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 12:48:02 ] 出来ました。 dmd .1007とdmを解凍後にC:\直下においてパスを通し、 その後DFLインストーラー・Tangoインストーラーを実行して Rebuildをdmdフォルダに。 後は適当なサンプルを -Ic:\dmd\import -Ic:\dmd\tango -dc=dmd-win-tango -debug -v1 -L/exet:nt/su:windows:4.0 をつけてrebuildしたら出来ました。 Poseidonでも再生マークついてる所いじったらいけました。
720 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 22:20:44 ] DWTよりDFLが主流?
721 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 22:52:41 ] Tioportが頑張ってくれれば、DWTが勢いづくんだがな
722 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 00:16:34 ] >>720 ここしばらく放置気味だからなあ>DWT DFLは文字コード周りが適当だったのが多少改善されてきたらしいし。 結構いいんじゃないかなと。 わなDで推奨されてたwxDはマルチプラットフォームは嬉しいんだけどexeがちょっとデブ過ぎませんか。
723 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 00:37:16 ] ひさびさに情勢を除いてみたらTangoとかいうのが本家に喧嘩うってるん? Javaみたいにライブラリが乱造された世界が結構好きなので期待。
724 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 11:20:47 ] なにをいっているんだ
725 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 01:55:45 ] tangoのソースのなかにはウォルターたん名前も出てきてるぞ。 なんでかしらんけど。
726 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 02:36:45 ] phobosからパクってきたものだろ
727 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 07:25:19 ] DってC#のeventみたいなことをするには、独自くらす作くらなアカン? 言語仕様として似たようなのあるのかな?
728 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 11:02:13 ] 関数1個なら delegate でいいけど、 複数の関数を登録したいなら 独自クラス作る事になるのかな。 なんかライブラリにないのかな?
729 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 11:15:55 ] DFLはC#式のイベントだな。 自分で作っても難しくなさそうなもんだが。
730 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 13:40:11 ] std.signalsを使えない?
731 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 14:28:40 ] 何気にphobosのObjectの仕様が変わったか……。 tangoの方も同じものが追加されるんだろかね。 というか、コレObjectのstaticメソッドでなく普通の関数じゃ駄目だったのか? ちゅーか、クラス情報てコンパイル後も必ず残るようになってたのか。 メタ情報はビルド時にだけ使われてexe生成後には綺麗さっぱり消えてる、 そんな鮮やかさが好きなのに。
732 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 19:19:07 ] Objectは、GC関連でも結構変わってる。
733 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 20:45:35 ] tangoとphobosは混在使用できますか?それとも排他使用?
734 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 22:22:37 ] 少なくとも混在できる設計には 今は なっていないはず
735 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 22:41:08 ] -version=PhobosCompatibility 試したことは無いんだけど、これじゃだめなの?
736 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 22:50:15 ] それはphobos互換にするだけなんでは?
737 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 02:06:11 ] ある特定のライブラリと一緒に使えないなんてライブラリとしてちょっと微妙臭い
738 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 08:54:33 ] よくある事だ。
739 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 11:00:52 ] 置き換え用のライブラリなのに同時に使えてどうすんだよwwwww コアの部分はかぶってるし、Phobosにしかないクラスとかは 個別にコンパイルして使えばいいじゃん
740 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 13:10:11 ] toMBSzの類がtangoに見当たらなくて困る罠。 WideCharToMultyByte直呼びだとWin依存だし、 wcstombsでもwchar_tの扱いとかsetlocale()とか色々メドイし、 ああ自分でやりたくない。
741 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 13:44:30 ] phobosでもtoMBSzはWin32環境にしかないわけだが というかそんな長いもんでもないしコピペしてくればいいじゃん
742 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 16:43:09 ] 何その永続型車輪の再開発
743 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 19:02:15 ] ヌ? Tangoって日本語おkじゃないの
744 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 20:33:03 ] ググってたら、いいもの見つけた tango用phobosが入っていた最後のリビジョン www.dsource.org/projects/tango/browser/trunk?rev=1236 ページ下部にある Zip Archive のリンクからダウンロードできる。 ソースは少し古いので、多少修正が必要。 中のphobosフォルダを配置して、そのlibを作成したら、 tangoとphobosの混在使用できました。(Win32)
745 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 20:37:29 ] C99 vs D
746 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 00:43:30 ] dflってイベント関係どうなってるんでしょうか。 click ~= delegate(Object sender, EventArgs ea) { msgBox("befu"); }; 無反応です。 wndProckとかオーバーライドしてやれという事ですか。
747 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 01:51:56 ] うーぬ、 ListViewだけか。 なんでだろう。
748 名前:デフォルトの名無しさん [2007/03/31(土) 22:49:35 ] ちょっと質問しさせてください。 char[]->char*は.ptr渡せばいいみたいなんですが、 char*->char[]の方法がわかりません。 cast(char[])とやってもキャストできんと言われてしまうんですが、 どうすればいいんでしょうか。
749 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 22:53:25 ] >>748 >char[]->char*は.ptr渡せばいいみたいなんですが、 よくない。std.string.toStringz使うべき。 >cast(char[])とやってもキャストできんと言われてしまうんですが、どうすればいいんでしょうか。 std.string.toString
750 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 00:52:24 ] おお。 ありがとうございます。
751 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 15:02:46 ] Tangoのドキュメント作ってみた(英語) ttp://up.uppple.com/src/up2852.zip 詳しくは同梱のreadme読んでね
752 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 23:24:31 ] >748 お節介かもしれないけどCの文字列とDの文字列は全然違うものだよ。
753 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 09:48:47 ] Dでキャスト多用するのって格好悪いですか?
754 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 15:25:53 ] そんなのプログラムによって違う
755 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 23:46:37 ] AllegroがDでできるようになったら使う