07/07/26 12:15:42
phobosを使って作ったアプリを配布するときはソースを公開すべき?
phobosのライセンスはZlibライセンスに似ていますが、GPLとは
書いてないし、LGPLと解釈すれば自分で書いたソースは公開しなくても
よいような気がする
128:デフォルトの名無しさん
07/07/26 12:49:20
>>127
>公開
そんなことないでしょ
129:デフォルトの名無しさん
07/07/26 18:05:22
>>126
なんか最適化を阻害しそうじゃね?
(x in a .. b) が
(x >= a && x < b) や
(x.opCmp(a) >= 0 && x.opCmp(b) < 0)
と見なされれば十分だと思う。
130:デフォルトの名無しさん
07/07/27 17:48:45
みんなデバッグどうしてるの?
flectioned 使えば落ちたときのスタックトレースを見ることはできるけど
ブレークポイント設定してステップ実行とかしたいのに
windbg は不安定すぎて使い物にならないんだけど・・・
131:デフォルトの名無しさん
07/07/27 17:57:13
>>130
俺はwindbgでそんなに困ったことなかった…
ddbgはどう?使ったことないけど
132:デフォルトの名無しさん
07/07/27 18:38:41
>>130
参考にならないかもしれないけど、俺はVC++2003使ってる。
これだけで、ステップ実行、落ちたときの呼び出し履歴、リソースエディタと、
今のDに足りないものが補えてる。
133:デフォルトの名無しさん
07/07/27 18:49:35
>>131
thx ddbgというのもあるんだね 今度試してみるよ
VS2005でうまくいけば一番いいんだけども
_Dmainに関数ブレイクポイントを設定して頭からステップ実行するしかできてなくて不便
行ブレイクポイントを設定しても「このドキュメントのシンボルが読込まれていません。」と表示されて
ブレークポイントが無効化されてしまう
これは設定でなんとかなるのかな?
134:デフォルトの名無しさん
07/07/27 21:27:04
コンパイラに-opがあるのをつけてみたらどうかな
あとasm{int 3;}がブレイクポイントになる。
過去スレにあった
135:デフォルトの名無しさん
07/07/27 23:02:56
>>132
VS がシンボル情報を認識できているってこと?
どうやるんだろう
>>134
-op をやるだけではダメだった
シンボル情報がないから対応するソースを表示できないって怒られた
asm はちゃんとブレークポイントになったよ
136:デフォルトの名無しさん
07/07/27 23:12:44
_Dmain に関数ブレークポイントを設定したらうまくソースとの対応を認識してくれるので
map ファイルに出てくる他のシンボル名で関数ブレークポイントを設定したらどの関数でもうまくいった
VS に map ファイルの内容をシンボル情報として使ってもらう方法をどなたかご存じないですか?
137:デフォルトの名無しさん
07/07/28 00:53:33
やっぱりリンカが PDB ファイルを出力してくれないと
VS ではどうしようもない気がしてきたんですが・・・ orz
オブジェクトファイルの形式が違うからなあ・・・
138:デフォルトの名無しさん
07/07/28 03:31:24
何度も書き込んですまん
ddbg 試してみたけど出力に多バイト文字含んでると落ちるね
ddbg を実行するディレクトリ名とか・・・
ddbg は Code::Blocks をフロントエンドとして動作できるらしいからそっちに期待してみる
前スレの人は失敗に終わったようだが・・・
139:デフォルトの名無しさん
07/07/28 19:34:22
enum Foo : ushort
{ HAGE = 11, HIGE = 22, HUGE = 33, HOGE = 999, }
template Bar(T)
{ const char[] Bar = T.stringof; }
void main()
{
/* ちゃんとHAGE HIGE HUGE HOGEが表示される */
foreach (str; __traits(allMembers, Foo))
{
printf("%.*s\n", str);
}
Foo foo;
printf("%.*s\n", Foo.stringof); //"ushort"が表示される
printf("%.*s\n", (Foo).stringof); //"ushort"が表示される
printf("%.*s\n", foo.stringof); //"ushort"が表示される
printf("%.*s\n", Bar!(Foo)); //"ushort"が表示される
}
どうすればFooという型から(コンパイル時評価可能な)文字列"Foo"を取得できるんだ?
140:デフォルトの名無しさん
07/07/28 19:59:14
コンパイラのバグくさい気がするのでテケトーに回避策を試した結果。
template Bar(T)
{invariant Bar = (T[]).stringof[0..$-2]; }
でOK
141:デフォルトの名無しさん
07/07/28 20:17:53
>>140
素敵な回避策だ。
トンクス!
142:デフォルトの名無しさん
07/07/28 21:45:04
∩_
〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
∩___∩
| ノ ヽ !
/ ● ● | こいつも最高にアホ
| ( _●_) ミ
彡、 |∪| / .\
/ __ ヽノ / \ ...\
(___) / .│ ..│
/ ヽ
l..lUUU
.U
143:デフォルトの名無しさん
07/07/28 23:02:35
うけけめけ
144:名無しさん@そうだ選挙に行こう
07/07/29 15:24:36
ばーじょんあっぷまだー?
145:名無しさん@そうだ選挙に行こう
07/07/29 18:26:52
>>129
考えてみたけど、インライン化やメンバをfinalにする、Rangeオブジェクトをスタックに置く等が行われれば、
案外いい感じに最適化されるんじゃなかろーかという気がした。
あとRangeクラスはあると実際便利なので、標準で入ってて欲しいなーという願望もあったり。
パフォーマンスを気にしてクラス作るのを敬遠しちゃって、
コードの可読性とかで大きく損をしてるケースを沢山見るのよねぇ。かなり歯がゆい気分になる。
D言語には是非とも、クラス化のリスクを徹底的に減らすような最適化を推進してもらいたいデス。
ところでForeachRangeStatementの箇所がまだ翻訳されてないんで自信無いけど、
Rangeとして書けるのは整数だけ?
いくつかの演算子が適用できればオブジェクトでも行けるようにも読める気がするけど。
146:名無しさん@そうだ選挙に行こう
07/07/29 18:30:25
>>145
イテレータにも使えるとWalter氏が言ってたような…
147:名無しさん@そうだ選挙に行こう
07/07/29 18:45:36
>>145
ForeachRangeStatementは今のところスカラーな数値(整数/実数/虚数)だけ。
ただ、構造体/クラスに対応する考えはあるみたい。
news://news.digitalmars.com:119/f817uv$aqd$2@digitalmars.com
148:デフォルトの名無しさん
07/07/29 22:10:51
void main() {
int[5] a;
foreach(p; &a[0] .. &a[$-1])
writefln(p);
}
ポインタ型にも適用できるけど、型の大きさにかかわらず1刻みになるようだな。
149:デフォルトの名無しさん
07/07/30 14:53:19
Cのdmcでdll作りたいんだけど、どこで聞けばいい?
150:デフォルトの名無しさん
07/07/30 15:01:13
DMCスレ落ちたんか
151:デフォルトの名無しさん
07/07/30 15:14:15
クラウザーさん
152:デフォルトの名無しさん
07/08/03 00:01:06
アップデートまだー?
153:デフォルトの名無しさん
07/08/03 16:57:55
関数が複数の値を返せたらいいのになあ・・・
154:デフォルトの名無しさん
07/08/03 17:04:45
Dにインデクサないの?
155:デフォルトの名無しさん
07/08/03 20:25:18
opIndex?
156:デフォルトの名無しさん
07/08/03 22:47:10
だよね
157:デフォルトの名無しさん
07/08/03 22:48:31
>>153
Tupleを返せたらいいんだけどな
なんでできないんだ
158:デフォルトの名無しさん
07/08/04 01:21:34
Tupleはコンパイルタイムにしか存在しないデータ型だから無理じゃね?
159:デフォルトの名無しさん
07/08/04 03:43:07
Dには集合型ないの?
160:デフォルトの名無しさん
07/08/04 04:12:09
>>158
タプル自体の構成を変更したりはできないけど、
タプルの各要素を実行時に変更するのはOK。
ので、
int n; char[] str;
Tuple!(int,char[]) retTupleFunc(){ return Tuple!(3,"hoge".dup); }
Tuple!(n,str) = retTupleFunc();
というような感じのが、もっとマシな構文で実現される整合性の余地はある。
161:デフォルトの名無しさん
07/08/04 04:19:57
早くタプルリテラルを追加してほしい。
162:デフォルトの名無しさん
07/08/04 04:24:44
$(int, char[]) だの @(int, char[]) だの、
まだ使ってない記号を導入するつもりはないんだろうかね。
163:デフォルトの名無しさん
07/08/04 04:42:07
それより、変数宣言以外での、式で使うカンマ構文をナシにして、
a,b,c = f();
で済むようにすりゃ簡潔でいいと思う。
f(x,y,z)とかf((x,y),z)とかやるときも構文の不整合起こさないで済みそうだし。
164:デフォルトの名無しさん
07/08/04 11:01:11
>>163
それ、不整合を起こさないためには必須だけど代わりの構文が無いと困る。
165:デフォルトの名無しさん
07/08/04 11:07:02
>>163
Luaでそんなことやってたけど、
便利だわな
166:デフォルトの名無しさん
07/08/04 13:40:38
カンマ演算子もタプルを生成するようにして、タプルをスカラーで評価したら一番最後の値が返されるようにするとか。
167:デフォルトの名無しさん
07/08/04 15:18:03
今のところはこういうやつでお茶を濁すしかないのかね。
これは C++ だが。
URLリンク(www7b.biglobe.ne.jp)
168:デフォルトの名無しさん
07/08/04 15:54:29
テンプレート型にstaticな演算子が適用できないのは仕様?
struct S {
static void opAssign(int a) { writefln(a); }
}
struct ST(T) {
static void opAssign(int a) { writefln(a); }
}
void main() {
S = 1; // ok
ST!(int) = 1; // error
ST!(int).opAssign(1); // ok
}
169:デフォルトの名無しさん
07/08/04 17:18:08
alias ST!(int) STI;
STI = 1;
とすれば通るけどね
170:デフォルトの名無しさん
07/08/04 17:42:19
前にもそんな感じのテンプレートの挙動があったな。
まあ仕様じゃなくてバグだろう。
171:デフォルトの名無しさん
07/08/05 01:13:41
>>165
むちゃくちゃ好きだったLuaとSquirrelだけど
D言語にはまった以降いらなくなってしまった・・・
172:デフォルトの名無しさん
07/08/05 01:16:16
和訳の中の人はなんであんなにマメなんだ?
173:デフォルトの名無しさん
07/08/05 07:11:48
まあ、なんにしろありがたいことは確かだ。
174:デフォルトの名無しさん
07/08/05 11:56:59
FAQかもしれませんがGTK+ってDからも使えますか?
175:デフォルトの名無しさん
07/08/05 12:03:28
っ gtkD
176:デフォルトの名無しさん
07/08/05 12:22:53
Duit
URLリンク(www5.ocn.ne.jp)
177:デフォルトの名無しさん
07/08/05 12:24:50
>>175-176
ありがとうございます
調べたら色々出てきたので
いくつか比較してみたいと思います
URLリンク(www.autla.com)
178:デフォルトの名無しさん
07/08/06 11:56:11
URLリンク(d.hatena.ne.jp)
これってどうなんじゃろ? 仕様外?
179:デフォルトの名無しさん
07/08/06 12:50:22
inが通るなら、outも通らなきゃねとおも
180:デフォルトの名無しさん
07/08/06 13:09:37
コンパイラ自身がassertion failureって言ってるなら
間違いなくコンパイラのバグだと思うけど。
181:デフォルトの名無しさん
07/08/06 13:11:52
どっちが?
inが通るのが?
それともoutが通らないのが?
182:デフォルトの名無しさん
07/08/06 14:26:28
コンパイラのコード(.cファイル)内でassertion failureを起こしてるから
コンパイラにバグがあるのは確定。
関数リテラルでは"FunctionBody"が書ける仕様になってる。
これはin、out、bodyが書ける構文要素のことなので、
outを書けないのはバグ。
inが書けるのは仕様通り。
delegateを省略した場合に事前・事後条件が書けないのはバグ。
183:デフォルトの名無しさん
07/08/06 14:57:24
ところでWin32APIを軽くラップしようとしたら、
char[]をnullに出来ないので困っていたりする。
func(char[] str){
win32api(toStringz(str));
}
func(null);
とするとnullが""に暗黙変換されちゃって、funcにnullが持ち込めない。
nullableみたいのって無かったっけ?
184:デフォルトの名無しさん
07/08/06 15:16:56
str is null ? null : toStringz(str) では
185:183
07/08/06 15:31:32
>>184
func()と同じ理由でtoStringz()もnullを受け取ることはできないので、あまり意味はないかと。
toStringz(null)はtoStringz("")として呼び出される事になるので。
って、そう考えるとtoStringz()も使っちゃダメってことじゃないか。
めんどくせーなー。
186:デフォルトの名無しさん
07/08/06 15:41:08
void main() { int[3] a = [1,2,3]; }
実行時に "Error: Stack Overflow" ってなるんだけど、何が悪いのでしょうか?
DMD 2.003を使ってます。
187:184
07/08/06 16:05:29
>>185
いやいやいや、toStringzにnull渡してないから。こう。
void func(char[] str){
win32api(str is null ? null : toStringz(str));
}
実際には何回もつかうだろうから関数化すりゃいいと思う。
> toStringz(null)はtoStringz("")として呼び出される事になるので。
違う。nullはnull。toStringzの実装が特に""とnullを区別してないだけで
188:デフォルトの名無しさん
07/08/06 16:06:30
>>184じゃないが
str is null ? null : toStringz(str)
なのに
toStringz(null)
が出てくる理由がわからんし、
ポインタ型にnullを渡すと(p==0)になるでしょ常考。
189:デフォルトの名無しさん
07/08/06 16:10:06
>>182
writefln(array[out(i) { assert(i<a.length); } body { return 4; }()]);
仕様によれば、こういう変態的なコードもありなんだな
これ試してて気づいたんだが、
writefln(array[{ return $-1; }()]); が、
writefln(array[{ return array.length-1; }()]); と等価になってないっぽい。
190:デフォルトの名無しさん
07/08/06 16:15:23
$の方値がぶっこわれてるな
>>186
DMDのバグ
191:デフォルトの名無しさん
07/08/06 16:24:44
>>185
空のchar[]とnullは区別できないよ。
import std.stdio;
void main() {
writefln("" is null); // false
// 文字列リテラルはNULターミネータを持っている。
char[] s;
writefln(s is null); // true
// 配列の初期値はnull
s = "".dup;
writefln(s is null); // true
// NULターミネータは複製されない。
s = "aa".dup; s.length = 0;
writefln(s is null);
// 長さを 0 にしても再利用のため(?)に同じ場所を指し続けている
}
192:デフォルトの名無しさん
07/08/06 16:50:58
ちなみに、こういう気持ち悪いことにもなってるから注意が必要。
import std.stdio;
void main() {
string a = "";
writefln(a is null); // false
writefln(a == null); // true
}
193:デフォルトの名無しさん
07/08/06 17:41:04
win32api(str.length ? toStringz(str) : null); で良くね?
194:デフォルトの名無しさん
07/08/06 21:06:38
>>191-192
なるほど
195:デフォルトの名無しさん
07/08/06 21:52:03
win32api(str.ptr ? toStringz(str) : null);
とかどうよ
196:183
07/08/06 21:58:03
ウッヒョー。今まで仕様を勘違いして覚えてたのか俺は。
・配列はnull値を取れない
・nullは長さ0の配列に暗黙変換される
とばかり思ってました。
えーと、正しくはこういうこと、でいいんでしょうか?
・配列はnull値を取れる
・null配列はほとんどの場面で長さ0の配列と同じ挙動をする
・両者はis nullの結果で区別できる
>>184さんごめんなさい。正しくその書き方で事足りました。
みんなもありがとう。おかげでアホな誤解から解放されました。
でも("".dup is null)がtrueになる理由だけよく分からない……。
197:デフォルトの名無しさん
07/08/06 22:44:21
あれ? URLリンク(www.kmonos.net)
の配列のデフォルト初期化の項には
> 動的配列は要素数0に初期化されます
て書いてある。
198:デフォルトの名無しさん
07/08/06 23:00:28
>>196
・要素数が0になった場合、変数自体がnullに書き換えられる場合がある。
199:デフォルトの名無しさん
07/08/06 23:20:21
大昔にも同じ議論をみたな。
結局なんかうやむやなまま今日に至るわけだけれども。
URLリンク(yaneu.com)
news://news.digitalmars.com:119/bu5gub$13kh$1@digitaldaemon.com
200:デフォルトの名無しさん
07/08/07 05:20:19
URLリンク(d.hatena.ne.jp)
うむむやはりこれはバグでしたか...
もやもやがすっきりしました
ありがとう賢い人たち
201:デフォルトの名無しさん
07/08/07 05:47:18
って、あげてしまった
(ご迷惑おかけしてすいません)
202:デフォルトの名無しさん
07/08/07 05:48:21
あげたら迷惑なの?
203:デフォルトの名無しさん
07/08/07 08:00:22
>>200-201
D言語をいじくる夏休みとはうらやましいかぎりだぞ
204:デフォルトの名無しさん
07/08/07 08:30:08
gdcはどうなってるんだい?
205:デフォルトの名無しさん
07/08/07 09:42:02
DFL 0.9.6 リリース
206:デフォルトの名無しさん
07/08/07 12:18:16
>>205
ちょっとコントロールが追加されたくらいかな
207:デフォルトの名無しさん
07/08/07 22:30:28
コンパイラにコンテンツアシストの支援機能を早く組み込め。
そしたらあっという間に普及するから。
208:デフォルトの名無しさん
07/08/07 22:36:51
こんな言語仕様が不安定な言語は普及しないよ。
D が流行るのは言語仕様が安定してからでいい。
209:デフォルトの名無しさん
07/08/08 02:16:30
つまりヲルターが死ぬまで流行ることはないということか
210:デフォルトの名無しさん
07/08/08 02:28:35
つまり、Rubyは、Matzが死ぬまで流行ることはないのだろうか
211:デフォルトの名無しさん
07/08/08 02:41:25
デリゲートリテラルの引数の型を推論できるようにならんかなあ。
void func(int delegate(int) dg);
func( (i) { return i * 2; } );
とか、願わくば
func(i => i * 2);
とか書きたい。
212:デフォルトの名無しさん
07/08/08 05:41:35
後のほうの記法がきもい
213:デフォルトの名無しさん
07/08/08 07:00:49
素人乙
214:デフォルトの名無しさん
07/08/08 08:36:05
ラムダ記法はほしい
215:デフォルトの名無しさん
07/08/08 08:47:55
>>211
現状の戻り値推論だけなら、要求されているdelegate型と
生成したdelegate型が異なれば型エラー出るけど、
なんかその推論をやっちゃうとエラーの元になりそうだな。
むしろ仮引数名の方を省略したい。
(int){return @int * 2;}
みたいな。
普通の関数でも省略できるとなおよし。
216:デフォルトの名無しさん
07/08/08 12:05:43
今のままでいいよ
下手に省略すると、人間もコードから内容を推論しなきゃならなくなるからめんどい
217:デフォルトの名無しさん
07/08/08 12:31:20
DとObjective-Cを混ぜてみたいな。スクリプト言語より強力になりそうな気がしてね。
218:デフォルトの名無しさん
07/08/08 17:10:17
Objective-C++は失敗作だったけどな
219:デフォルトの名無しさん
07/08/08 18:54:09
開発環境>>ライブラリ>>>>>言語仕様
って感じで、D言語は3.0になったとしてもはやらなそう
220:デフォルトの名無しさん
07/08/08 20:14:16
ヲルタータンが「言語仕様はこれにて平定!」って言わない限り無理ぽ
221:デフォルトの名無しさん
07/08/08 23:38:42
これにて閉廷!
222:デフォルトの名無しさん
07/08/08 23:59:34
これにて閉経!
223:デフォルトの名無しさん
07/08/09 00:00:11
はたして、進化をやめたDに使う価値はあるのだろうか。
224:デフォルトの名無しさん
07/08/09 00:05:11
せめて処理系がほぼ下位互換でないと使う気にはなれんね
225:デフォルトの名無しさん
07/08/09 03:31:04
>>223
価値ないな…
D言語は変り続けることが美しいのさ…
226:デフォルトの名無しさん
07/08/09 04:00:04
罷り間違ってD言語が普及してしまったら
下位互換性を重要視するようになると思うよ
227:デフォルトの名無しさん
07/08/09 04:00:49
それは困る
228:デフォルトの名無しさん
07/08/09 04:02:15
そんときゃE言語作ればいいじゃない
229:デフォルトの名無しさん
07/08/09 04:03:32
それはいい言語になりそうだな。
230:デフォルトの名無しさん
07/08/09 04:05:05
>>229
231:デフォルトの名無しさん
07/08/09 04:24:35
>>230は尊敬しているようです
232:デフォルトの名無しさん
07/08/09 04:31:07
E言語はもうあるけどな
233:デフォルトの名無しさん
07/08/09 04:34:54
かなりのものは既に使われてるよな。
何か昔一覧を載せてるサイト(不正確に見えたが)があったけど、見つからない。
234:デフォルトの名無しさん
07/08/09 07:05:25
scope File("hoge.txt") s;
なんていう表現があったら時々便利そうだなあ
いらんけど
235:デフォルトの名無しさん
07/08/09 13:15:47
>233
URLリンク(www.kmonos.net)
これか?
236:デフォルトの名無しさん
07/08/09 13:49:49
>>234
scope s = File("hoge.txt");
でいいと思うよ。
237:デフォルトの名無しさん
07/08/10 18:18:19
更新マダー
238:デフォルトの名無しさん
07/08/10 18:22:54
こっちのスレは1年以上待って、もっと待つつもりで、実装はさらに待つつもりなのにおまいらときたら
スレリンク(tech板)
239:デフォルトの名無しさん
07/08/10 23:08:43
>>238
なんだか誠に申し訳ないw
でもDはDで……仕様確定マダー?
そいやDの仕様もだいぶ増えてきた感があるけど、
まだコンパイラの実装はC++ほど大変でもないんかな?
だとしたらどっかに決定的な違いがあるんだろーか。
教えてC++の偉い人ー。
240:デフォルトの名無しさん
07/08/10 23:14:38
ウォルタたんがDの理念の一つに掲げているのに
「処理系の作りやすさ」があるから、そうなんだと思うよ。知らないけど。
241:デフォルトの名無しさん
07/08/11 02:22:03
だれかDコンパイラを自分で作ってる人とかいないのかな
242:デフォルトの名無しさん
07/08/11 02:25:12
少し前にd.D.announceに自分で作ってみたとかいう人がいたような
243:デフォルトの名無しさん
07/08/11 15:01:01
>>227
なんかわろたw
244:デフォルトの名無しさん
07/08/11 17:28:29
>>238
もうD言語使えよと言いたくなる場面ばっかりでわろた
245:デフォルトの名無しさん
07/08/11 18:00:30
DもC++0xも永遠に完成しない
246:デフォルトの名無しさん
07/08/11 18:05:45
C++ユーザがもっとDに流れてくれたらいいのに
似たような言語に人的資源が分散してるのがもったいない
247:デフォルトの名無しさん
07/08/11 18:09:41
やはりここは「ぼくらの」形式で間引きだな
248:デフォルトの名無しさん
07/08/11 18:14:44
C++用のライブラリ作ってるけど、
Dポーティングを念頭に書き換え始めてる
というかDで類似の仕様設計を書き始めてる
でも.NET用のポーティングもありかなと思い始めたり
D#マダー
249:デフォルトの名無しさん
07/08/11 18:36:03
普及するしないの分かれ目は
もはや言語がどうこうってところじゃなくなってるんだけどね
250:デフォルトの名無しさん
07/08/11 18:39:05
ちゃんと標準がTangoに置き換わるまで実質ライブラリさえ作れないような状況だろ。
今作ってもどうせ作り直しになるし。
251:デフォルトの名無しさん
07/08/11 18:54:19
本当に完全にTangoに置き換わるのなら、もうTangoでライブラリ作ればいいだけの話のような。
……本当に標準がTangoに置き換わるって信じてもいいのか?
252:デフォルトの名無しさん
07/08/11 19:01:02
>>251
それが信じられないから困る
phobosがダメなところとTangoの良いところってどんなのがある?
phobosはダメだダメだと聞くがあまり具体的には出てこなくて
まずは文字コード周りかな
253:デフォルトの名無しさん
07/08/11 19:07:14
みんなエディタなに使ってるの?
254:デフォルトの名無しさん
07/08/11 19:28:40
個人的には入出力関係はTangoの方が好きかなぁ
コンテナ(コレクション)についてもTangoがほしいね
あと、ゆくゆくはTangoでXMLもいじれるようになりそう
255:デフォルトの名無しさん
07/08/11 19:31:31
ようやくTango1.0が出そうかなっていうときにもうD2.0だもんなぁ・・・・
256:デフォルトの名無しさん
07/08/11 19:47:39
D2.0ってなにそれはおいしいの?
と思う俺とForeachRangeStatementが2.0だけってことはそろそろ対応お願いしますという
Walterタンの無言の意思表示なのではと思う俺と…
257:デフォルトの名無しさん
07/08/11 21:09:52
もうv1はバグフィックスだけだろ。
美味しい機能《えさ》はv2にしか提供されない。
258:デフォルトの名無しさん
07/08/11 21:52:10
そもそもTangoが標準になるって発言元はどこなんだぜ?
259:デフォルトの名無しさん
07/08/11 22:17:02
>>258
Tango製作陣からじゃないの
260:デフォルトの名無しさん
07/08/11 23:43:00
まぁTangoのほうがモノが良いなら自然に置き換わっていくんじゃね?
261:デフォルトの名無しさん
07/08/12 00:04:50
どっちかが完全に上位互換ならうれしいんだけどね。
混在できたっけ?
262:デフォルトの名無しさん
07/08/12 00:23:12
>>261
無理じゃなかったっけ。前に似た話出てた気がする。
もともと置換を目的に作られてるしなあ。
つか本当に>>255に同意。
なんでここで互換性ないバージョンとか出して既存ライブラリぶっちぎれるのかと。
Phobosお話になんねー、みたいな声はウォルたんに届いてないんだろうか。
263:デフォルトの名無しさん
07/08/12 00:51:04
ウォルタ「いや、他にやりたいことあるし…」
264:デフォルトの名無しさん
07/08/12 01:17:57
ウォルタ「ライブラリのためにDを止めたくないのくらいわかってくれるだろ」
265:デフォルトの名無しさん
07/08/12 01:29:21
ウォルタ「ライブラリが追随すればいいだろwwwww更新おせーんだよwwww」
266:デフォルトの名無しさん
07/08/12 01:41:46
ウォルタ「俺の勝手だろwwwwwwwwwwef9swccnj3」
267:デフォルトの名無しさん
07/08/12 01:44:39
普遍条件にinvariant()って括弧がいるのはどうにかならんかなあ。
見た目が悪すぐる
268:デフォルトの名無しさん
07/08/12 08:36:17
>>267
気にしすぎじゃね?
>>240あたりの理由で()付じゃないとダメだという可能性は?
269:デフォルトの名無しさん
07/08/12 11:03:23
ウ「本来のあるべき姿を追い求めた結果だから仕方ないだろ」
270:デフォルトの名無しさん
07/08/12 11:19:19
まぁdmd2.0のFinal Const Invariantの導入があるから整合性のために仕方がないよ。
struct{
final {int final_hoge = 0;}
const {int const_hoge = 0;}
invariant{int invariant_hoge = 0;}
}
これでinvariantだけ定数の宣言じゃなくて不変条件になると違和感が漂いすぎるし。
271:デフォルトの名無しさん
07/08/12 12:25:29
unittestにあわせて、ちょっと長いけどinvarianttestとかにしてくれりゃいいのに。
272:デフォルトの名無しさん
07/08/12 19:05:21
ちょっとD触ってみたんだけど試してみたいことがあってサンプルコード探して動かしてみようとしたら動かない、とかデフォ?
メッセージボックスに日本語出力するだけですげー時間かかって泣きそうだったわ
あとみんなは開発環境何使ってるの?
Eclipse+Descentでやってたらソースにエラーの赤線引いてあるけど見た目どこも問題ないしコンパイル通るし動作するしで微妙だった
273:デフォルトの名無しさん
07/08/12 19:11:49
>>272 D2.0系だとサンプルコードってほとんどないんじゃないかな
今公開されてるサンプルコードって大半がD1.0時代のものだと思う(しかも今のD1.0系で動くとも限らない)
少なくとも日本語の文書においては
274:デフォルトの名無しさん
07/08/12 19:22:34
>>272
まだまともなIDEはないから、俺は普通のテキストエディタで書いて、コマンドラインからビルドしとるよ。
275:デフォルトの名無しさん
07/08/12 19:24:11
俺も>>274と同じくコマンドライン(というかバッチファイル作ってダブルクリック)
ポセイドンとかどうなんだろ?
276:デフォルトの名無しさん
07/08/12 19:47:28
>>273
そーなんか
とりあえず1.0系インスコしたんだけどみんな2.0系使ってるの?
2.0系って正式リリースされてないよね?
>>274-275
そーかー
Code::BlocksとPoseidonも使ってみるよ
コード補完がないとソース書いててだるい気がするしね
277:デフォルトの名無しさん
07/08/12 20:00:11
>>276
正式リリースなんて飾り。
278:デフォルトの名無しさん
07/08/12 20:09:37
>>276
バージョンが0.001増えるだけで、大幅な書き直しを余儀なくさせられる言語。それがD
279:デフォルトの名無しさん
07/08/12 20:31:15
バージョンアップしたらHello, woldさえコンパイル通らなくなったときは泣きそうになった
280:デフォルトの名無しさん
07/08/12 20:31:53
書きまつがえた
281:デフォルトの名無しさん
07/08/12 21:54:14
>>276
予約語以外までまともにコード補完できるIDEなんてまだないかと
>>279
これのことかな s/stdout/dout/g
import std.cstream;
void main() {
stdout.writefln("Hello, world!"); // 古いコード
}
歴史は繰り返す(Tango)
Cout(Hello, world!").newline;
282:デフォルトの名無しさん
07/08/12 22:15:35
cout << "Hello, World!" << endl;
とC++みたいに出力できるのを作ったことがあるがマニピュレータ周りでモチベーションが切れて終了
283:デフォルトの名無しさん
07/08/12 22:24:48
coutなんて飾りです
284:デフォルトの名無しさん
07/08/12 22:46:27
doutとかs(td)outとかじゃないのか
285:デフォルトの名無しさん
07/08/12 23:12:09
>>282
C++のストリームの記法が便利だと思ったことは一度も無いな
286:デフォルトの名無しさん
07/08/12 23:28:32
つかC++形式の利点って何なの?
たぶんCのprintfが非型安全だから作られたんだと思うんだが、Dだと型安全な可変個引数関数が作れるわけで。
287:デフォルトの名無しさん
07/08/13 00:18:06
型安全、拡張可能、フォーマット文字列の解析が不要ってとこか
その代償として、寄せ、桁、精度、基数等の指定が必要な場合の
記述が面倒くさすぎ
ぶっちゃけ拡張可能性という面でもstreambufが継承可能であることが
重要で、入出力演算子なんてただのオモチャだと思ってる
288:デフォルトの名無しさん
07/08/13 00:32:35
tangoの方間違ってたらすまん
phobosのwriteflnの方がピンと来るのは俺だけ?
tangoのはどうなんだこれ
CoutとStdoutの使い分けとか必要なのか?
string hoge = "hoge", HOGE = "HOGE";
int a = 10, b = 20;
//phobos
writefln(hoge, a, "[%s%d]", HOGE, b);
//tango
Cout(hoge)(a)("[")(HOGE)(b)("]").newline;
Stdout.formatln("{}{}[{}{}]", hoge, a, HOGE, b);
289:デフォルトの名無しさん
07/08/13 05:32:21
Coutキタナッ
290:デフォルトの名無しさん
07/08/13 06:20:23
tx好きー。
291:デフォルトの名無しさん
07/08/13 06:44:43
Code:Blocks使ってみた
入力補完させよーとするとC++かなんかの予約語を補完してくださった
Poseidon使ってみた
日本語表示もできるし予約語の補完もできるし自分で書いたメソッドの入力補完もできるっぽい ちょっと幸せ
でもエディタの挙動とか配色がキモい たぶん変更できるんだろうけどまだあんまし触ってない
292:デフォルトの名無しさん
07/08/13 07:24:56
writefln で十分だな。
293:デフォルトの名無しさん
07/08/13 08:07:31
printfで十分だ
294:デフォルトの名無しさん
07/08/13 08:33:23
うむ
C++ ライクな入出力ストリーム表記はどうにも好きになれん
295:デフォルトの名無しさん
07/08/13 09:13:18
型安全であることと、色んなもんに出力できるという点は評価できるが、
printf ライクにそれを行うことも可能なわけで。
296:デフォルトの名無しさん
07/08/13 15:42:56
>>288
tangoはこれならstd::coutのほうがましだな
297:デフォルトの名無しさん
07/08/13 18:23:02
正直、これ位の簡易な実装で俺は良いんだけどなぁ。
void main(){
println(2,' ',3,' ',4);
}
static import std.string,std.stdio;
alias std.string.toString toString;
string toString(string x){return x;}
string toString(Object o){return o.toString;}
//構造体とか配列とか連想配列とかも同じノリで定義
void println(T...)(T x){
foreach(v;x){
string r = toString(v);
std.stdio.fwrite(r.ptr,1,r.length,std.stdio.stdout);
}
std.stdio.putc('\n',std.stdio.stdout);
}
298:デフォルトの名無しさん
07/08/13 18:26:37
結局型安全にした printf ライクなものが一番だよね。
299:デフォルトの名無しさん
07/08/13 19:43:44
writeflnに慣れすぎて手放せなくなってる
300:デフォルトの名無しさん
07/08/13 21:48:15
誰かD1.0を擬人化してみてくれ
301:デフォルトの名無しさん
07/08/13 21:52:16
>>300
スレリンク(tech板)
302:デフォルトの名無しさん
07/08/13 22:08:16
>>297
それでprintf("%08X", n);
とかはどうやりますか?
303:デフォルトの名無しさん
07/08/14 00:20:21
>>300
1.0限定かよ