バイナリを吐く言語スレは落ちてたので削除しました
乙
opDispatchでcdddddddarわろたw
954 名前:デフォルトの名無しさん投稿日:2010/1/20(水) 00:09:08
Dに未来はある?
962 名前:デフォルトの名無しさん投稿日:2010/1/21(木) 19:21:55
>>954 Dに関してははっきり「ない」と言える
963 名前:デフォルトの名無しさん投稿日:2010/1/21(木) 19:59:47
Pythonを知ってるプログラマが100人いるとすればDは0.02人くらい
964 名前:デフォルトの名無しさん投稿日:2010/1/21(木) 23:18:39
pythonと比べるなんてpythonをバカにしているとしか思えない
965 名前:デフォルトの名無しさん投稿日:2010/1/21(木) 23:26:03
Python を 100 とすると
VB 1000000
PHP 500000
C/C++ 100000
Java 50000
Ruby 1000
D 0.02
968 名前:デフォルトの名無しさん投稿日:2010/1/22(金) 03:16:14
D弱杉www
969 名前:デフォルトの名無しさん投稿日:2010/1/22(金) 23:38:53
Dは永遠に迷走し続ける
乙ー。ウォルたんの写真はー?
D3.0はいつになるんだろう?
15 :
デフォルトの名無しさん :2010/01/29(金) 01:32:00
5月に入稿、7月発売ってとこか
>>15 thx
じゃあAndreiの本はD3.0のガイドにもなるのだろうか
英語苦手なんだよなー
Post D2とか考えるとD3について書くのかな 発売どんどん延期してるし,最後に触れる可能性はあるか
19 :
デフォルトの名無しさん :2010/01/30(土) 08:30:59
>>17 D3.0のガイドにもなる……か。
確かに脱稿時点でD2.0の仕様を固定と書かれているので、
その可能性は否定できないな。
>>18 同感。
dmd 2.040 * Clarification: function returns are not lvalues * Added shared static constructors/destructors, regular static constructors/destructors now deal with TLS * Add -map command line switch * Add @disable attribute * Delegates and function pointers may be used in CTFE * Delegate literals and function literals may be used in CTFE * Lazy function parameters may now be used in CTFE * Slicing of char[] arrays may now be used in CTFE * added static/final function implementations to interfaces * added getOverloads, identifier, and isStaticFunction traits. * ModuleInfo changed from class to struct * Bugzilla 3556: version(CTFE) * Bugzilla 3728: getOverloads and identifier traits
>>20 乙
なんかいろいろ来たな
@disableって何だろ?
* added static/final function implementations to interfaces かなり前にこのスレで話題に出てたな
toStringzがconst付いてるおかげで渡せないときどんな方法で解決するのがベター?
24 :
デフォルトの名無しさん :2010/01/31(日) 04:09:39
>>20 乙。
これでBindings for the Windows APIを最新版で使える……。
>>30 前に話していたのは
interface A{
int f(int i) in{assert(i>0);}
out(r){assert(r>0);}
}
みたいに非final/非staticなメソッドじゃなかったか?
何で普通のメソッドが含まれていないんだ・・・
>>21 @disableはc++1xの=deleteみたいだぜ
D言語はprivateにしても同一ソースならfriendだからな 使用禁止にするためにprivateに押しやっても 効果が出ないので@disableみたいなのがいるんだろう
dmd.2.039なのですがsort用の叙述関数に任意の引数を渡したい 場合はどうすればよいですか? 例えば sort!(Sorter(10), SwapStrategy.unstable)(List); みたいにして、Listの中身を10からの差の絶対値でソートするみたいな 処理をしたいのです。
twitterとのこういう連携初めて見た。
33 :
29 :2010/02/01(月) 17:03:00
パチュDの人ありがとうございます。 でも実は本当にやりたいのは10がローカル変数だったりする場合なのです。 int[] ary = [1,5,9,13,18,23]; int Num = 10; sort!q{abs(Num-a) < abs(Num-b)}(ary); writeln(ary); とすると Error: static assert "Invalid predicate passed to sort: abs(Num-a) < abs(Num-b)" instantiated from here: sort!("abs(Num-a) < abs(Num-b)",cast(SwapStrategy)0,int[]) なエラーになってしまいます。 これをC++でのbindみたいに何とかすることはできませんでしょうか。
デリゲートを渡せばいいのでは int[] ary = [1,5,9,13,18,23]; int n = 10; bool f(int a, int b) { return abs(n-a) < abs(n-b); } sort!f(ary); writeln(ary);
こういうのを見るとほんとDは手が広いね
>>25 finalまたはstaticならvtblの衝突はない、という話だったかと思う
でも名前の衝突は回避案が見つかったのか?
interface A { static void f(){} }
interface B { static void f(){} }
class C : A, B {...}
としたときのC.fの扱いとか
38 :
29 :2010/02/02(火) 10:42:39
>>33 int[] ary = [1,5,9,13,18,23];
int Num = 10;
sort!((int a, int b){return abs(Num-a) < abs(Num-b);})(ary);
writeln(ary);
40 :
デフォルトの名無しさん :2010/02/03(水) 23:00:25
>>24 >>これでBindings for the Windows APIを最新版で使える……。
使ってみた。確かに数箇所コンパイラに指示された所を修正するだけで使えましたさ…だがッ!!
(d3d10.d の ID3D10Device の中の)
誤>> void ClearRenderTargetView(ID3D10RenderTargetView pRenderTargetView, FLOAT[4] ColorRGBA);
正>> void ClearRenderTargetView(ID3D10RenderTargetView pRenderTargetView, FLOAT[4]* ColorRGBA);
……なんだぜッ…(dmd2の場合)!!
…や、みんなもうご承知かもしれませんが3日ほど詰んでたので一応…
object.Exception: Cyclic dependency in module hoge って例外が投げられたのですが、どう対処してよいのやら・・・ どんな原因が考えられます?
環境は?
>>41 そのまんま、循環依存してるんじゃないの?
循環依存しないようにプログラム書いたらいいんじゃない?
44 :
41 :2010/02/03(水) 23:58:24
>>42 DMD2.040です。
>>43 循環依存ってどのような状況でしょう?
module hoge; import foo; int fuga; static this() {fuga = foo.bar + 10;} module foo; import hoge; int bar; static this() {bar = hoge.fuga + 10;} どちらの static this() を先に実行したらいいかわからないため、循環依存の例外が発生する
46 :
41 :2010/02/04(木) 01:11:04
>>45 なるほど! よく解りました^^
しかしながら相互importで例外が発生するのなら、
素直に初期化関数を作ったほうが良さそうだ。。。
はやってる
49 :
24 :2010/02/05(金) 20:55:54
>>40 d3d10.d の ID3D10Device の中の定義ミスには気付かなかった。
サンキュー直しとく。
50 :
40 :2010/02/07(日) 01:14:41
…今度は Bugzilla 1687 で詰みますたorz これは、回避可能なのか…?
>>50 諦めてFLOAT*にしてしまってはどうか
52 :
51 :2010/02/07(日) 01:21:24
途中だった
>>50 諦めて定義はFLOAT*にしてしまってはどうか
で、呼び出し時には配列の ptr プロパティを渡す
53 :
デフォルトの名無しさん :2010/02/07(日) 23:28:41
MicrosoftVisualD言語とか出ませんかね
出てもすぐに古くなるしなあ。 dmd=言語仕様になってる現状そんなもんあっても仕方がない
56 :
デフォルトの名無しさん :2010/02/08(月) 00:15:39
>>52 あ、
>>40 と
>>50 は別の話。書き方が悪かった。スマソ。
>>40 は FLOAT[4]* でたぶんいけてる感じ。
>>50 の方は「extern(C++)のinterface内の関数呼び出しに失敗(別の関数を呼んでしまう?)する」
と言うdmdのバグ。おいらにゃお手上げです。
暇だから最近D言語さわってみたけど何か面白い でも、ライブラリ周りとか統合できないの? あとは他言語とのDLL介した連携とかでGC絡みがよくわからん・・・ DでDLL作らん方がいいんだろうか
>>57 GCを使うのは、一つのDLL内で完結する部分のみだね。
連携部分はmallocとかAPIとかで別個に処理。
>>56 extern (C++) の interface って DirectXのやつ?
extern (System) にしてもだめ?
60 :
56 :2010/02/08(月) 22:15:06
ごめん、関係なさそうだ。忘れてください
60 のハンドルは typo です。重ねてごめんなさい。
>>58 なるほど、結局そうなるのか。
DLLのサンプルでマルチスレッド未対応になってるのは、
Dの管理外スレッドからのコールはそれこそ”リソースを管理できない”から
falseを返してると勝手に思ってるんだけど、これで合ってるのかな
D言語間でもGCのハンドルを引き回したり・・・DLLは何か後で嵌まりそうだ
っていうかDでもっとも鬱陶しい機能だわGC shared_ptr最高。でもC++はもう使いたくない……
メモリ周りを楽にしてくれるのがGCならややこしくしてくれるのもGC・・・
.Netマンセー・・・ とは言わないけど、GC含めた 統一フレームワークっぽいのがあれば何かと便利な気がする 複数のD系統DLL使ってたらどうすれば良いのやら・・・ お互いのインターフェイスとかで混乱しそうorz
std.ffiみたいなのが欲しいね
>>65 >統一フレームワーク
Dの弱点はそれだよねえ。.NET使うと「どの環境でも共通して使えるライブラリ群の強み」って言うのを強く感じる。
68 :
65 :2010/02/09(火) 10:43:03
自分で書いてて思ったけど、.Net程でかくなくていいから、 せめてメモリ周りくらいは何か共通基盤が欲しい。 phobos/tangoとかライブラリ関係なく使えるのが良いんだけど難しいんだろうか。 今は混ぜるな危険って感じがする
Dの場合実行ファイル単位でGC埋め込んでるから、 共通して使えるってなると仮想マシンみたいなもんの上で実行する必要が出てくるんじゃないかなと。 あるいはランタイムライブラリ必須になったり。
まあ、だからこそ「GCって本来OSがやるものだよね」というコメントが出ているわけで。
それに対するMSの回答が.NETだったりするのかな。
DWT+tangoでコード書いてたはずなのにだんだんtangobosが混ざってカオスになってきた 何でtangoはあんなに使い勝手悪いんだろう 命名規約のせいなのか 何にでもclassを持ち出すからか
tangoは一昔前のオブジェクト指向ライブラリって印象だな。
>何でtangoはあんなに使い勝手悪いんだろう >命名規約のせいなのか なぜかPHPのことを思い出した
char[]をKeyTypeとした連想配列を、 アルファベット順にソートされた形で、foreachで回したいです。 どうやればよいのでしょうか?
foreach (k; aa.keys.sort) { auto v = aa[k]; ... }
>>76 thx
keyだけをforeachで回すという発想がなかったです。
aa.sort()にしたい
よし、上手い具合にソート済みになるようなhash値を持つ文字列型作ろうぜ
文字列をbigendianのバイトコードとみなしたときに たとえば上位4バイトをhash値でテーブルにして 残りの下位バイトをhash重複のリンクリストにすれば最強
81 :
デフォルトの名無しさん :2010/02/12(金) 02:00:16
.
ひゅう
D言語でゲームを作るとしたら、SDLしかないんでしょうか? SDLはライセンスが面倒くさそうなのが気になります。
SDLのライセンスってLGPLでしょ。そんなに面倒かな あとはDXライブラリとかAllegroとか
>>86 どうもです。
ライセンス関係はあまり知識がないのですが、LGPLはよく理解した上で使わないと痛い目に遭いそうな怖さを感じます。
DXライブラリを使う事にします。
struct { int member = void; } これできないのですが代替手段ありますか?
あります
なにがどうできないの?
this/static thisかね
92 :
デフォルトの名無しさん :2010/02/15(月) 07:45:26
D++
std.string.splitってデリミタの文字を消して分割しちゃうけど デリミタを残したまま分割することってできないのでしょうか。
どういうこっちゃ
自分で追加しなはれ
よーしパパstd.c.string.strtokで分割しちゃうぞー
せっかくだしCTFEできるように書いてくれ
D#はいつ頃完成しますか?
99 :
デフォルトの名無しさん :2010/02/16(火) 03:47:35
しません
します
ObjectiveD++が先です
102 :
デフォルトの名無しさん :2010/02/16(火) 07:19:39
しません
103 :
デフォルトの名無しさん :2010/02/18(木) 06:40:44
DLL版あるんじゃなかったっけ。C#用かなんかで。 ポーティングはそんなに難しくないと思うけど。
特に意味も無くclassのopAssignをオーバーライドする奴って何なの? AssignOverride a = null; a = new AssignOverride; でアクセス違反になって頭抱える俺を見て嘲笑いたいの? というかこれで落ちるのって言語仕様的にどうなんだ
それD1か?D2だとclassのopAssignはオーバーライドできないんじゃなかったか
まだー?
なにがー?
110 :
103 :2010/02/22(月) 07:33:42
>>105 準備するメンドイな。
宣言とかもイチイチ書かなくちゃいけないとか。
D言語からでもDXライブラリを使える事が分かっただけでもマシか。
ダックタイピングにおいてオブジェクトの保持ってできないんでしょうか? import std.array; import std.range; class Hoge { void f(R)(R r) if (isInputRange(R)) { auto app = appender(ranges_); app.put(r); } private: XXX[] ranges_;// XXXは何にすれば? } インターフェイスを継承する方法しかないんですかね?
113 :
112 :2010/02/22(月) 15:06:53
front関数の戻り値の型が決まっていないから、インターフェイスを継承する方法も無理か・・・。
>>112 そのコードが無意味すぎて何したいのか分からないけど
class Hoge
{
void f(R)(R r) if (isInputRange!(R))
{
static R[] ranges_;
auto app = appender(&ranges_);
app.put(r);
}
}
は?
>>114 それだとRの型毎にranges_が存在する事になってしまいます。
デリゲートの「引数と戻り値の型が合っていれば、どんな関数でも保持できる」のように、
「conceptが合っていれば、どんな型でも保持できる」方法があったら便利だなーと思いました。
>>115 concept関係無しに使えるVariantとかは駄目なの?
>>116 Variantは格納はできても、取り出すときに型情報が必要になってしまいます。
>>118 GoのInterfaceみたいなのが欲しいという感じ?
今だと無理な気がするし,あまり必要性がない気もする
>>119 そんな感じです。
OOPとtemplateを混ぜて使おうとしてるから必要になるのかなぁ。
そもそもここに無理があるのか・・・。
class Hoge(T){ this(){ buf = new WrapperBase[0]; } void chain(R)(R r){ buf ~= new Wrapper!(R)(r); } /**/ private: static abstract class WrapperBase{} static class Wrapper(R)if(isForwardRange!(R)&&isImplicitlyConvertible!(ElementType!(R),T)):WrapperBase{ this(R r){this.r = r;} private: R r; } WrapperBase[]buf; } void main(){ auto hoge = new Hoge!(char)(); hoge.chain("test"); /**/ } 「conceptが合っていれば、どんな型でも保持できる」筈。 んでさー、ForwardRangeでないInputRangeってどうやって作ればいいの?
>>121 「conceptが合っていれば、どんな型でも保持できる」という言葉をそのままの意味でとればそうですが、ダックタイピングの機能が残っていないと意味がないです。
つまり、WrapperBaseの配列型であるbufに対して、conceptを満たす操作ができないです(buf[0].frontとか)。
InputRangeはconceptの例として出しただけです。
type erasureとか、そこからの型の復元の話になるのかな?
>>123 WrapperBaseからRへクロスキャストできるようにしておいて、
Modern C++ Designの第11章マルチメソッドに書いてあるディスパッチャのような物で型を復元することなるのかな。
ここまでしてやるメリットないですよねぇ。
C++のboost::noncopyableのような物はないでしょうか?
>>125 クラスは参照だからそもそもcopyしないよ。
>>125 超適当に
template noncopyable() // mixin templateと書きたい・・・
{
@disable
{
this(this) {}
void opAssign(typeof(this) rhs) {}
}
}
struct Foo
{
mixin noncopyable!();
}
void main()
{
Foo a, b;
a = b; // error
Foo c = a; // error
}
レスthx
>>126 盲点でした。
逆にコピーしたい時にメソッドを用意する必要があるんですね。
>>127 structのコピーを禁止したい場合、言語の機能や標準ライブラリではできないですか。
でも、簡単に書けますね。
>>128 > structのコピーを禁止したい場合、言語の機能や標準ライブラリではできないですか。
それが@disableだと思うんだけども
上のnoncopyableみたいなのがPhobosに入るかどうかは分からないね
それと上のだけど@disableにするのはコピーコンストラクタだけでよかった
refな引数取る場合はちゃんとopAssignを@disableにする必要あるけど(それをnoncopyableにいれるべきかな?)
>>129 なるほど。
@disable this(this) {}
でいいんですね
連想配列って参照渡しですよね? int[string] a; int[string] b; b = a; b["hoge"] = 23; b["piyo"] = 42; if( a.length != b.length ) printf("???"); by DMD2.040
だと思うんだけどこの前refじゃない戻り値として連想配列渡したらコピーされたような気がするんだよな ねむいからだれかためして
133 :
131 :2010/02/27(土) 00:05:57
すみません・・・ 勘違いでしたm(_ _)m とりあえず上記のコードは間違いでした。
134 :
131 :2010/02/27(土) 00:10:28
>>132 多分それです!
戻り値をrefにして再度やってみます。
135 :
131 :2010/02/27(土) 00:37:57
うまく動いてくれないので、クラスでラップすることにしました。。。
refとかまだ怪しい動きするのかな nothrow int func() {} int func() nothrow {} で動きが違うバグとか直ったのかな
obj……ファイル……………?
>>139 C用のlibをcoffimplibで変換すればlibは手に入るのですが、
なぜか自分の書いたコードをビルドする時、wininet.objとwininet.libのように2つ指定しないとリンクが通らない物があるのです。
HDDにWinAPIのobjファイルが一通り入っているのですが、これがどこで入手したのか思い出せないのです。
>>141 今、作ってみましたが、win32.libをリンクするだけだとエラーが出てしまいます(wininet.objやwininet.libをリンクすれば出ない)。
なんでかなぁ・・・。
143 :
142 :2010/02/27(土) 18:47:28
よく考えたらwin32.libのソースはヘッダの部分だけだから、win32.libとcoffimplibで変換したlibの両方が必要なのは当然かー
144 :
デフォルトの名無しさん :2010/03/02(火) 23:44:15
dで自己参照構造体ってどうやって作るんですか? ノードを追加する時はcと同じく、mallocを使用するべきですか?
知らんけどDには普通にポインタあるよ
>>144 定義の仕方はC++と同じでいい.
インスタンスの生成は特にこだわりがなければnewでいいよ.
DMD.2.039でWindowsのCreateProcess関数を使えなくて困ってるん ですがstd.c.windows.windowsには入ってないのでしょうか。
入ってないけど、自分でプロトタイプ宣言すればいいだけ
win32は……と思ったけど最新版だと使えないのかな。まあいつものことだ。
D言語に識別子のスペルチェックが導入されたようです。 void foo(){} void main(){ fo0(); } // <- もしかして:fooじゃないか?とコンパイラが教えてくれる
いつの間にか template Value(T, T Init = T.init) {} mixin Value!(int[string]); みたいなのが出来なくなってて詰んだ 連想配列リテラルどうして静的に存在できないん?
配列とは違って、内部的にはテンプレート構造体のインスタンスでしかないからなあ 中でunsafeなことやってるし、コンパイルタイムに取り扱うのは難しかろう
なんとかインチキできんのか
連想配列はCTFEで使用可能だし,静的に扱うことはできる.できないのはテンプレートの引数にすること. テンプレートの引数に受け入れるためにはマングルする必要があるから,文字列表現の一意性とかが厄介なんじゃないかと思う.
Version D 2.041 Mar 6, 2010 新しいの来たよー。
ここにきて新機能を足すなあと思っていたら、 むしろ最終的な文法の整理になるのかな?
つまり仕様変更などを気にせずD2を使える時期になると言うことかな。 ライブラリの整備が進んでくれないかなー。
toDelegateとか近年稀に見る今更感
D3がどれだけ破壊的になるか今から楽しみw 全く別物言語になったりしてな
プロトタイプベースのオブジェクト指向が使えるようになり、動的型付けも言語がサポート テンプレートのような面倒な機能は省略するが関数内関数やデリゲートは健在 そしてブラウザで動く
それなんてJavaScript?
はやくDMDScriptをCTFEでDに変換するコンバータを書くんだ
Windows PowerShellのフォーマット演算子みたいなのが欲しいなと時々思う。std.formatはどうも扱いづらい。
>>151 2.040ならエラーだけど,2.041ではコンパイル通るね
4月から来たけど2.042では通らなくなってたよ
ctgetsまだー?
以前ちょっと話題になったような どうすれば.NET使ってて空白パスで落ちるように作れるのか興味がある
D1とD2のクロージャって何か違う?
void delegate() func() { int i = 1; return { writefln(i); }; } func()(); とかやるとD1だとiがアクセス違反になる…んだっけ?
>>170 本物のクロージャが入ったのはD1の途中じゃなかったか
>>171 あり?でもsourceforgeには.NET/Monoとあるし、C#のDLLが入ってるし、
リポジトリの中身だって…
ち、畜生!世界が俺を嵌めようとしてるんだな!
winでコンパイルしたら なんか途方もなくでかいexeになったんだが
import std.bind; void foo(int a, int b) {} bind(&foo, _0, _0); コンパイルエラーになります。 bindって現在バグで使えない状態なのでしょうか?
今から学ぶならDで決定?
他に言語知っていて、言語マニアで、ネイティブコンパイルが必要な人で 言語仕様が変わっても泣かない人にはお勧め。
言語マニアじゃないけど波長が合うから追っかけてる 学習用には資料が少ないからイマイチじゃない?
プログラミング言語が出来るまでを学習するにはちょうどいいかも。 最初から付き合ってないといまいちだけど。
言語にコケにされてるような気分を味わいたいなら本気でお勧め しかし最近の言語の概念が山ほど詰め込まれたてんこ盛り言語だから 無理に学んでおけばいろんなところで役に立つ か も
「あ、これD言語で出てきた奴だ!」 となって成績がアップし部活でも活躍、背も伸びて彼女もできる
逆だろ……。 今後新機能を持った言語が大々的に売り出されても、 それD言語にあったやつだろ……とかKYなこと言ってしまって空気に乗れずアンチ認定される。 ろくなことにはならんよ。 D言語がEiffelにした仕打ちでもあるけどなw
じゃ俺もHTMLのスレ行ってそれSGMLにあっただろ・・ とか言って嫌われてくる
>>175 bindはずっと前から壊れてるけど誰も直そうとしない
auto f = (int x) { return foo(x, x); }; auto g = new class { auto opCall(T)(T x) const { return foo(x, x); } }; 別にライブラリなくても、この程度で済むからな
>>184 そうだったんですか。
当分は直る見込みもなさそうですね。
>>185 仕方ないのでその方法で書きますthx
bindはconst/sharedとかref/outとかinoutとかテンプレートとかオーバーロードセットとかの問題があって
ちゃんとしたのを作るのは今のD言語の能力では難しいと思う。
>>185 みたいに書けばその辺全部クリアできるんだけどね
MS-DOSだと文字化けするんだよな。 ヲルター氏はアメリカ人だから気づいてないんだと思う。 まぁ日本語に変換するための オリジナルライブラリを公開しているサイトがあったけどね。
その点はDIYというか、確か日本語コンソール専用命令らしきものが一時phobosに入っていたようなな覚えがある
MS-DOS
そう揚げ足を取るなよw
何言ってるんだ…? UTF-8を表示出来ないWinのコンソールが悪いのであって、D言語を叩くのは見当違いでは? PerlだってUTF-8をそのままコンソールに出力すれば文字化けするし。 ちなみに、 dmd -run xxx.d | nkf -s っておまじないつけるといいかも。
Fileに文字コード変換するフックを追加できるようにすべきなんだよ
Windows以外でもLANGをUTF-8以外にしてたら化けるだろ。 OSに設定された文字コードに変換してから出力するべきだろ。 真面目にやるならWindowsの場合はWriteConsoleWを呼びわけるべき。
標準出力とコンソールは区別するべきだろう
や、だから標準出力(に限らず)の出力先ハンドルの先がターミナルかどうかで動作変えりゃいいじゃん。
>>196 POSIXではターミナルがファイルデバイスだからそれでいけるかも試練が、
windowsでは全くの別物だから無理
>>196 それから、リダイレクトされてるときどうするの?
>>197 Windowsでもターミナルのスクリーンバッファはファイルハンドルで、ちゃんと区別もできるよ。
>>198 ハンドルの種類を確認して動作を変えるんだから、ハンドルの先がディスクファイルなら無変換でOK
UTF-8を表示出来ないWinのコンソールが悪い
設定ちゃんとすれば表示できるだろ
cmdでさえ入力CPと出力CPが食い違ってると動かなくなったりするし、 Windowsはコンソールのコードページを変更できるようにできてないわなあ
いやだからソースにUTF-8埋め込んでそのまま出力しているようなプログラムは Windowsに限らずLANG=ja_JP.EUCな環境とかでも化けるだろと。 まあ最近は全部UTF-8だからWindowsだけ浮いてるんだろうけど。
windowsの実装が特別タコだから問題になってるんだろう
仮にWindowsのターミナルがコードページ変えられるとしてよ? わざわざひとつのプログラムのために変えてもらうのか? 他のプログラムは全部SJIS前提に動いているのに? どう考えてもphobos側で吸収するべき。
いや SJIS だけが ガラパゴス なんで
だからFileが入出力文字コードを変更できるようにすればいいだけやがな
表示だけならコマンドで変えられなかったか chcpコマンドとかそんなんで
>>208 できるけどフォントが設定うまくできなくなったり文字幅の計算が糞だったり一部のアプリケーションが落ちたりする
windowsの実装が特別タコだから問題になってるんだろう
妙に伸びてると思ったらおまえら… tangoはその辺ちゃんとしてくれるんだっけ? tango.io.Stdout.Stdout("すばらしいよねtango").newline;
tangoはConsoleとFileを分離してるからね
テキストストリームを流すオブジェクトとバイトストリームを流すのの区別は必要だね。多くの言語やライブラリでそうなってるように
ほんと基本的なことで申しわけないのだけれど… windowsのコンソール画面で 文字化けしないで済むライブラリを入手したんだけど これってどこに置けばいいのかな?
なにその「通販でよく分からない風水の置物買ったんだけどどこに置けばいいのかな」みたいなのは・・・
売った人に聞きなさい
>>214 「ライブラリ側の出力の問題」と「コンソール側の表示の問題」が判れば、
大抵のライブラリで表示可能な筈だよ。
コンソールとかどうでもいいから早くソケットをだな
折しもTangoがIPv6に対応したそうじゃないか。
標準ライブラリもほんと頭痛の種だな・・・
統合するとかいう話どうなったの
ライセンスの問題があってできてない
2.042出てたのか 圧倒的なバグの力に屈服した模様
超久しぶりに来てみた 今Dってどうなってんの?
一言で言うと どうなってんの? って感じかな
ええええ???www そんな迷走してんのか
2009年11月に2.0の仕様が固まる予定 安心して待て
よし、分かった 2009年11月にタイムスリップするわ!
去年じゃないか…… 仕様固まってたっけ?
2009年11月か。まだまだ先だな
2.042でclearってのが追加されてるんだけど・・・
それは前からあったよ
234 :
デフォルトの名無しさん :2010/03/23(火) 01:30:22
>>232 俺も一瞬「すわデストラクタ問題に解答が!?」とおもったが、
clear()関数にbase classのデストラクタを呼び出す記述が追加されたって理解でいいのか?
236 :
デフォルトの名無しさん :2010/03/24(水) 12:46:02
C言語に オブジェクト指向 ガベコレ 文字列処理 正規表現 を加えてくれたらそれで十分だよ。
全く関係ないんだけどC++にはfstream, ifstream, ofstreamの区別があって 読み取り専用で開いたファイルストリームに書き込もうとするのなんかを コンパイル時に検出できるわけだけどphobosのFileはそういう風にする予定はないのかな
デフォルトが読み取り専用なんだからいらんでしょ? 全く困った事ないなぁ
コンパイルタイムに検出できるエラーをわざわざランタイムまで先送りするってのは行儀がいいとは思わないな
241 :
デフォルトの名無しさん :2010/03/24(水) 21:30:23
static 引数(だっけ?)を実装したら出来るようになるんじゃ?
Call-Time Function Evaluation
C言語+RAD と D言語 RADなし だと 果たしてどちらが便利だろうか?
GUIのデザイナに限ればツールキット付属のでいいよね
>>243 C++Builderみたいなのが相手ならともかく、素のC言語+RADだと、
GUIデザインをD言語上のDSLでやるとしても(外部GUIデザイナを使わないとしても)、
まだD言語のほうが便利な気がする。
247 :
デフォルトの名無しさん :2010/03/25(木) 23:45:44
SpanMode.breadthでディレクトリ巡回すると 4invalid UTF-8 sequenceってでる 同じディレクトリをSpanMode.depth使うと正常に終わる バグ? try { foreach (DirEntry entry; dirEntries(".", SpanMode.breadth)); } catch (Exception e) { writeln(e.msg); } dmd 2.042
安心しろ、以前のコンパイラなら何の問題もなかった俺のプログラムも 2.042から不定期にUnicodeエラー出したりアクセス違反したりメモリ確保失敗したりしてる だから安心しろ
budのLIBPATH働いてない気がするけど何か間違ってるのかな
関数型ライクなスタイルでコードを書こうと思ったんですが、phobosはpureがついてないのが多くて不便に思います。 std.algorithmなんかは関数型っぽい仕様してると思うのですが、なぜpureがついてないのでしょうか?
歴史的事情なんじゃね? pure できたのいつだっけか。
pureで書き直してパッチを送り直せばいいとおもうよ
なんかバージョンが1個あがるごとに関数1個ずつぷちぷちpureがついていく感じ
>>250 pureをつけるためには引数がimmutableじゃないといけないから、
コンテナを引数に取るstd.algorithmの関数はpureにできない
255 :
250 :2010/03/27(土) 04:15:58
確かに全てのコンテナにidupのような関数を要求するのもアレですね。 それと、標準ライブラリがまだ未完成でpureに対応してない部分もあるという事ですか。 関数型で書くのも簡単じゃないなぁ。
なるほど immutable か。 確かに外からこっそりいじられる可能性がある限り、真の pure とは言い切れないな。
Haskell並にpureとinpureな部分を分割するのはさすがに無理かー
import std.range; void main() { writeln(ElementType!(char[]).stringof); } dchar この挙動は一体?
>>258 "ほげほげ".front == 'ほ'
import std.stdio; static func() { writeln("hoge"); return "fuga"; } void main() {writeln(func);} $ dmd -run test hoge fuga mainとfuncの位置を入れ替えるとコンパイルエラーになる、そんな不思議
そこはDではprivateと書くべきではないのか
>>259 なるほど。
しかし配列と文字列(charの配列)とでElementTypeの挙動が変わるのは釈然としないなー
>>262 それは思う
他の言語でもあるように配列と文字列を完全に別のものにして欲しいかも
>>261 文法見ると関数の戻り値型は省略できないはずなんだよね
せめてautoと書かないと
ところがstaticとかつけるとコンパイル通ってしまう(privateは駄目)
たぶん変数の型を省略できる辺りの仕様と混線してるんだと思う
DMDのパーサは継ぎ接ぎだらけで汚いからなあ
誰かDで書き直してやれよ
Dで書いてもなぁ、パーサジェネレータ使ったものでないと他人が 読めるぐらい平易にならんよ
まず仕様が固まらないとなw D3マダー?
>>263 これ以上組み込み型増やすのは勘弁だわ
Cとの互換性も下がるし
Cとの互換性大事だろうがあッ!!
Cとの互換性は大事だよ、大事だよ
dflインスコ出来ねぇ
今生きてるGUIライブラリはGtkDとQtDだけ?
>>274 なげええええええええええええええええええ!!!!!!!!!!
281 :
デフォルトの名無しさん :2010/03/29(月) 21:36:32
wxDは、DWTは生きている そんな風に思っていた時期が、俺にもありました
流れる星は生きている(もすぐ死ぬ)
日本語でも読む気しねえよこの長さww
char 型と、utf8 型(?)に分けちゃえば、すんなり行くような気がする今日この頃。 そうでもない? UTF-8 と決まっている D の char 型と、C言語用の文字(列)型としての char 型が ごちゃ混ぜになってるのがそもそもの不幸の始まりだよね?
>>285 それなら、Cのcharに相当するのをlocale_charみたいな名前で新設する方がいいな。
UTF-16をwchar, 32をdcharって名前にしてしまってるんだから。
(u)byteでは何か問題があるの?
>>287 charでもubyteでも何の問題もないけど、そういうaliasが欲しいねって話と思ったんだが。
いらねーヨ
byteで何も困ってないからなぁ locale_charとかsynchronizedとimmutableとforeach_reverseについで嫌いな名前になりそうだぜ
foreach_reverseについては同意 もうちょっと良い感じのはなかったのだろうか
いや自分が書くときはcharで困らんけどさ。
OSの言語設定や環境変数LANGに左右されるC文字列と、UTF-8固定のD文字列を区別しておかないと
混同しても何も困らない欧米人が混同したコード書きやがるよね、
というよくある話を
>>285 は言いたいんじゃないのか?別人だけど。
ubyteでいいじゃん
欲を言えばimmutableはもうちょっと短い言葉だと良かった constに比べると長い
invariantのほうが打ちやすい
文字数の多さは最近そんな感じだな むかしはメモリが少なかったし画面も狭かったから、 Cが発達したころ、その辺の事情と区別しやすさのバランスが取れた頃合いが5文字だったんだろう
unsigned intをuintにした頃のウォルたんはどこへ…
キーワードにスペース入ってるのは気持ち悪いんだよなあ auto refとか
static thisとかな
こうしてD++の開発が始まったのだ
複雑さでC++の10倍を目指します
冗談でも言ってよいことと悪いことがある!
先ずはD--
そしてラブプラス+
L言語作ってくるか…
dllの読み込みはstd.loaderでいいのか?ライブラリ関連よくわからん
308 :
デフォルトの名無しさん :2010/04/01(木) 22:22:43
>>307 え〜?そんなライブラリはないだろう……、と思ったがあったッ!!
うん。使えるんじゃないかな。使ったこと無いけど。
std.loaderなんてあったんだな、しらんかった
どっかに過去のバージョンのコンパイラは落ちてないんですか? 具体的に言うと0.149があるとABA gamesのMu-cadeが楽にコンパイルできそうなんですが
311 :
デフォルトの名無しさん :2010/04/01(木) 23:54:09
>>312 必要なのは0.149でしたけど、older versionsから辿って見つけることができました。
ありがとうございます
bit型はどこいっちゃったの
bit型 → bool型のalias → 非推奨のbool型のalias → 消滅 と順番に形を変えていきました
バイト・ワードが定着して以降はマシン的に「1ビットのメモリ」なんて細かい扱いはしないから、 ビット単位で詰め込みたい人はstd.bitmanipで便利に使ってくれって感じの方針だな
なるほどさんくす。 byteをboolの代わりにするのもにょもにょする
いまある一番オススメなIDEはなんですか?
使ったことないからまともに動くかどうかは知らないけど 使ったことがないからこそまともに動く可能性があるかもと思えるのはD-IDE
今後C言語の置き換えが起こるとしたら、D言語で間違いないですか もっと大きなパラダイムシフトが起こるまでそんなことないですか
Cの代替になる言語は一つも無いんじゃね? Cはコンパイル言語じゃなくて高級アセンブラだからなー ただ、C++の代替にならなる可能性は…やっぱり無いか…
代替じゃなくてDでしか作れないようなものがないと無理なんだろうね
GC回りが整備されたら純粋なbetter Cの一角に名乗り出る資格はあると思うけどね C++とかC#とかで書いてて思ったのは、 やはり関数の扱いがちゃんと関数で安心できることとか、 構造体型を返り値にするときの挙動の予測しやすさとかはいい点だと感じる
言語仕様はC++の後継と言っていいと思うけど、現状、利用者が少ないからなー。 コンパイラにバグが残ってたり、ライブラリが未完成だったり、言語仕様がコロコロ変わったりするし、 そのせいもあってかIDEもまともなのがないし、ネット上の情報量も少なくて敷居が高いよね。 登場から11年経つけどこれから流行るかな・・・?
標準ライブラリが整備されてなくてちょっと試せないのが厳しい(Tangoは最新バージョンで使えないしPhobosはネットワークとか死んでる) あとやっぱりRubyのgemみたいなのが標準で欲しいかな
言語仕様が固まってなくて文法がメジャーバージョンアップでもないのに 後方互換性がなく変わる状態じゃライブラリも周辺ツールも整備できねーよな
だからD2はアルファ版だと…
D1なら安定している そんな風に思っていた時期が、俺にもありました
仕様が固定したらライブラリ開発もやる気になるけど 現状ではとてもじゃないがやる気にならない
だが待って欲しい。仕様を固定して進歩をやめたD言語に魅力などあるだろうか。
進むも地獄とどまるも地獄
進む地獄こそ選ぶ道
こんなに苦しいのなら、悲しいのなら………Dなどやっぱ要る
D言語に敵がいない、という事に最近気づいた
無害、それ故に無敵
<del>無害</del><ins>ほとんど無害</ins>
「D言語」ってのが中二系小説で出てきそうな魔界の言語的なイメージなんだよ
そんな発想が出てくるのは若さ故だな。
クッ、奴ら、D言語で会話してやがる・・・ッ!
┣¨┣¨┣¨┣¨┣¨┣¨┣¨┣¨
Demon's Language Version D 2.043 Apr 6, 2010 New/Changed Features .init property for static arrays is now an array literal Improved speed of associative arrays std.bigint has been completely replaced with a faster implementation. Multiplication is now 5 times faster, division is 300 times faster, and squaring is 10 times faster. For large numbers (~5000 words), the speedup is 5 times larger than this. Bugs Fixed Fixed memory corruption problem with array appends ・・・ Bigint! 動的配列appendのバグが直ったー ハッハー
342 :
デフォルトの名無しさん :2010/04/10(土) 01:43:48
!!! 300 times !!!
しかしD言語はいくら努力してもいつまでも日陰者のままなのであった・・・
むしろ努力すればするほど……
phobosとtangoをくっつけたら結構いけるはずなんだよ…
で、最近は仕様固まってんの?
しようがないのが仕様
それならしょうがない
349 :
デフォルトの名無しさん :2010/04/10(土) 09:30:16
しようゆうこと
safeDの範囲ならもう大体決まってるんじゃない?バグは多いけど。 javaやC#ライクに書けるネイティブコンパイラとしては、確かに敵がいない ただ、そこから一歩踏み込んだ先は広大なカオス領域。 そして、Dユーザは必ずそこに向かう。
safeという建前のmixinの黒魔術っぷりとか割と目も当てられない気が
mixinなんて使い出す人は、設計能力が足りないんだと思う
D言語なんて使い出す人は、設計能力が足りないんだと思う
D言語なんて使い出す人は、現状認識能力が足りないんだと思う
どうみても、役には立たないな。 理論とは適当に折り合いをつけてプログラムしろぐらいの意味しかないだろ。
忌み嫌われる手法、黒魔術 それを許容するのも、Demon's Lang(略)
まだでかいproduct作る気にはならない(作ろうとすると必ず後悔する)けど、 Rubyでやるような内容で計算コストがかかる時とか大規模行列計算のない数値実験には重宝している。 実際速いよねDMD
言語仕様の変更を受けにくいコーディングスタイルを誰か確立してくれ詳しい人 鉄板の保守的な機能のみ使うガイドラインというか アプリ作る時と遊びたい時を分けたいんだよね
大規模プログラムでOPTLINKが妙なエラーを吐く件は修正されたんだっけ?
>>358 例えば俺はあるプログラムでBigIntを何年か安心して使ってたんだが
2.043でコンパイルしたらそこでエラーを吐いたので修正が必要になった
そういう事態を避けるにはphobosを避けるしかないな!
いや、Dを避けるしかない
まあ待て、std.c.*とCの文だけ使ってれば大丈夫だろ
それって
constがどうとかエラーになるな
Goと得意分野が被りそう
・D固有のライブラリは避ける ・constやinvariantも避ける ・portingされたライブラリは言語側の仕様変更で使えなくなるので避ける ・templateはいきなりmixinキーワードが必須になったりするので避ける ・GCやスレッドには触らない ・classはたまにトラブルが起きるので避ける ・動的配列はたまにエラーの発生源になるので避ける ・あるはずの変数が消えてたりするのでクロージャは避ける ・invariant {}で無限再帰になってりするので契約を避ける
……素のCでよくね?
20位以内に見当たらないから絶望してたら25位かよ すげぇな そしてGoにはすでに10も差をつけられている
obj-c > iphone効果か
髭の長さとの相関関係を誰か出してください。
全体的に濃い顔だから、流れでまつもとゆきひろの顔が妙に面白く見える
struct MyKey { char[] a, b; this(in char[] a, in char[] b) { this.a = a.dup; this.b = b.dup; } } int[MyKey] arr; arr[MyKey("hoge", "fuga")] = 0; auto foo = arr[MyKey("hoge", "fuga")]; // ここで実行時にRange violation toHashもopEqualsもopCmpもデフォのままなのが原因だとは思うのですが、デフォの挙動は一体どういう物なのでしょうか?
writeln(MyKey("hoge", "fuga") == MyKey("hoge", "fuga") ? "equal" : "not equal"); ってことじゃないの?
>>375 ありです。
同値性ではなく同一性ということですか。
==での比較とisでの比較とあるなら、==のデフォは同値性にして欲しかったなぁ。
377 :
376 :2010/04/14(水) 19:30:22
あれ?しかし、MyKeyにopEqualsとopCmpを定義しても連想配列にアクセス時のエラーが直らないです。 ==での比較はできるようになったのになぜ? const bool opEquals(ref const MyKey rhs){ return cmp(this.a, rhs.a) == 0 && cmp(this.b, rhs.b) == 0; } const int opCmp(ref const MyKey rhs){ auto result = cmp(this.a, rhs.a); if (result != 0){return result;} else{return cmp(this.b, rhs.b);} }
378 :
375 :2010/04/14(水) 19:43:01
381 :
デフォルトの名無しさん :2010/04/15(木) 21:20:25
>>379 関係ないけど .get(Key key, lazy Value defaultValue) なんてあったのか。
.get(Key key, lazy Value defaultValue = Value.init) にしてほしい。
byKey()とかいつの間に…
.clear()はいつになったらつくんだ
384 :
デフォルトの名無しさん :2010/04/17(土) 21:40:08
>デシマルでうれしいのは2進<->10進変換での変換誤差が出ないことであって、 >(0.1*10 =1.0 が保障される) いやそれ2進<->10進変換での変換誤差じゃないからw
0.1*10=1.0にならないのは小数点の位置を2のn乗で表現するからであって 指数部/仮数部のエンコーディングが2進だろうと10進だろうと関係無いって話でしょ?
>>389 何を言ってるんだこれ?
ならば何のために decimal の必要性があるのか説明してよ。
デシマルで1/10は表現できるだろう。じゃあ1/3は? 結局そういうことをしないといけない場合は 有理数クラスとかを作って対応するべきだよ
整数でカウンタを扱って、都度10で割って使えばいいよ
>>390 0.1が表現できないのは、小数点の位置を1, 0.5, 0.25...と浮動させるからであって
2進数10進数関係無いという話だよ。
10進の必要性なんか実装次第だろ。BCDなんかダンプ見て人間がわかりやすいのが目的だしな。
少なくとも「IEEE754の」decimalの必要性は10進数だからではなくて、1, 0.1, 0.01...と浮動するからだろ。
>>390 は何かを勘違いしてるんだろう
まあ、
>>389 の説明も分かりにくい気がするけど
仮数部×10の指数部で表現してありさえすれば、
仮数部と指数部を2進数で表現していても
0.1*10=1.0 になるよ、と言えばいい
(仮数部)×10の(指数部)乗 で表現してありさえすれば だった
で、それが、2進数と10進数の変換誤差ではないという説明になるんですか?
そりゃさー、最初から10倍の値入れておけば1/10の値は安全だってのはその通りなんだが、 それは詭弁だろー。 指数がでかい場合にハードウェア的にどう演算するつもりなんだ?
実際の演算では、2進と10進との変換誤差を「有効桁数」でごまかしているんだよ。 この有効桁数の間であれば「1つの値」は確かに正しく変換できるんだ。 だけど、有効桁数より小さい値に誤差が含まれていて、 これが計算していくと累積するんだよ。 1/3 の話はもうちょっと違う話だから分けて話をしてくれ。
1/3だって、表現形式が仮数*3^指数だったら、誤差無く表現できるよ。 ちなみに誤差無く表現できる値同士を計算して結果も誤差無く表現できる値であれば 誤差は累積しないぞ。 やっぱりなんか勘違いしてるな。
2進整数 + 10進指数なら誤差は出ないよ ってのは、 10進小数を2進小数に変換するときに誤差が出るという事実があって、 それの回避策だろ? で、最初にケチ付けた奴は「それは変換誤差じゃない」と言ってるのだから その説明がほしいんだよ。
>>399 2進浮動小数点数で計算した場合の話をしているんだが、
何を自分勝手な理屈並べているんだ?
2つの表現形式の話が混ざり合ってわやくちゃになってる気がする よーしパパPIを正確に表現する事に挑戦しちゃうぞー
そりゃ有理数クラス作ったり指数いじったりすれば誤差なく表現可能だよ。 そんなの分かり切っている。 だけど、2進浮動小数点数で動いているのが現在の多くのハードウェアだろ? わけわかんないわ。
まあ10進じゃないと銀行が困るという話だからねえ それ以外にもそういう場面はまあいくつかあるのではあるが
銀行が困るのは浮動小数点演算であって2進演算ではない
>>400-401 何が分かってないのか李恢した。
まず、何進数で表そうが整数は整数で誤差なんか全くない。オーバーフローしない限り。
これはOKだよな。
次に、浮動小数点実数というのは、実数を仮数部×n^指数部のふたつの整数で表現する形式。
これもOKだよな。
では0.1を通常の「2進」浮動小数点数で誤差なく表現できない理由はなにか。
0.1を仮数部×「2」^指数部で表したときに仮数部が循環小数になってしまい
有限桁ではそのまま表現できないからだ。
これもOKだよな。
で、この指数部分「2」は2進数の2とは関係無い数字だ。
お前が三国志好きということは理解した
IEEE754ではたまたま2進形式では基数も2、10進形式では基数も10で揃えているが これらは独立したパラメータなので当然別の組み合わせも考えられる。 で、2進・基数10なら0.1も表現できるし、10進・基数2なら0.1はやっぱり誤差が出る。 要するに一般的に浮動小数点実数の誤差と言われているものはn進変換の誤差では無くて、 実数を仮数部と指数部に分割したときの仮数部の丸め誤差だ。 OK?
>>406 おいおい、で、ハードウェア的にその2進整数+10^n方式をいったいどうやって実装するんだよ…
VHDLで書いて見やがれ。
で、現実問題として実運用されている2進浮動小数点方式(2進数+2^n 方式)で
0.1に変換誤差が出ることは同意なんだな?
それは変換誤差ではないというならそれは何なのかと聞いているんだ。
>>409 x それは変換誤差ではない
o それは変換誤差とは言わない
あー結局丸め誤差という結論なのか。 仮数部の丸め誤差を変換誤差と呼んではいけない理由がわからん。 正式な用語ではなかったかもしれんが、それケチ付けることなんか?
>>409 単にdecimal64だかdecimal128だかから、変な圧縮10進エンコードを省くだけだろ……。
VHDLで書けというなら書いてもいいが、見積りと報酬はちゃんと寄越せよ。
VerilogじゃなくてVHDLの名前を出すあたりマニアックだなw
>>412 2進数の10進シフトをどう実装するつもりなのか興味あります。
>>413 おいおい、n*10をn*8+n*2にするのは最適化の初歩だぜ。
D
言っておくが、decimal は仮数部は2進整数じゃねーぞ。10進のディジットをもってるんだよ。 ビットで表現されているかもしれないが 結局のところ a * 10^n + b * 10^(n-1) とかで格納されているんだ。 だから10進シフト演算も簡単にできるんだよ。 decimal じゃなくて、ちゃんと2進整数でなんとかしやがれよ?
>>416 >>414 を読んだ後にそれを書いているとしたら頭を疑うな。
ちなみにdecimalは10ビットで10進3桁を表現する圧縮がかかっているので
1000倍は楽だが10倍とかはちょっとややこしいと思う。
繰り返すが2進数を10倍するのは8倍+2倍でいいからね。
で、実際のところ、できないことはないだろうが、そんな器用なハードウェア作るより、
10進のまま扱う方が楽なんだよな。
だから decimal みたいな折衷案が出てきてるんだろ?
単に言葉に突っ込んだだけなら、
>>388 で結論出てる。
というわけでおしまいだ。
あぁ、ちょうど書き込んだらそれ見えたんだ。だから右シフトのみ限定で聞いている。
伸びてると思ったら・・・ きょうの被害担当艦か
422 :
デフォルトの名無しさん :2010/04/18(日) 14:31:49
器用なハードウェアって、IBMがPOWERで既に実装してるし AMDは今度出す奴に実装してくる。インテルがmathライブラリ を提供してるけども、実装するのかどうかは分からない。 インテルしねって感じ。
423 :
デフォルトの名無しさん :2010/04/18(日) 14:38:47
後、C言語やC++の言語委員会で、日本のメーカーが 10進演算に関して反対してたとか聞いた。 死ねばいいのにって思う。
いや、だから、POWER で実装してるのは decimal であって、 2進 + 10^n とかいう奇怪な実装じゃないっしょ?
425 :
デフォルトの名無しさん :2010/04/18(日) 14:44:38
2010年の技術水準を基準に語られても・・・
>>425 だからさー、仮数部は「2進数」じゃないんだよそれ。
「10進数」を形変えて入れてるの。
だから、POWERの実装はとても回路は素直で優しいんだよ。
奇怪だと言っているのは「2進数*10^n」の話なんだよ。
428 :
デフォルトの名無しさん :2010/04/18(日) 14:52:12
>>427 だからIEEEのデシマルは、Densely packed decimalだって言ってるんだろうがー
何言ってるの?おまえ字読める?お前自分が奇怪な事言って、奇怪とかいうな
ちゅうの。
だれか、数学できる人連れてきてー
430 :
デフォルトの名無しさん :2010/04/18(日) 14:55:05
あーとなんかわけわからんくなってきた。 10進を貶す奴は馬鹿でくず、存在価値無し、 ビッグイントより、数値計算は浮動小数10進に移行するべき。 イントはアドレスの計算とループカウンターという役割に限定すべき。 インテルの屑野郎早くハードウェア実装しろ。 以上だと思う。
>>428 >10進数を圧縮格納するDensely Packed Decimal形式
>しかし、そのままの形式では演算はできないので、
>演算前にBCD形式に戻し、演算後、結果をDPD形式に戻す必要がある。
元記事のこの文読めないんだな。
432 :
デフォルトの名無しさん :2010/04/18(日) 15:05:10
>>431 命令デコードのついでに出来るので、ワンクロックなんだよ。
誰かCOBOLer連れてきてー
>>432 うん、それはその通り。とても素直なハードウェアが作れるよね。
でも、「2進数整数 * 10^n じゃないよね」って話を何度もしているんだけど、
なんかわかってもらえないんだ。
中身は結局BCDなのにさ。
435 :
デフォルトの名無しさん :2010/04/18(日) 15:10:55
>>433 呼んだ?
>>434 馬鹿者ねーの中身がBCDだろうがなんだろうが10進演算こそ正義なんだよ。
まずは正義なんだよ。お前が言ってるのは無意味かつナンセンス。
あり得ない事を自分で書いて、あり得ないよねって言ってるんだよ。
釣られた俺が悪いんだけど、10進演算が正義だと言うことを知らない、
悪魔がやたらめったらいるから悪いんだよ、悪魔はしねっていうんだよ。
いや、俺は10進演算欲しい派よ? そうじゃなくて、10進小数から2進小数に変換した時に誤差が出るから 「変換誤差」って書いたら なんか「丸め誤差」と言い直させないと気が済まない人が出てきて、 2進整数*10^n なら誤差が出ないとか訳わかんない説明しだしたから そんなアホなハードウェア作れんだろjk と言っただけの話。
437 :
デフォルトの名無しさん :2010/04/18(日) 15:21:54
>>436 >>430 でその間違いに気がつき始めたけど、認めるのが恥ずかしいから
馬鹿だのアホだの書いて誤魔化してるのに、そうやって指摘するのは、
多分、優しさが足りないんだと思うんだよね。
そもそも、日本の言語関係者に、10進数を疎かにする奴が多いのが悪いんだし。
そういう悪魔が多いから、俺がトチ狂ったのは正しい行為だと強弁してみる。
だいたい、10進数の話になると訳分かってない奴が、訳の分からんこと言って
うやむやにするんだよ。酷いんだよ、何時も、何時も、IBMとかIEEEが
規格にしたら、いやいや、俺だって必要だとは思ってたよとか言い出すンだよ。
おかしいよねみんな、なんか変なんだよ。異常。
落ち着け。お前は悪くないんだ。落ち着け
TVによる洗脳と、ネットの匿名文化で この国はおかしくなった
四の五の言わず、自分で書いてウォルター納得させたらいい。
ここまで読み飛ばした
ゴール決めずに走り出してはいけませんって 小学校で教えればこんなことにはならなかったのに とりあえず走れ教育を施されてしまった 我々は愚かな為政者の犠牲になったのだ…
ここまで俺の自演
0120-444-
無関係のスレで以下のようなレスを見て何のことかと思ってしまった 782 :名無しさん@十周年 :sage :2010/04/19(月) 17:38:30 まあDMCの生みの親がDな訳だし
446 :
デフォルトの名無しさん :2010/04/19(月) 21:35:36
Thread.pauseとThread.resumeが無いのは誰が許したんですか?
レイプレイプレイプレイプレイプレイプレイプレイプレイプレイプ
std.complexがー
import std.date; void main() { std.stdio.writeln(toString(getUTCtime)); std.stdio.writeln(toString(UTCtoLocalTime(getUTCtime))); } Fri Apr 23 10:57:03 GMT+0000 2010 Fri Apr 23 10:57:03 GMT+0000 2010 import std.datebase; import std.date; void main() { std.stdio.writeln(toString(getUTCtime)); std.stdio.writeln(toString(UTCtoLocalTime(getUTCtime))); } Fri Apr 23 19:56:53 GMT+0900 2010 Sat Apr 24 04:56:53 GMT+0900 2010 !? そんな些細なことはどうでもいいけどphobosはいつになったらまともな日付フォーマット関数が入るの?
言語の仕様が固まれば作る奴現れるんじゃね
文句を言う前に自分で作って提供するのがいいんでね?
そしてバージョンアップで使えなくなるのであった
454 :
デフォルトの名無しさん :2010/04/23(金) 20:27:51
誰か、llvmのドキュメントを翻訳してくださいな。 パーサーから、中間言語までを翻訳してくれれば D言語だけじゃなく、色んな人が幸せになれると 思う。特に俺なんか喜ぶ。俺のために翻訳してくれた って感謝する。
翻訳するために原文を読むと、その本人にはもう翻訳が必要無くなるという 翻訳者のジレンマがあるからな
成果を売れば金になるじゃん 金にならないものを翻訳するなってことだ
llvmの読者数考えると厳しいな。 この前発売されたGC本くらいには売れるんだろうか?
d_timeとかTimeとかDateとかの相互変換はstd.conv.toに統合するのがいいのかねぇ 今見てもtoにはやりすぎ感が
EUC-JPからUTF-8へのエンコードって標準にはやっぱりないですよね?
どこぞにjcodeの移植が無かったっけ?
最新版に対応させたらupして
wikiにね
文字列mixinで作った関数とかってもしかしてDdocつけれない?
色々やってみたけどつけれなかった
467 :
デフォルトの名無しさん :2010/04/29(木) 18:26:08
bugzillaには既に登録されている 属性ともどもDDocはかなりの改修が必要な気がする
468 :
465 :2010/04/29(木) 20:23:25
今出来なくても将来できる事もあるから ちょっと間空けると訳分からなくなってるわあ
470 :
462 :2010/04/29(木) 23:15:59
WindowsでGUIライブラリぽいの書いてるんだけど 誰か進んで人柱になってくれる変態はいる?
475 :
473 :2010/05/02(日) 23:25:54
おい文字コード化けてんぞ
477 :
473 :2010/05/03(月) 12:32:18
どれの?
削除ガイドライン違反 8. URL表記・リンク 宣伝・罠・実行リンク ・明らかに宣伝を目的としたリンク・クリックや訪問で課金が発生するもの等は、宣伝掲示板以外では削除します。
久々にガイドライン見たけど宣伝の定義がどこにも無いな
hを削っている以上は、ただの文字列だと思うけどな あっ作者じゃないよちなみに。
h抜きってそういう意味だったんだ。 h抜かないとリファラ取られるのが云々言われてなんでそんなん気にしてんだろって思ってた。
いや h付けたURLは1スレあたりの数に制限があるので それを回避してるだけだと思ったが
h 付けるとクッションサイトに飛ぶから
>>481 の言うリファラ云々はそもそも関係ない
どっちかっつーと ime.nu に負担掛けたくないだけだろうと
気分の問題でなくサーバーへの負担軽減や制限を回避するためなわけですね。
おまじないじゃなくて理由があるコードなのに 伝承されていくうちにおまじないになっていくのと似てるな
明かに宣伝だと思うなら黙って通報すりゃいいものを 一体何がしたいんだろ
スレのテーマに沿っててアフィも無いのに宣伝とか
・人のやることにケチつけてストレス発散 ・自分ではできないことをやられて悔しいのでとりあえず貶す ・削除ガイドラインの内容覚えたてで使いたくてたまらない ・スレの雰囲気を悪くすることによる遠回しなアンチ ネガティブな理由しか思いつかん。
Dに恨みのある者の犯行 え?恨み買うほど普及してない?
2.044きたか
Update DFL to DMD 1.059 and DMD 2.044
!?
2.045
Version D 2.045 May 2, 2010 New/Changed Features Bugs Fixed 何も書いてない。これから書くのかな?
また何か致命的なバグがあったんかな? 変数の初期化がDEADBEEFになってるとか
大きさ
あっ、書けた。 D言語の勉強始めてて素朴な疑問なんだけど、 C/C++でビルドするより実行ファイルが大きい傾向があるような気がする。 (Windowsの場合、Hello worldで230kb、DFL使った簡単なGUIアプリで700kb) これはgcとか入ってるから仕方ないって考えるべきなのかな。 まあdmdのオプションは特にチューニングしてないから、その辺で変わるのかもしれないけど。
200KB分はGCだねぇ
200kBはそのうち誤差になる
GC使わないならGC削除する最適化くらいしてくれてもいいのに OS作りたいとかいう時に絶対邪魔になる、というか、 OS作る用途ではGCなんて使えないだろうし
DでOSを作る? それは、OOoをasmで作る、と同義だと思う。
DOSか
dusers.dip.jpに繋がらん
>503 今は繋がる。
DFLはよくできてるけど、実用で使おうとしたらいずれWindows.Formsと同じ限界に達する。 そこでXMLで構造化することにより宣言的にGUIを設計できるようにすると便利だとおもうんだが、どうだろう。 現在、XAMLとXULを勉強中。
Windows.Formsの限界って何?
>>506 ・GUIのデザインが直接コード化されるため、コードとデザインが分離していない
・単体では国際化に対応していない
・(Foms単体の問題ではないが)Visual Studioによるデザイナーで定義できないデザインが結構ある
wxとかQtだとその辺どうなんだっけ?
どっちもXMLで分離可能 サブクラス作ってカスタマイズして それを登録してXMLで使うことも可能
510 :
505 :2010/05/09(日) 00:55:44
>>509 GTK+においてはGlade/GladeXML、QtにおいてはQt Designer/ui ファイルということでいいのかな。
どちらもXMLの書式のリファレンスがすぐには見つからなかった。
XAMLとXULでは後者のほうが概念の直交性が優れてるけど、
Tk並みのウィジェット自動生成エンジンを用意しないといけないので、
お手軽にでっち上げようとするには荷が重いな。
(その代わり、アプリの開発側はウィジェットの座標決めをほとんどやらなくていいから楽だが)
さしあたりXAMLを簡略化した実装を作ってみて、フォーラムに投げてみようかしら。
こういうの誰か統一してこんないかなぁ
512 :
505 :2010/05/09(日) 01:58:23
D3マダー?
そんなことより、出たばかりのVisual Dだ。 こいつを盛り上げていこうぜ! コード補完やソースブラウズ機能をつければ、鬼に金棒だ!
わりとよさげ。Descentはeclipse自体が使い慣れないせいでどうもなー。 更新追ってく楽しみもあるし、sakura+mingw32-makeでかりかりやってたけどこっち使ってみようかな。 とりあえずVC++と違ってデバッグなしで開始してもコンソールが止まってくれないのが(どうでもいいが)ちょっと不満。
デフォでUTF-8じゃないのがめんどくさいんだけど、これはVisualDの側じゃどうにかならんのかな。
>>517 Visual StudioはUTF-8/cp932をそれぞれ正しく読み込んで保存できるけど、
DコンパイラはUTF-8じゃないとだめだもんな。
確かに、新規作成してそのまま保存するとcp932になるようだ。
[ファイル]-[保存オプションの詳細設定]
から変更かけられるけど、毎回やるのは……。
Visual Dのソースを弄ったら直るだろうか?
VisualDはVisualStudio2010からも使えるのか?
>>517 Ascii圏の人が作ってるから気がつかないだけで単純なバグなんじゃないかなあ
521 :
デフォルトの名無しさん :2010/05/10(月) 20:13:38
D3はいいから、64bit版dmdラインアップしてほしい
XMLを解析して独自形式(テキスト)で吐き出したいんだが、 XML読み込みとテンプレートエンジンは何を使ったらいい?
読み込みはstd.xmlでいいんじゃね テンプレートエンジンは…まあ頑張れ
525 :
デフォルトの名無しさん :2010/05/11(火) 01:47:24
std.xmlはコメントのパースに失敗するから注意が必要(2.045)
dsource.orgが落ちてるなー
ロスじゃ日常茶飯事だぜ
ちょっと調べてみたけど、 D言語で使い物になるテンプレートエンジンはないっぽい? 日本語圏で2件ほどあるけど、1件は仕様が不明。1件はソースコードが公開されてないっぽい。 海外ではヒットしなかった。(というかD言語関係は検索が難しい) しょうがないので、簡単なものを自作してみる予定。 仕様はERB的なもので、テンプレートを置換してDソースを出力させ、 アプリ本体と一緒にコンパイルしてしまう仕様。
Dとか検索しにくさが異常だよな CとかC++くらいメジャーになるとそうでもなくなるんだけど
C++でもC#のページが出てきてイライラすることが度々ある C#はさっさと名前変えやがれ
C畳とか?
C丼
533 :
528 :2010/05/13(木) 09:45:05
とりあえず試作してみたが、テンプレートの出力がDのソースコードになる関係上、 出力結果がどうなるか制御してあげないといけないな。 そこで結局出力先のDソース自体がテンプレート構造になり……。 というのが現状。 もうちょっとマシにならないか考えているところ。
dsource落ちすぎ
活発度表示して欲しい
そんなことしたら軒並みお通夜状態だってバレるからだめです
Xをstaticにしたら?
539 :
537 :2010/05/15(土) 02:44:23
dmd 1.061 and 2.046 release
QtDの中の人が出してたパッチはどうなったんだ? >Bugzilla 1001: print stack trace (in debug mode) when program die まままマジかガクガク
yaneSDK4Dもうdmd1系でもコンパイル通らないんだな
あれあったの0時代だろ
0.001xとかだよな
Winで'/'区切りのパスを使ったときにstd.path.basenameがちゃんと動かないんだけどこれいつからだろ? 以前は問題なかったような気がするんだよな
D言語のircチャンネルで、 D2はstableじゃないけどD1と互換性のないところも多々あるんだから、 そろそろこっちでコード書いた方がいいんじゃない? って聞いてみたら、 >That's a bit like saying "only a few people use perl6? almost all people still use perl5" (それはほとんどだれもperl6を使ってないんじゃない? ほとんどすべての人がまだperl5を使ってる、というのと似ている) と答えられてしまった。 まだD1使うべきなのか……。
仕様変更に合わせて毎回コードを総書き直しするくらいじゃなければ男ではない
>>547 一直線に良くなっていくならいいんだけどね。
前に使えた機能がバグって使えなくなったりとかが重なると泣きそうになる。
アポーが買い取ってアホンの主開発言語になる夢をみた
凄い勢いで囲い込まれるからやめてくれ
どこに買い取られるのが一番幸せになれるんだろうか
IBM
よしSunに売り込もうぜ
こんだけ仕様が不安定なイメージが染み付いた言語を誰が買ってくれるというのか
それなら民主党に売り込もうぜ
「途上国」の温暖化対策を支援するために12年までに官民合わせて1兆7500億円を拠出
http://www.asahi.com/politics/update/0522/TKY201005220233.html 黄砂対策で連携強化、日中環境相合意 中国へ資金協力も 2010年5月22日21時26分
小沢鋭仁環境相と中国の周生賢・環境保護部長は22日、北海道千歳市で会談し、春先に中国大陸から飛来する黄砂対策で
連携を強めることを確認した。環境省によると、中国の環境相に当たる周部長は、日本、中国、韓国の3カ国で黄砂の発生を
抑制する対策を話し合う作業部会を、年内に中国で開くと表明。小沢環境相は、中国の黄砂対策への資金協力に前向きな姿勢を示した。
3カ国は2006年、黄砂対策を進めることで合意。飛来状況のモニタリング(監視)と、発生抑制策の二つの課題で
共同研究を進めている。発生抑制策については、08年に1回目の作業部会が開かれたが、09年の2回目に中国が欠席、
議論が進んでいなかった。この日、周部長は会談で「隣国に迷惑はかけない」と話したという。
これに対し、小沢環境相は、途上国の温暖化対策を支援するために12年までに官民合わせて1兆7500億円を拠出する
「鳩山イニシアチブ」の一環として、資金協力する姿勢を見せた。
黄砂は洗濯物や車を汚すだけでなく、アレルギーなどの症状を悪化させる可能性が指摘されている。
?
キーワードに反応するスクリプトじゃね
では再現性のテスト それなら民主党に売り込もうぜ
やめろww
わろた。 あのスクリプトに民なんとかと入ってないかなと思ったが見当たらなかった。
564 :
デフォルトの名無しさん :2010/05/25(火) 21:23:27
D言語を勉強しようと思うがどうやって勉強した方がいいか教えてくれ
1. Cを勉強する 2. C++を勉強する 3. 投げ出す 4. ↓後は任せた
>>564 まずC++を勉強する。で、嫌になる。
D言語のスタートはそこからだ、頑張れ。
C++に不満を持つことから始めないとな
D本家の言語仕様を読めばいい
C/C++のコンパイル速度に嫌気がさせば使ってもよい
C/C++のコンパイル速度に嫌気がさしたのでDelphiを使いました
C言語を勉強する。 オブジェクト指向に目覚めるが、Cでは継承がまともにできないことに気がつく。 C++言語を勉強する。 メモリ管理と多重継承と名前空間で死ぬ。 とここまでやったらD言語をやるといいな。
>> 571 それ俺だ……
そして ・破壊的変更 ・ライブラリのポーティング ・メモリ周りはGCあるとむしろ面倒なことも多い(shared_ptrのほうがいいじゃん! あたりが原因でC++に戻ってくるけど、 cppとhを両方書くこととかコンパイル速度あたりに、もはや自分が耐えられない身体になっていることに気づく。 一縷の望みをかけて.netに浮気をするが、結局『ネイティブコンパイル』という言葉のミリキに抗えない。 で、この辺りまでこぎ着けて、再びDスレを覗いてみて、判定に成功すればDに永住フラグが立つ。 判定基準はGUIライブラリがタイミングよく更新してるとか、IDEがちょっと使えるようになってるとか、そんなん。
実に的確だなあ まさにそんな感じだ俺は
DWTが死んでるんだか生きてるんだかわからないうちはDを使い続けるかな
C#は配列周りやデリゲート周りが(Dと比べて)かなり不便なのがいかんとも。
>>577 List<element> を使う。もうひとつの配列型。デリゲートの代わりにラムダ式を使う。デリゲートの本気モード。
List<double> array; array = new List<double>(); array.Add(1); real[] array; array ~= 1; 変わんないっちゃ変わんないのではあるが。 あと固定長配列が配列長込みの型にならんのも意外と不便。 拡張メソッドに相当する機能は(配列対象に限定せず)欲しいなあと思った。
>>579 C#側の初期化コードは初期化子を使えばもっと短くなるけど、スレ違いなのでやめておく。
>>あと固定長配列が配列長込みの型にならんのも意外と不便。
そうか? そういう情報は変数側に持たせるべきだと思うんだが。
C/C++では型として厳密に区別されているにも関わらず実用上としてはほぼ同じ構文、形態で使用するので
コンパイルエラーが発生した時の対処が難しいと思う。
(特に他人のライブラリを初めて使い始めた時とか)
だからWin32などでは固定長配列は全てstructのメンバとして持たせる実装になっている。
C++の黒魔術っぷりとエラーメッセージのわけのわからなさは凄いよな その点Dは分かりやすくていい 全然関係ないけどいつの間にか__traits(getMember)なんてのが出来てたので これ使えばある構造体やクラスの中のすべてのフィールドを列挙することとかできるんじゃね?と思ってやってみた import std.stdio; import std.traits; void printAllMembers(T)(in T t) { foreach (mem; __traits(allMembers, T)) static if (__traits(compiles, {void a(in typeof(__traits(getMember, t, mem)) t) {} a(__traits(getMember, t, mem));})) writeln(Unqual!(typeof(__traits(getMember, t, mem))).stringof, " ", mem, " = ", __traits(getMember, t, mem)); } class C { int a = 1; string b = "2"; real c = 3.0; } void main() { printAllMembers(new C); } int a = 1 string b = 2 real c = 3 5行くらいで書けたwwwwwD最強杉wwwww
その手の機能が魅力的なのは認めるが120桁くらい書いといて「5行くらいで書けた」は認めない
@encode() class_copyIvarList()
標準出力にバイナリを書くにはどうすればいいですか? どうやっても改行コードが勝手に書き換えられてしまいます dmd 2.043
586 :
584 :2010/05/27(木) 16:00:12
>>585 だめでした
どうやらWindowsだけのようなのでWindowsだけ直接APIを呼ぶことにします
ありがとうございました
>>586 ちょっと待った
これでどう?
import std.stdio;
import std.c.stdio : __fhnd_info, FHND_TEXT;
extern(C) int fileno(FILE*);
void main() {
__fhnd_info[stdout.getFP()._file] &= ~FHND_TEXT;
stdout.rawWrite("1\n2\n");
}
588 :
584 :2010/05/27(木) 22:32:57
>>587 出来ました!
こんな方法があったんですね
ありがとうございました
これバグじゃねえの
>>589 プログラム自身からは出力先をテキストモードにすべきかバイナリモードにすべきか区別出来ないので
とりあえずテキストモードにしてるってことなんだろう。
どうせUnixじゃあ関係ない話だし。
特に使い易くも無い上にややこしいC言語のstdioを更にラップしてるのが間違いと言いたくなるが 独自にI/Oランタイムを作るとC言語との連携で支障出るしなあ……。 ほんとにC言語は呪いやで。
>>591 いやまさに。
C++最高ー! とか言ってる奴らがとても信じられない思いだ。
オレは大半のプログラムは軽量言語や.NET系で書いていて、
C/C++を使うのはそれで書かれたライブラリを使えるようにするために仕方なく、
という形で最後の手段にしているのに。
D言語は使えるかどうかまだ勉強中。
C++は大好きですがstdioとiostreamは大嫌いです
>>590 rawWriteなんだからバイナリモードにするべきじゃないのかと思ったんだけど違うのか。
>>591 最近はLLとかでも言語独自のI/Oを用意しだしてるよね
I/Oってなんですか?
面接官の前で唱えると幸せになれるぞ。
プロトタイプベースのプログラミング言語
爆裂系呪文の最下位
日本で最初のパーソナルコンピュータ情報誌 って、ググったらまだ発行してんのね。ある意味すげーわ。
DFLが5月から毎月定期リリースされる そんな夢を見たんだ
久しぶりにまた弄ろうと思ったんですが、2系の方が1系よりも便利って感じな事ありますか? 前弄ったときなんかあったような気がしたんだけど、なんだったか忘れちまった。
・foreach(i; 0 .. 10)とかできる ・推移的constを使える ・phobosが超強化 ・普通のクロージャが使える ・__traits ・更新されるたびにコードを全面修正する歓びを味わえる 推移的constとかは逆に地獄を見る事もあるけど
ところでVisual Dってどんな感じでした?
Dが着飾ったからってスマートになれる訳でもない。
>>605 取り敢えず開発には使えるレベル。
次のリリースでコード補完機能が実装されるみたい。
mixinで切った貼ったとかふざけた構文にも対応してるのかしら
609 :
デフォルトの名無しさん :2010/06/01(火) 20:52:00
どうやってデバッグすりゃええの? なんかSHGetFileInfoっていうAPIだけまともに動かないんですが・・・
Visual Dってどうやってインストールするん?
500で見れないや
>>608 たぶんまだ対応してないと思うけどそんなところにスニペットはオレは使わないから無問題。
>>609 C/C++用の各種デバッガが使える。
>>610 セットアップインストーラーで配布されてるのに何を言ってるんだ君は。
D-IDEの立場について
Theoraみたいなもの
615 :
605 :2010/06/02(水) 01:43:35
>>607 そなのかありがとう
そろそろ趣味でやるのはDに完全移行するかー
616 :
610 :2010/06/02(水) 18:51:40
>>612 すまん、言葉足らで。
セットアップインストーラーを使った後。
VisualStudioを起動して新規プロジェクトの作成する時、
「'ConsoleAPP1.visualdproj'を開けません。このバージョンのアプリケーションではサポートされないプロジェクトの種類(.visualdproj)です。」
ってエラーが出る。
他にもツール→オプション→プロジェクトおよびソリューション→Visual D Setting を選択すると。
「このプロパティページの読み込み中にエラーが発生しました」
以外、何も出ない。
VisualDは最新版と前バージョンを試したが結果は同じだった。
VisualStudioは2008。日本語版。
もしかして、英語版じゃないとVisualDは使えないの?
>>616 それは正しくインストールされてないな。
日本語英語関係ないよ。
>>616 追加。どちらかというと言語じゃなくてVisual Studioのエディションを疑うべきだと思うんだが。
619 :
610 :2010/06/02(水) 21:22:00
>>618 VisualDを一度アンインストールして、再インストールしてもダメだった。
Visual Studioのエディションを疑うべきって、俺のExpressなんだが。
standard か Professional が必要って事?
一度、Expressも再インストールしてみるわ。
>>619 そりゃあはいるわけないわ。当たり前じゃん。
Visual Studio Expressは、Visual Studioではないよ。念のため。
The One With D の人がExpressに入れてた気がした
called with argument types: (wchar*,uint,SHFILEINFOW*,uint,uint) matches both: dwt.internal.win32.WINAPI.SHGetFileInfoW(wchar*,uint,SHFILEINFOW*,uint,uint) and: dwt.internal.win32.WINAPI.SHGetFileInfoW(wchar*,uint,SHFILEINFOW*,uint,uint) これエラーなんですかね?
マッチするも何もまったく同じ関数に見える…
現象を再現する最小コードキボン コンパイラのバグかもしれないし
DWORD SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT); DWORD SHGetFileInfoA(LPCTSTR, DWORD, SHFILEINFOA*, UINT, UINT); version(Win32SansUnicode) { alias SHGetFileInfoA SHGetFileInfo; } else { alias SHGetFileInfoW SHGetFileInfo; } dwt.internal.win32.WINAPIのSHGetFileInfoの箇所をこう書き換えたらちゃんと動きました。 エラー時にどういう風に記述したかは忘れちゃった>< お騒がせしました。
それはつまり、dwtに同じ関数が2つ宣言されていたってことじゃ…… バグ報告してあげたら?
DWTは5月半ばにパッチ投げられても放置してたような でもaliveらしいよ 安心だね
>>630 D言語のIRCチャンネルでdsouceはD言語で書き直せって
冗談で語られるくらいだからサーバー側の問題だよ。
日本からの海底ケーブルの品質がそんなに低いわけないだろ。
コンパイラスイッチ-profileでコンパイルしたexeを実行した時にできるtrace.logですが、 関数名がネームマングリングされていて読みにくいです。 なんとかする方法はないのでしょうか?
こんなこともあろうかとstd.demangleを作っておいた 古代、こいつを使え
>>633 ぴったりの物がphobosにあったんですね。thx
trace.logでもう1つ気になったんですけど、文字化けの部分があるんですよね。
stdioのFileで読み込もうとするとinvalid UTF-8 sequenceが発生して面倒くさいです。
文字化けの原因は何なのでしょうか?
debug(SHOW_MESSAGE_INFO) っていうのをdflで見つけたんですが、これをオンにするにはどうしたらいいんでしょう?
637 :
デフォルトの名無しさん :2010/06/09(水) 18:44:50
>>636 コマンドライン引数で
-debug=SHOW_MESSAGE_INFO
を渡すんだ!
dmdの最新版でDFLを使うと落ちるんだけど誰か直してません?
DFLの中の人が5月にリリースするって言ってたから安心して待て
>>640 へぇー・・・5月にリリース。
来年の5月にですね。わかります。
std.containerが来る… ところでインタフェースを使わずDuck Typingを使うのはいいとして その場合「コンテナのコンテナ」みたいなのはどう表現すればいいんだ? List!(List!(int)) listInList; みたいなの
>>642 そんなかんじゃねえの。
unittest内のコード的だと、
auto listList = SList!(Slist!int);
みたいな。
つーか、dcollectionのphobos入りを否定したんだから、
早めにstd.containerをdcollection同等かそれ以上の機能を実装してもらいたい。
>>643 全部SListならいいんだけど
listInList.add(new ArrayList!int);
listInList.add(new LinkedList!int);
みたいなのをやろうとしてはたと行き詰まったのよ
Variantにつっこむか、適当なインターフェイス噛まして型消去かなあ
>>643 その辺はStevenが協力してやるんじゃないかな
正直な所,考えていたのであればもっと前にstd.containerのAPIとか公開して欲しかった
andreiだから仕方ない
異なる型の配列とかタプルで何とかできないかと思ったが何とかできなかった
import してるファイル内にあるクラスがなぜか Error: identifier ** is not defined と表示されるんですが・・・ importしても認識されない条件があるんでしょうか? ちなみに フルパス **.**.hoge(class hoge)と指定するとエラーが消えます。 例えば import omg.moge.hoge; new hoge() // Error: identifier 'hoge' is not defined new omg.moge.hoge.hoge();//エラーにならない こんな感じです。
>>649 そんなことならないけども
最小のサンプル見せて
>>649 dmd omg.moge.hoge.d は?
652 :
デフォルトのD言語erさん :2010/06/12(土) 20:12:32
名無しは、デフォルトのD言語erさん
ほう
>>651 それはリンクまで行ってからエラー吐くと思う
>>649 のエラーはdmdが吐く奴だった気がする
あれ?でも普通に見つからない場合は"undefined identifier"って言うよなぁ
>>654 >>649 は"undefined"を書き忘れたのかと思ったから、言ってみた。
"identifier"ってエラーは実は見たこと無いんだ。
>>639 オレは逆にDFLのsubversion開発版を使うことでdmd2の最新版で動くようになったぞ。
D1.0使ってます プロパティって+=演算とかに対応してないんですか
まだしてない する予定はあるらしい
あ、1.0なら今後も対応することはないか
660 :
657 :2010/06/13(日) 02:09:50
そうなんですか・・・残念
>>656 あれー?おかしいなあ。
入れ直してみる。
5/16のスナップショットなら2.061では動かないよって明記されてた気がするな
dmd 2.047 update
>>663 D1と混ざってました
生まれてきてすいません
俺の方こそすみませんでした
667 :
649 :2010/06/13(日) 20:12:05
わかりました。 mixinを使用したファイルでもtemplate内で使用される別ファイルで定義されてる関数等は同じようにimportが必要なだけでした。 mixn使えばimportが延々と並ぶの防げるかなーとか考えてたんですが・・・・ 単なる勉強不足でした。
phobosの改訂ということで久々にマニュアルを見直してみたら、 std.range.zipとstd.range.recurrenceはD言語の象徴的機能という感じだな。 std.range.zipあたりは素でこういう機能が欲しかったという感じなので、 なんというか感動的でさえある C++で似たようなことをやるときはインターフェースとなるクラスにはめてからこういう操作やってたが、 型情報保存済みで素で出来るようになるというのが恐ろしい
コンソール非表示でwriteflnで標準出力してると Bad file descriptor例外が出るんですけど何か回避方法は無いんでしょうか。 Poseidonのオプションの[-L/SUBSYSTEM:windows:4]を使っているせいかな? dmdのバージョンは2.039です。
char[]型の変数に文字列を代入し、あとでファイルに書き出してみると中身が破壊(文字化け)されている事があります(代入直後に書き出せば正常)。 同じプログラムを何回も実行すると文字化けする時と正常な時があり、実行時にエラーはでません。 どういった原因が考えられるのでしょうか?
文字コードが混在
std.time復活の兆しがある…のか?
>>671 その変数の中身が他所から書きかえられてるのかなぁ
単純なプログラムなら調べもつくんだろうけど
D1なら文字列もmutableだから元の文字列が書きかえられてるのかも 代入といってもコピーされるわけじゃないから char[] b = "test"; char[] a = b; b[1] = '*'; writefln(a); // t*st
>>672 代入直後なら文字化けしないので、文字コードの問題ではない気がします。
>>674 簡単なテストコード書いても再現しないんですよね。
原因を特定するのが難しいです。
>>675 すみません、ただの代入ではなく
char[] str = "ほげ".dup;
のように複製してます。
そして、strを他の配列にはコピーしてないです。
コンパイラはdmd2.041です。
BufferedFileが渡したものをバッファにコピーしないでそのまま持ってくれるせいで 破棄されたポインタを使おうとしてハマったりとかあったけど、この場合関係なさそうだな 2.041って配列にappendしたものをGCがカウントミスって回収しちゃうバグがあったような GC offにして試してみたらどうだろう
>>677 まさにそれでした!
GC.disable();
としたら、何度やっても文字化けしなくなりました。
どうもありがとうございました。
まったくD2は地獄だぜフゥハハハー
670の人もそうだけどなんでそんな古いバージョン使ってるの? 一つ前とかなら分かるんだけど…
Dで問題が発生したときに疑うべき順番 - DMD - Phobos - ユーザコード
2.041はGCにバグがあって半月もせずに次が出たのに、なんでそんなものを未だに使ってる人がいるのか
>>678 最新版……dmd2.047にアップ。
GC.disable(); しなくても文字化けしない。
Previous Definition Different : _D5tango4text4Text11__T4TextTaZ4Text4Span6__initZ ってエラーがでたんですが、何を追えばいいのかわかりません。 2回定義されてるって感じのエラーだと思うんですが、具体的にコードのどの部分かを知る方法ってないでしょうか?
>>684 Tango……。
あんまりTangoを使うことオススメ出来ないな。
D2 + phobos はGood
>>684 bugzillaによるとそのバグ修正されてるからTangoの環境によるのかなぁ
xfBuildのissue見てるとobjとlibで被っているとかあったけど,どれが原因かは分からんね
687 :
685 :2010/06/16(水) 08:41:40
結論、Tangoは使うな! と思うのは俺だけじゃないはず。
688 :
678 :2010/06/16(水) 10:46:55
>>680 ,682,683
新しいverを入れると既存のコードのコンパイルが通らなくなって、修正するのが面倒くさくて、つい先送りに・・・。
今回も2.047にするとstd.rangeのTakeやらRetroでコンパイルエラーが発生して直し方がわかりません。
2.046なら、今作ってるプログラムは1箇所簡単な修正で済んだので、とりあえずはこれで・・・。
D1のtangoのコードをphobosに置き換えてみたら簡潔になりすぎて吹いた 特にファイルパス周りがヤバい std.pathは合理的だわ、std.fileへの関数の振り分け方の基準が謎だけど でもtraitsとか使ってるとD2が欲しくなるなぁ
そんな楽しげなD2組を指咥えてみてるD1な俺がここに
いつのバージョン準拠なんやろ(笑)
英語読めないんだぜ俺
英語ちゃんと勉強しておけばよかった
>>692 確かにな、いつのバージョンだろ(笑
この2ヶ月でけっこー大きくphobosが変わったからな。
買うの危険?
少なくともstd.containerの使い方はわからないだろうな
C:\dmd\dmd\bin\..\..\src\phobos\std\functional.d(176): Error: static assert "Bad binary function q{a == b}. You need to use a valid D expression using symbols a of type dchar and b of type string." C:\dmd\dmd\bin\..\..\src\phobos\std\functional.d(179): instantiated from here: Body!(dchar,string) C:\dmd\dmd\bin\..\..\src\phobos\std\algorithm.d(1984): instantiated from here: result!(dchar,string) これってPhobosとdmdのバージョンがあってないんですかね?
テンプレートに渡すパラメタを間違えただけという気も 最近のdmdは一番大元の呼び出し元も教えてくれるんだっけ?
699 :
695 :2010/06/18(金) 10:49:52
>>696 std.containerが出たのは、つい最近だかな・・・。
dcollectionをphobosに入れたくないからって、
事前予告もなしに急に出てきたし。
それにミカン・・・。
>>643 同意。
C++をガリガリ書いてる人ですらAlexandrescu博士のコードは難解すぎると嘆いているというのに 誰ぞインタフェース部分を乗っ取って博士のコードを内側に追いやってくれないかのう
例外ってどこで発生したかって情報もってないんですかね?
new Exception("", __FILE__, __LINE__); とかやらない限り無いねぇ そして大抵は__FILE__も__LINE__も抜きに例外が投げられてる アプリがどこで落ちたのか知りたい場合は-gオプション付きでコンパイルして ddbg辺りで実行するなりすればいいと思う
>>701 スタックトレースが最近入ったからそれで頑張ってくれ
>>703 あれってなんなの?
どうすればスタックトレースを見られる?
今のところ見たことがない Windowsで見る方法あるの?
パッチ見る限りLinuxだけみたいだが
import std.stdio; import std.date; d_time now = getUTCtime(); d_time old = now - ticksPerSecond * 60 * 60 * 24 * 365; writeln(toString(old), toString(now)); Wed Jun 02 14:05:44 GMT+0000 2010Sat Jun 19 14:46:13 GMT+0000 2010 1年前の日付が表示されるつもりが、17日前の日付が表示されます。 どこが間違っているのでしょうか?それともphobosのバグ?
ticksPerSecondの型がenumデフォルトでintになってるせいで >ticksPerSecond * 60 * 60 * 24 * 365 これがオーバーフローしてるみたいね
710 :
701 :2010/06/20(日) 21:17:07
D1で改行コードCR設定のcygtermでreadlnすると Enter入力してもreadlnから抜けない気がする ↓をコマンドプロンプトで実行するとEnter毎に!が出るけど cygtermだと何もでない。readlnが入力全部食ってる気がする import std.stdio; import std.cstream; void main() { char s[]; while((s = readln()) !is null){ dout.writefln("!"); } } ※cygterm=cygwinにteratermで接続するやつ
↑ちなみに生のcygwinだとEnter毎に!が出る(たぶん改行コードCRLFで行ってる) readlnは改行コードCRLF、CR、LFに関わらず一行として認識すると 書いてあった気がするのだけどCRだけだとだめなんかね
CR+LF, LF は LF だけ判定すれば間違いないが、 CR のみ判定しようとすると、LFが来るか来ないか待たないとダメだからな。
いや、CR のみと CR+LF 併用の場合は、 CR 見た瞬間改行扱いにして、次のLFを無視するようにすればいいか。 ただ、CR 改行って Mac でしか見たことないんだよなぁ。
Access Violationってどんな時にでるんでしょうかね? dwtのドラッグする時にラベルのテキスト取りにいったら落ちるんですが char[]を返してるだけなんですよね。 多分。
dmd1でクロージャしちゃったのが原因でした。失敬。
dwtはTable上からドラッグしたら本当にバグで落ちたりする
自分もdwt使ってるんですが、Treeのノードのドラッグって実装途中なんでしょうかね? サンプルもないし、SWTのソース流用してもdragStartすら呼ばれんのですが・・・
DWT+tango 0.99.9でやってるけど出来るなぁ TableのはバグってるけどTreeのドラッグは修正した記憶がない
>>719 なんかおかしな点ありますか?
Listでやるとこのままでもうまくいくんですが・・・。
int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK;
// Create the drag source on the tree
DragSource ds = new DragSource(tree, operations);
TextTransfer[] t ;
t ~= TextTransfer.getInstance();
ds.setTransfer(t);
ds.addDragListener(new class(tree) DragSourceAdapter {
Tree tree;
this(Tree _tree) {
this.tree = _tree;
}
void dragStart(DragSourceEvent event) {
Stdout("drag").newline;
event.doit = (this.tree.getSelection().length != 0);
}
public void dragSetData(DragSourceEvent event) {
Stdout("dragSetData").newline;
// Set the data to be the first selected item's text
auto txt = new ArrayWrapperT!(char)(this.tree.getSelection()[0].getText());
event.data = txt;
}
});
本当だ動かない… でも手元のプログラムのツリーではちゃんとドラッグできる えええ何でやねん TreeItemに画像を設定したり DropTargetもつけてみたり TextEditorをくっつけてみたり してみたけどやっぱりできないな 何が違うんだ?
-L"/su:console:5"をつけてコンパイルしたら動いた! …何でやねん
ほんとだ・・・ ありがとうございます!
質問を連投してすいません。 コンストラクタでドラッグリスナーの処理を行うと落ちます。エラーメッセージは dwt.DWTError.DWTError: Cannot initialize Drag ですが全く同じ処理を、コンストラクタから抜けた直後に書く(関数を呼ぶ)と普通に実行出来ます。 auto tree = new CTree(shell); tree.init(); <-ドラッグ処理 コンストラクタって何か気をつけてないといけない事があるんでしょうか?
エラーメッセージでgrepかけたらこんなコードに行き当たった >public this(Control control, int style) { > super(control, checkStyle(style)); > this.control = control; > if (control.getData(DND.DRAG_SOURCE_KEY) !is null) { > DND.error(DND.ERROR_CANNOT_INIT_DRAG); > } > control.setData(DND.DRAG_SOURCE_KEY, this); DND.DRAG_SOURCE_KEYをキーにしてデータを登録する処理が うっかりどこかで走ってるんじゃないかなあ
>>725 mixinで2度同じ関数が呼ばれてました・・・。
おかげでバグが取れました。ありがとうございます。
連投を重ねてすいませんが、恥をしのんであと一つお願いします><
ドラッグしたTreeItemが黒いのは、これもやはり自分のバグなんでしょうか?
画像をつけるとそこだけはちゃんとアイコンが表示されてるんですが。
その現象にはぶつかった事がないからわからないやごめん 画像を作ってるのはTreeDragSourceEffect.getDragSourceImage()だから その辺を調べるといいのかも
>>727 そうなんですか・・・
>>720 で試して頂いた奴でもならなかったって事でしょうか?
となると自分の環境の問題なのかなぁ・・・
とりあえず頂いたヒントを調べてみます。ありがとうございました。
dwtはVistaでビルドするとXPで動かなくなるような事が余裕で起こるから 環境次第で何が起きても驚かん
int i = 0; writeln("abcd"[i..i + 4]);// "abcd" writeln("abcd"[i..i += 4]);// "" これってバグですか?
iに副作用あるけどどうなの
structのデフォルトコンストラクタが定義できない仕様になってる理由は何ですか?
俺、
>>730 みたいなことする人と仕事したくない。
>>733 完全趣味で完全クローズドで未成年なのでそんなのどうでもいいです
>>734 なるほど
ありがとうございました
736 :
デフォルトの名無しさん :2010/06/29(火) 08:08:42
>>732 構造体の配列を確保するときにデフォルトコンストラクタがあると
0で埋めるんじゃなくて要素数分コンストラクタを呼ばないといけなくなって
パフォーマンスに問題が出るから、だと思う。
足跡
struct A(T...) { union {T field;} } A!(int, real, string) a; a.field[0] = 0; a.field[1] = real.nan; a.field[2] = "aho"; foreach (f; a.field) writeln(f); みたいなことができると今日知った 仕様書に書いてあればいいのに
なんでunion?
タプールとヤプールとカプールって似てるよな
742 :
デフォルトの名無しさん :2010/06/29(火) 22:47:12
>>740 最初
T field;
とやったらできなくて、だったらどうやってstd.typecons.Tuple実現できるねん
と思ってソース見たらunionがいた
ん、できないけ?
あれ?できた…
できるよね?
D1でもD2でも間違いなくできる じゃああの時出たエラーは別の要因だったのか… union意味ねぇ!
std.processのショボさは何とかならないかなぁ 標準ライブラリだけでfork-execやりたいです
streamもね
>>749 std.processって別ブランチで新しいの開発されてるけどいつマージされるのやら
おお本当だ すばらしいね 未来はバラ色だな
753 :
デフォルトの名無しさん :2010/07/02(金) 05:28:29
実際にバラ色だったらキモいけどな
見える、見えるぞ……苦労してカラーリングや折りたたみや補完を実装した挙句 本体のバージョンアップで全て台無しにされる未来が……
Dの仕様変更 ↓ IDEのバージョンアップ ↓ アップデートは有償 ↓ ウマー
D とか Delphi とか D で始まる言語は縁起が悪いのかもなぁ
Dylanって言語があるぞ まだ大丈夫だ
デバッグがまともに出来るようになるなら金出してもいい。
DHTML
Disk-BASIC DOS-BASIC は許してあげて下さい…
ファイルパスの扱いはどうすればいいんでしょうかね? toString16(tango)で変換した文字列渡すと指定されたモジュールが見つかりませんとかでるんですが・・・
途中で投稿しちゃいました。 でもリテラルで直接渡すとちゃんと通るんですよね・・・。何か間違ってるんでしょうか?
わざわざUTF-16にするってことはWindows関数に渡そうとしてるの?
>>765 はい。自分の環境だと自動的にLPCWSTR(wchar*)になってしまうんですが、tangoの方はそっちはくれないんですよね。
あ、すいません。処理の流れを書くのを忘れてました。 main関数からもらったパス(args[][])のargs[0]をtango.io.FilePathに渡すと tango.core.Exception.IOException: unexpected '\' character in path: D:\declipse\workspace\xdwt\main.exe・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ というエラーが出るんで、\を/に変えて使ってるんですが、 すると上記のエラーが出てしまうんです。
Tangoは使うな… とだけ言いたいところだけど、一応回答。 auto fp = new FilePath(standard(args[0])); auto lpcwstr = toString16z(toString16(fp.native().toString())); 多分こんな感じじゃないか?
>>768 うまくいきました。
ありがとうございました。
本当だ!火星風になってる!
!?
・・・!?
vm(ノーマルxp)で64BitXPでコンパイルしたExeファイルが普通に実行できてるんですが これって正常なんですかね?
だって32bitコンパイラしか無いし
そうだったのか><
今凄い勢いで64bit対応のコードが追加されてるみたいだけどね
777ならD言語が大フィーバー
<俺専用メモ> dmdからFFTWを呼ぶ場合、 implibでlibfftw3-3.dllを処理したlibをリンクし、 リンケージはextern(Windows)ではなくextern(C)を使う </俺専用メモ>
何につかってるの?
enum Hoge : Fuga* { HAGE = cast(Fuga*) 0b1, ... } てな感じで列挙体定義すると Hoge.HAGE で Error: no property 'HAGE' for type 'Fuga' って怒られてしまう。 これってDMDのバグ?
実行時にしか決まらないポインタをコンパイル時に決まるenumで扱うこと自体間違ってるような
>>782 ポインタの下位3ビットが0になることを利用して、
1つの値で31ビット整数とポインタ値を表現できるってやつをやろうとしてるのです。
スクリプト言語の値表現でよく使われるやつ。
で、処理系の実装上で使う特殊な定数値をenumで定義しようとして
>>781 のエラーにぶちあたった。
けどDにはGCがあるからポインタ直接触るのはよくないっぽいね
>>783 ポインタで持たなければいいんじゃない?
size_tならお断りされる理由も無いしな
それはそれとして
>>781 の挙動はバグな気がする
くぱぁ
D言語ってJavaやC++やScalaと比べてなにがいいの
言語が選べるってステキなことだよね
JavaとScalaはVMいるから論外 かといってC++は複雑すぎるからもうちょっと簡単にしようぜってのがD
え?Cとの互換性を切り捨てたら C++系言語はどこまで発展できるか検証するための 実験言語じゃないの?
andreiが入って進化しました(^q^)
dwtにTreeSelectionListenerが無いんですが・・・・ SelectionListenerだとなぜかTreeItem追加した時に反応するだけで 選択時には無反応です。 TreeItem選択時や、ダブルクリックに対するリスナーってどれなんでしょうか?
あれ?選択時に反応しない? 俺のところでは(ry DWTの場合色々と変なところで動作が食い違ってきたりするからなー dsssとbudでビルドしたら動作が違ったり budで-guiをつけたらClipboard#disposeで死んだり で、仕様ではSelectionListenerで正しいはず
dsssが楽なんでdsss使ってたんですが・・・ dmdとかでもやってみます。 ありがとうございました。
バグありD言語って怖いな
長さ0の動的配列=nullって仕様があるけど、 そのせいで複数のクラスとか構造体から同じ動的配列への参照を持たせたいときに、 単純に空配列を渡しただけじゃうまくいかない。 長さ0の動的配列を含めて、同じ配列の実装を共有するためにラッパクラス作ったんだけど、 何か他にうまい方法無いでしょうか。 class RefArray(T) { T[] list alias list this; }
>>796 複数のクラスや構造体から参照されるってことはそういう役目があるんだろうし
適切な名前をつけてあげれば悪い方法じゃないと思うけども(RefArrayという名前は微妙)
引数なしthisって引数ありthisを呼んでも必ず呼ばれる?
>>799 んだね。ただし、
(A)
this () {
this(1);
}
(B)
this (int x) {
}
のような場合、(B)から(A)は呼ばれないはず…
なんだけど、(B)をtemplate mixinしたら循環呼び出しだたわけと怒られた事がある
>>800 そうなんだ。しかし、共通の処理をthis()に入れてMixinしたろーと思ったら
this no match for implicit super() call in constructor
って出たんですが、これは何ですか?
スーパークラスに引数なしのコンストラクタが無いんじゃね?
>>802 なるほど・・・、そういえば無かった。
勉強になりました。
お礼言わない奴が増えたよなw
そう言われて改めて
>>803 を見たら涙が溢れて止まらなくなった
関数を引数にとり、引数にとった関数を二回適用する関数を返す関数は、 ocamlでは、 let twice f x = f (f x) と書けるのですが、 D言語で、うまく書く方法はないのでしょうか.
delegate使えば簡単に書けるだろうけど戻り値どうなるの?
引数と戻り値は、delegateを使って、 T delegate(T) twice(T)(T delegate(T) f) { return (T x) { return f(f(x)); }; } と書いてみたのですが、 auto f = twice(&twice!(int)); と書くと、 twice(T) cannot deduce template function from argument types !()(int delegate(int x) function(int delegate(int x) f)) となり、エラーがでてしまいます.
809 :
デフォルトの名無しさん :2010/07/14(水) 00:59:03
import std.functional;
int func(int x) { return x*2; }
alias compose!(func,func) twice;
void main()
{
assert( twice(1)==4 );
}
こんな感じだろうか?
>>808
>>809 ありがとうございます.しかし、
>>808 の関数も、
int func(int x) { return x*2; }
void main() {
assert(twice(&func)(1) == 4);
}
は、うまく動きますが、
auto f = twice(&twice!(int));
とすると、
>>808 のようにエラーがでてしまいます.
uint length = 2; [0, 1, 2, 3][0..length];// Error: ScopeDsymbol using 'length' inside [ ] is deprecated, use '$' instead なら変数のほうを見てくれよ・・・
812 :
デフォルトの名無しさん :2010/07/14(水) 03:19:36
>>810 >>809 の compose は template なのでそういうのは無理でしょうね。
>>810 のように書くとしたら、
T delegate(T) twice(T)(T delegate(T) f){
return (T x){ return f(f(x)); };
}
void main(){
int func(int x) { return x*2; }
auto tf = twice(&func);
auto ttf = twice( twice(&func) );
assert( tf(1) == 4 );
assert( ttf(1) == 16 );
}
こんなのはいかがでしょうか?
func がデリゲートじゃないといけないのがヤルセないですが、これはそのうち改善されるらしいです。
ちなみに 809 で使った std.functional.compose でも、
alias compose!(func,func,func,func) ttf;
で関数4回適用できます。
813 :
806 :2010/07/14(水) 09:16:17
>>812 ありがとうございます.
auto f = twice(&twice!(int));
のエラーですが、 &twice!(int) の型が function なので、
import std.functional;
auto tt = twice(toDelegate(&twice!(int)));
とすれば、うまくいきました.
delegateとfunctionの互換性制限いつ緩和されるんや…
その辺はデリケードだから・・・
えっ
何?
聞こえない
820 :
809 :2010/07/15(木) 00:48:52
あれっ!?俺、808の内容読んでなかったのか??? 半分以上寝てたからなんか話がずれてますね。ごめんなさい。 でも解決してよかった。
あほーん!(;^_^
いつの間にかqtdのバイナリパッケージができてる これでネイティブ描画でDLLを同梱する必要が無くてライセンスがBSDなら完璧なんだけどな
注文多い
824 :
デフォルトの名無しさん :2010/07/17(土) 00:14:29
仕様が完全に決まって、 IDEとしてVisual Dが出て、 「やさしいD」、「Dの絵本」なんて本がでたら勝利コース
SAL9000でもわかるD言語
>仕様が完全に決まって、 D is better D..
write once, rewrite every time.
>>824 絶 対 に 出ねーから安心しな
D#なら出るかもしれんなw
Visual Dとか本が出る以前に >仕様が完全に決まって、 この段階でももう無理
>決まって、 ここが無理
>>824 仕様が固まる前にVisual Dが出てしまっているからそのプロセスは既に無理
『やさしいD』 Andrei Alexandrescu 著
やさしい予感がひとつもしねえよ。
言語の本なのにコンパイラの内側まで説明してくれるすばらしい本です
>>834 Andreiはコンパイラには精通してないから,その辺はWalterとかDonが書きそう
D(笑)
笑(D)
XD <lol
(:D)| ̄|_
840 :
デフォルトの名無しさん :2010/07/19(月) 18:56:53
動的配列で、 p = &a[0]; で、アドレスを取得しようとすると、 参照が指してるアドレスじゃなくて、参照自体のアドレスが返ってくるのな。
>>840 再現しなかった@dmd 2.047
int[] a = [1,2,3,4,5];
dout.writefln("&a = %s", &a);
foreach (i; 0..a.length)
dout.writefln("&a[%d] = %s", i, &a[i]);
&a = 12FE04
&a[0] = 924CE0
&a[1] = 924CE4
&a[2] = 924CE8
&a[3] = 924CEC
&a[4] = 924CF0
>>841 ごめん、
>>840 は推測で書いちまった。
俺がちゃんと検証すればいいんだけどね...
本当は、
S[] a;
S*[] d;
//中略。
b[0] = &a[0];
と、やった上で、いろいろ処理をやったら、
b[0]の値は変わってないのに、
b[0] != &a[0];
になってるバグに遭遇して、なんでだろう?と、思って。
あ、バージョンは1.063ね。
>>842 aの長さを変えたりとかしてreallocationが起きたんじゃない?
長さ変えなくてもコピーGCが再配置するんじゃね?
>>845 現状コピーGCじゃないという悲しい現実…
未だに保守的GCなのかい?
848 :
842 :2010/07/20(火) 11:02:10
朝になって考えたら、そもそも自分の勘違いが、こういう状況にしたのかもしれない。 そもそも俺は、動的配列をこんな構造だと勝手に思ってた。 a ⇒配列の先頭アドレスを指す。 a[x] ⇒配列の実データを指す。 でも実際は、a[x]が実データなのだろうか? どっちにしても、いきなりデータの整合性が取れなくなるのは、気分悪い・・・
配列は struct { size_t length; int* ptr; } という構造だとどこかで見たな
>>848 動的配列は配列の先頭要素のアドレスと、長さからなる構造体って考えると理解しやすいかも
a = [1,2,3];
b = a; (ここで、先頭要素のアドレスと長さがコピーされる)
b.length = 5;
とかやるとaの要素が置かれている領域とは別の領域が確保され、bはそっちのアドレスを指すことになる。
結果としてaとbは全く別の配列を指すことになる。
あと、長さ0の動的配列 == nullだから
a = [];
b = a;
とした場合、aとbは完全に独立な配列で、片方の変更はもう片方に伝播しない。
動的配列は参照型って言語仕様には書かれてるけど、これを素直に解釈すると混乱のもとだと思う。
配列の先頭アドレスは a.ptr じゃない?
a[x]は実データなはずだけど。
それと、コピーGCが再配置したとしても、b[0]のアドレスも書き換えるのではなかろうか。
一番有り得そうなのは
>>844 の意見じゃないかなぁ
in-placeな関数とかプロパティとか使ったりするとそうなるかもしれない
これは何割信じていいの?L言語とか初聞きなんだが… ja.uncyclopedia.info/wiki/D%E8%A8%80%E8%AA%9E
L言語知らないのか? Lと名付けられた言語は複数あって、論理設計用のものからTCL/TKで作られたToy言語まで どれも有名だよ?
「ごきげんよう」 「ごきげんよう」
ルビーのLですね、分かります。
セキュリティモデルとかを研究するために設計されたE言語とか、 ほとんど誰も知らないような言語を並べていくと AからZまで全部あるはず
検索しづらい名前にするのは言語の伝統か? 天下のGoogleですらGOなんて名前を付けちゃうし
文字数が多くてかつ普通名詞じゃない(造語とか開発者の名前とか入ってる)と検索しやすいけど得てしてダサくなるな。 エディタの名前とか見てると特にそう思う。
みんなちゃんとDigital Mars Dって呼んであげないから・・・
gdcとldcの立場について
>>857 A言語のHello, Worldは実に振るってるな
DのHelloworldってどんなの?
pragma(msg, "Hello, world!"); こうだろ。
いつの間にかDFLがRC1になってた
いつ64bit版出るか知ってる人はヒントだけでも教えてください
ヒント:D言語
時代の最先端を走るエレガントなD言語がどうかしましtか?
64bit版など無意味なので出す気はないとうぉるたん自身が言っていたような?
このところdmdのcommitログに64の文字が乱舞してる
>>873 Walterも「64bit対応はそれほど難しくない」っぽいことをMLで話してたし順調っぽいね
64bit版DMDとか諦めてたけど、現実のものになるんだな。
64bitでもintは32bitなんだっけ? 32bitアプリをそのままコンパイルしただけじゃメモリ空間が広くなるだけ?
size_tがulongになるとかそんな感じ
64bit対応に関しては、C/C++の規格が酷すぎるだけだからなぁ。 D言語は最初から64bit対応が考慮されてるだけだし、あとは実装するだけ。 dmdがんばれー
centの実装まだー
128bit整数に対応したCPUってあんの? realでも80bitだったよね?
realは64bit以上で不定じゃなかったか?
キャリーフラグはあるんだから、繰り上がり演算すればOKじゃね?
zipコンパイル時に実行できないのかー……。
884 :
デフォルトの名無しさん :2010/07/29(木) 22:03:10
1.0か2.0どっち覚えたほうが良いの
1.0系について今も深く語ってる記事とかあんまり無いし2.0でいいと思う
町でプログラマーの寄り合いがありました。次から次へ恐いものを言い合いました。 みんな恐い物を話す中で一人だけ黙っているものがいました。 Walter「おい、松ちゃん。恐いものはないのかい。」 松 「恐い! 恐いもんなんか何もないよ。」 Walter「CもC++もJavaも恐くないんかい。」 松 「そんなものは恐くないよ。・・・・」 しかし突然話すのを止めてしまった。 Walter「どうしたんだい。」 松 「恐いものを思い出しちゃった。」 Walter「それはなんだい。ぜひ教えてくれよ。」 松 「あ、新しいプログラミング言語が恐い。」 Walter「新しいプログラミング言語、そりゃどういう言語だい。」 松 「C++をベースにした言語なんだ。JavaやRubyやPythonのいいとこどりした言語なんだ。ああ思い出しただけで気持ち悪くなる。」 顔色がみるみるうちに悪くなってきた。 松「ああ、座ってられない。隣の部屋に布団をしいてくれ。」 床に入ると、とうとう毛布で顔をおおってしまいました。 これを見て、Walterは笑って、いたずらをすることにしました。
Walterが新しい言語"D"を作り、色々な機能をもたせました。GC、CTFE、連想配列、遅延評価、契約、unittest、複素数、テンプレートなどです。 それをネットで公開し、こっそり松ちゃんのPCにインストールし、気がつくのを待ちました。 Walter「ねえ。松ちゃん。起きなよ。もうお開きだよ。」 松 「わかったよ。起きるよ。でももう新しい言語のことは言わないでくれよ。」 Walter「わかったよ。もう話さないよ。」 大きな叫び声が聞こえた。 松「うわ、新しい言語だ。みょうな機能が一杯だ。」 となりの部屋のWalterは大満足。 松「おいWalter、どうしてこんなことをするんだよ。約束しただろう。D言語こわい。D言語恐い。」 大きな声をあげれば上げるほど、Walter大喜び。 松「うわ、連想配列だ。恐い、恐い。」 「うわ、遅延評価だ。恐い、恐い。」 「うわ、テンプレート恐い。べんり・・。こわい・・。」 様子のおかしいのに気がついて部屋の中を覗いてみました。 Walter「うれしそうだぜ。コンパイルしてるぜ。こりゃだまされた。ねえ、松ちゃん、一体何が恐いんだい。」 松「クロージャが恐い。」
まつもとさんが愛用してくれるなら人気爆発間違いなしだな
889 :
デフォルトの名無しさん :2010/07/30(金) 20:01:41
なんだかD言語を使ってDLL(Cで書いてあるプログラムから呼び出す)作ってみようと思ったんだが 1.0とか2.0とかよくわからん。 普段Perl使ってて、時々Cとかに手を出すんだが、正規表現とかって充実してる?
言語組み込みではないがライブラリで同じくらい便利に使えるよ と仕様には書いてある
D2の標準ライブラリには当初からあるstd.regexpと最近作られたstd.regexというモジュールが混在してる 機能は前者の方が充実してるような感じ 俺がちょっと使うくらいなら便利なんだけどPerlでバリバリやってるような人から見るとどうなんだろ
892 :
デフォルトの名無しさん :2010/07/30(金) 21:10:21
>>890 ふむ。新しく何かとってきて組み替る必要がない 旨が仕様に書いてある のはよさそう。
でも
>モジュールが混在してる
ってよく分からんwww開発途上なのか?
DとPhobosライブラリ作ったよ ↓ Dがバージョン1になったよ ↓ まだまだ色々拡張したい、とりあえず安定版をバージョン1にして バージョン2に色々拡張していくよ ↓ Phobos古くなってきたしTangoライブラリとして再設計するよ ↓ Phobos捨てがたいし、混ぜちゃえ☆ (tangobosの誕生) ↓ D言語のバージョン1とバージョン2、ライブラリのPhobosとTangoがごっちゃごちゃ ← 今ここ
……なんだろうやっぱDは避けて素直にC++とか勉強する方がいい気もしてきたwww
おっと、正規表現の話はD2のPhobos内だけでの混乱だから安心してくれ GUIライブラリに到ってはもっと混乱してる上にプロジェクトの大半が崩壊してるが正規表現とは関係ないから安心(ry
世の中にはSとMがおってだな…
開発速度さえまともなら、ここまでにはならなかったはずなんだよ。 しかし、遅いならともかく早すぎて追いつけないって……
SとMの間にNを置きました だからNは少しだけ 中途半端なのです
型とかも結構Cとかと互換性有るけど結局何が違うの?
javaとかC#じみた文法ででネイティブバイナリを吐ける。 マクロとか無くてすっきりかっこいい。オブジェクト指向に書ける。 これでいいじゃんD言語。
下手するとC++のより凶悪なテンプレートを備えてるというのが個人的には大きい
DってGCあったっけ
とりあえずまえPerlで無理矢理組んだファイル形式変換スクリプトを書き換えてる。 確かに文字列とかはCやC++よりちょっと扱いやすい印象かもしれない。
そういえば filename = sub(file,"\\",""); std.regexp.RegExpException: no character past '\' これってなんで例外でるんだ?
>>905 "\\\\"
r"\\"
`\\`
お好きなのどーぞ
>>893 みたいな説明されたら危うく見えるな
Tangoは消える運命だしPhobosを強化してD2が今のコミュニティの方向
後Tangoが出たのってD2の前じゃないっけ?
>>903 並行GCがいつか来るよ!
Tangoの問題は単なるライブラリじゃなくてGCとか言語のコアに近い部分も一緒に作り直そうとしたところだよな ただのライブラリなら神だったのに
>>906 いやそうではなくて
いま
string line[i] = r"base=C:\Program Files\hogehoge\"(末尾改行コード無し)
みたいなのだとして
string base = sub(line[i],"^base=","");
とかはうまくいったから
base = sub(base,"\\$","");
とかやろうと思ったら上手く処理できないので前述のを試してみたらエラーと。
\はなにか別の処理が要ったりするのか?
\\が文字のエスケープで\になる で、これは正規表現だと意味のある文字だから それをさらにエスケープして\\\\にしなきゃならない それか\\がエスケープされない文字列形式を使う という意味でそ
Dコンパイラに渡されるのは "\\$" 正規表現コンパイラに渡されるのは "\$
912 :
911 :2010/07/31(土) 14:32:52
Shift+Enterで投稿とか狂ってるだろJaneStyle ・・・途中投稿してごめんなさい吊ってきます
>>910 ああそうか初歩的ミススマソ……
まどろっこしいな……
>>912 お前が死んだら誰がD言語を支えるんだ!
もっと熱くなれよ!
915 :
デフォルトの名無しさん :2010/07/31(土) 18:37:44
なんか、クラスの同期関数から、 外部の関数を呼び出したら、重くなったんだけど… なぜだ。(D1.063)
最小コードにしてバグ報告してみたら?
917 :
デフォルトの名無しさん :2010/07/31(土) 19:00:52
じゃあ、最小コードにして重かったら、報告してみるか。 重くなかったら…
日本語フォルダ・ファイル名の扱い方が分からない。
しらねーよ
Error: Access Violation うわぁぁぁぁぁぁぁぁぁぁぁぁぁぁ!!!! なんでみつかんねぇんだぁぁぁぁあああああ!!!
921 :
デフォルトの名無しさん :2010/08/01(日) 08:22:49
>>920 そのエラーは確保してない領域(null含む)にアクセスした時に出るエラーだから、
>>920 が考えてる原因、とは別の所に原因がある可能性も。
922 :
917 :2010/08/01(日) 11:24:33
最小コードにしたら、関数呼び出しが4倍くらい重いことがわかった。 ・・・これどうするかねえ。
dmdを窓から投げ捨てろ!
924 :
917 :2010/08/01(日) 12:45:19
コー・・・ド・・・?
926 :
917 :2010/08/01(日) 12:55:01
見たところ重い理由が無い気がするなぁ ウォルたんに言ったら直してくれるんじゃね
常識的に関数は重いものであると思う俺はダメ? まあテンプレートミックスインとかにして強制的にインライン化すればいいよ
929 :
917 :2010/08/01(日) 15:04:12
ワシもじゃ、ワシもじゃみんな!
>>931 ガッ!
バグの原因見つかって何より。 ・・・見つかったんだよね?
そもそも1億回も関数を呼び出しておいて遅いもへったくれもないだろう… もっと呼び出し回数を減らせるような関数を作ればいいんじゃないかなと思う。
>>933 ライブラリリファレンスをちゃんと見たら、
四角形塗りつぶしする関数があったのは内緒だ。
>>932 一部要素がnullになってるリストがあって
nullな要素のインデックスを覚えといて
後でそこを埋める処理書いてたんだけど
(↑効率悪いってのは気にしないでくれ・・)
覚えてたインデックスが間違ってて、
リストの要素が全てnull以外になってることを
想定してた処理で死んでた。
全く関係ない関数からretするだけでエラー落ちしてたから
意味わからず3日間悩んでたよ・・・
やっと見つかったは良かったけど今ソース中がprintfだらけなんだぜ!!
ファイル先頭で debug = HOGE_PRINT; とやって debug(HOGE_PRINT) writeln(〜〜 ってやったりするよね
そして誕生する全行の半分がdebug(FUGA) { ... }なコード
printfがあると大丈夫なんだけど、printf消すとなぜか落ちるとか、たまにあるよね
それなんてC言語?
c = a + b; /* 合計を代入 */ c = a + b; /* 念のため */
>>935 printf()だらけあるあるwww
そして、いざデバックの為にコンパイルしようとしたら、
printf()の構文でエラーを吐くのはもっとある。
ちなみにバグを見つけるだけなら、契約の仕組みが非常に役にたつ。
俺がちょっと前に書いたプログラムは、この仕組みが無かったら、どうなっていたか分からんね。
immutableなクラスのopEqualsとかtoStringってどう書けばいいの? 普通に定義すると not covariant with object.Object.opEeuals とか言われる
>>953 immutable関係なくシグネチャ間違ってると予想。
>>944 ソースはこんな感じ。
immutable class Hoge
{
string toString() { return "Hoge"; }
bool opEquals(Object other) { return false; }
}
コンパイル結果は
opequals.d(3): Error: function opequals.Hoge.toString of type immutable string() overrides but is not covariant with object.Object.toString of type string()
opequals.d(4): Error: function opequals.Hoge.opEquals of type immutable bool(Object other) overrides but is not covariant with object.Object.opEquals of type bool(Object o)
エラーメッセージから察するに Object に immutable bool opEquals(Object) が宣言されてないと駄目っぽい?
うわあ……修飾によってオーバーライドできない関数ができてしまってるとか…… 抜け道だけなら、immutableではない継承階層を作って、 そこでimmutable_toStringでも定義して、元のtoStringからimmutable_toStringを呼んでおいて、 Hogeではimmutable_toStringをオーバーライドするとか……試してないけど。 単にObject.toStringにimmutableを付ければいいってもんでもないよな……const他の修飾子もあるし さあWalterタンに報告だ!w
947 :
デフォルトの名無しさん :2010/08/02(月) 10:56:25
D2.048とD3.0マダー?
948 :
デフォルトの名無しさん :2010/08/03(火) 05:46:33
import std.stdio; struct A { int value; alias value this; } void main() { A a = {123}; if ( a==123 && a!=123 ) writeln( "???" ); } ==と!=が同時にtrueって一体どういうことなんだ?
949 :
デフォルトの名無しさん :2010/08/03(火) 20:03:36 BE:695980229-2BP(1201)
初心者にお勧めのサイトってありますか
やめとけこんな糞言語 C#の方が食い扶持があるぞ
>>949 どれくらいの初心者?
とりあえずわなD
食い扶持考えてD言語やる人とかいなくない?
953 :
デフォルトの名無しさん :2010/08/03(火) 21:12:08 BE:231993623-2BP(1201)
>>950 Dはhellowroldをを実行したぐらい
C系統の言語の経験があるならやっぱりわなDかねぇ
C言語の知識と易しい英語が読めるなら本家見たほうが早い
仕様書がリファレンス兼自慢になってるからな
でもBNFは雑なので信用しないこと
struct STest{ char[128] mChar; } int main(){ for(int Count = 0; Count < 1000; ++ Count){ writefln("Count = %d",Count); STest[] mTests; for(int i = 0 ; i < 1000; ++ i){ STest Test; mTests ~= Test; } mTests.clear; } return 0; } WindowsのDMD2.046で上記のコードでmTests.clear;のタイミングでメモリが解放されてないっぽいのですがこれはそういうものなのでしょうか。
「解放されていない」が何を指してるのか知らないけどそういうものです
タスクマネージャ等を見てるんだったら、D上でメモリを開放してもOSにすぐメモリを返すとは限らないからね 大抵はよほど空きが貯まらない限りは再利用のために取っとく。独自メモリマネージャを実装してる言語はみんなそう
>>958 のような質問ってMLでもちょくちょく出るからドキュメントに書いといた方がいいんじゃなかろうか?
もう書いてあるっけ?
CのmallocだってfreeしてもOSへは返さない方が多いので……
OSからメモリ借りんのってそんなに重いのか・・・
重いのももちろんだけど、空間効率も大きい。 普通は数M単位で一気に借りてきて、それを細かく切り分けて使うようになってる
965 :
958 :2010/08/05(木) 10:33:14
958の例だとメモリ1Gとか超えても解放されないのでさすがにおかしいんじゃないかと思ったのです。 structでなくclassにしてnewして配列に追加した場合はclear後に割りと直ぐGCが回収してくれるっぽく10Mとかも超えないのですが。
>>963 重いぞ
ProcessExplorerで見るとわかるがHealAllocはexplorer.exeが担当している
タスクマネージャを立ち上げて見るとこのスレッドが起動するとCPU使用率が
100%近くまでヒゲみたいに立ち上がる
×HealAlloc ○HeapAlloc
dmdが萌えるあまりcygwinでkonataにシンボリックリンクしちゃってるのは 俺だけじゃないはず $konata test.d test.d(5): Error: cannot delete type int こなちゃん癒される...
それはdmdが蔑ろにされているようにしか見えないのだが
>>966 何を言ってるのかわからんのだが、
プロセス起動時に、親プロセスがプロセス起動に必要なメモリを割り当てるという意味で使ってるのか?
プロセスが起動した後は、そのプロセス内からOSに要求だよな?
ライブラリから kernel32.dll の HeapAlloc を呼んでるはずだ。
explorer は単なる親プロセスという以外、何も関係ないと思うんだが。
>>958 外側のループの中身を別関数にすれば解放されるかと思ったがダメだった。
しかも、内側のループ回数増やしたら、メモリ不足で落ちる。
GC のチェックが new の時に呼ばれてるのかもしれない。
clear の後に core.memory.GC.collect 入れたら、とりあえず動くようにはなった。
徐々に遅くなるのは断片化のせいかね。
structってヒープに確保するんだっけかスタックじゃなくて
内側ループ回数1000000(long)に増やしてclassでやると171MBあたりで
頭打ちしてそれから最後までメモリ量増えずに正常終了
delete入れたら13MBくらいで正常終了
structは256MB行ったあたりでめんどくなって停止させたけど
256MBとかスタック取れないよな多分
アセンブラ読める隊の出番だな
>>972-975
げ、てことはもしかして、クラスを使わないで書いてるとGC走ってないってことか……?
structでもnew使ってポインタ管理すればGC動くと思うけど
全く無関係の class を new する文差し込んだらまともな速度で動くようになったので、 おそらく、GC が new の時に走ってると思う。 全く new しなかったら、GCしてくれないんだろうな。
2.048
D1使い続けてたんだけど最近のDirectXのポーティング状況とか見てると D2使った方がいいのかなって思う。D1でいいのないよな どうなんだろ
977 :
デフォルトの名無しさん :2010/08/12(木) 23:05:17
>>975 capacityなんてあったんだな
>>976 >最近のDirectXのポーティング状況
えっ?どれそれ?kwsk
978 :
デフォルトの名無しさん :2010/08/13(金) 00:15:56
だれか肉体言語開発しろよ
>>977 俺が見たのは「傾き指向プログラミング」ってブログの8/9の記事
テト○スのソース一式の中にDirectX9をポーティングしたものが入ってた
オリジナルっぽくてReadmeに自由に使ってOKって書いてあった。
これ見てD1使い続ける気持ちが揺らいだよ
D2ならこれって即ビルドできちゃうレベルなのかな
あと、
>>138 のWindowsAPIポーティングにもDX9がこっそり入ってる。
980 :
977 :2010/08/13(金) 02:14:12
>>979 >ブログ
d3d11.dまであるのか、ってかこれ全部手書きか?作者乙!
使ってみるわサンクス
>138 のポーティング
実は以前にそこのでDirextX10のTutorialをやろうとして挫折した者なんだが、
なんか、あそこの管理者のモチベーションはいまどうなんだろうか。
DirextX9のでよければ dsource.org の DDirectX9 がD1から使えたような。
981 :
525 :
2010/08/13(金) 03:28:53 std.xmlがコメントで落ちるバグ、2.047からなおってる!気づかんかった!