- 1 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 20:16:30 ]
- プログラミング言語 D (D Programming Language) について語るスレッドです。
過去スレは >>2 ■本家 ttp://www.digitalmars.com/d/ ttp://www.kmonos.net/alang/d/ (和訳) ■コンパイラ ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家) ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド) ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ) ■参考URL ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究) ttp://dsource.org/ (dsource) ttp://www.sun-inet.or.jp/~yaneurao/dlang/ ttp://wisdom.sakura.ne.jp/programming/d/
- 191 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 05:16:50 ]
- すごい、すごいけどD1.0系列の更新が止まったように見える…
仕様が固定されたD1.0系列を使うか新機能とPhobosが見せる巻き返しを堪能するためにD2.0を使うべきか…悩ましい…
- 192 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 05:29:55 ]
- 何がすごいのかさっぱり分からん
- 193 名前:デフォルトの名無しさん [2007/10/17(水) 05:59:56 ]
- D言語
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ___ _ / ____ヽ /  ̄  ̄ \ | | /, −、, -、l /、 ヽ | _| -|○ | ○|| |・ |―-、 | , ―-、 (6 _ー っ-´、} q -´ 二 ヽ | | -⊂) \ ヽ_  ̄ ̄ノノ ノ_ ー | | | ̄ ̄|/ (_ ∪ ̄ / 、 \ \. ̄` | / ヽ ` ,.|  ̄ | | O===== | `− ´ | | _| / |
- 194 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 07:51:06 ]
- な、なんだどうした何が起こった!? 日本語訳を!
良いニュースなのか悪いニュースなのか!?
- 195 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 07:55:39 ]
- C++が使えない無能の為のプログラミング言語=D言語
- 196 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 08:10:22 ]
- ktkr
- 197 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 08:15:42 ]
- こりゃまたすごいのきたな。
- 198 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 08:24:33 ]
- てかD言語ってまだ開発してたのか
- 199 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 09:13:04 ]
- 標準ライブラリって本当にPhobosからTangoに移行するん?
- 200 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 11:54:50 ]
- >>199
定期的に話題になるよな 2.0をいじってたら、 Tangoのわなびとしか、最近思えなくなってきた。
- 201 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 12:05:40 ]
- ttp://www.digitalmars.com/d/phobos/std_variant.html
ををVariant来た! boxはいらない子になるのかなぁ・・・ !isっていつからあった?
- 202 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 12:14:31 ]
- あ、string系のaliasがconst(char)[]からinvariant(char)[]に変わったのか。
……どーいう意味を持つのかイマイチ分からない。 というか、未だに「invariant型」の動作がよく分からん。 invariant(char[]) book = "I, Robot"; って宣言したbookに関して、 book ~= " by Isaac Asimov"; book.length = 1; book = "2001 Space Odyssey"; こういう動作は別に禁止されないんだよね。invariant型って、どういう目的で使えばいいの?
- 203 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 12:32:07 ]
- >>191
D2.006の新しいPhobosの機能をD1.xに移植した人がdigitalmars.D.announsに。 std2ってやつ。
- 204 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 13:24:39 ]
- >>202
invariant(char[]) book = "I, Robot"; を invariant(char)[] book = "I, Robot"; で、意味が変わるきがするが
- 205 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 14:02:50 ]
- >>201
!isはisが導入されたときからあったと思う
- 206 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 14:11:49 ]
- >>204
それは同じ意味になる www.digitalmars.com/d/final-const-invariant.html の Invariant Doesn't Apply To Declared Symbols のあたり。
- 207 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 14:19:58 ]
- >>202
たとえば class Stream { int opApply( int delegate(ref const(char)[] line) dg ); } こういう宣言だったとしたら、 string s; foreach(line; din) if( line[0] == '#' ) s = line; writeln( "#で始まってた最後の行は", s ); このコードは期待した通りに動かないかもしれない。 Streamが内部でlineの中身を勝手に再利用してるかもしれないので。 constだと、"自分が"lineの中身を書き換えることはできなくなるけど、 他のところで書き換えが起こる可能性は否定できない。 これが class Stream { int opApply( int delegate(ref invariant(char)[] line) dg ); } こうだったら、opApplyの実装を見るまでもなく↑のコードは普通に動く。 invariantな配列の中身はもう"誰も"書き換えないので、Streamが後で 書き換えるようなことがない。 とかそういう使い方。
- 208 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 14:29:13 ]
- おい。invariant周りでコンパイル通らなくなったぞ。
まーた全部書き換えかよ…
- 209 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 14:48:24 ]
- なんでもかんでもidupつけないといけないのは気持ち悪いな
- 210 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 15:21:42 ]
- aasumeUniqueでおk
- 211 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 15:49:37 ]
- ttp://www.digitalmars.com/d/phobos/std_contracts.html
string letters() { char[] result = new char['z' - 'a' + 1]; foreach (i, ref e; result) { e = 'a' + i; } return assumeUnique(result); } これか なるほど
- 212 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 19:05:34 ]
- >>208
動作確認してなかったので翻訳してなかったんだが、 string, wstring, dstringの定義をinvariant付きにしました。 関数の定義と実装を(標準ライブラリ関数の影響も含めて)山ほど変更する必要があります。 invariantなstringを使ってみた最初の感想としては、かなり有望です。 なにがどう有望なのか試してないのでなんともいえませんが。
- 213 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 19:37:54 ]
- おいおい、phobos 張り切るのもいい加減にしろよ。tango の立場がなくなっちまうじゃないか。
- 214 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 20:01:30 ]
- walたんがTangoに「○○追加してね」っていえばいい
- 215 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 20:41:34 ]
- D2.x用のTangoは、どうなってる? もう出てる?
- 216 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 20:45:46 ]
- >>215
まだじゃね?
- 217 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 21:20:07 ]
- import std.stdio, std.contracts;
void main() { foreach(string line; lines(enforce(fopen(__FILE__)))) { write(line); } } SUGEEEE
- 218 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 21:22:39 ]
- そんな感動するようなことじゃないが、これまでなかったのが不思議だな。
- 219 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 21:31:01 ]
- そういう短いけれども案外実用的なコードがたくさん欲しいところ
- 220 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 21:31:17 ]
- >>187
解決しました。 すいません、もともとあったメモリ関係のバグが、たまたま出てきた形でした。
- 221 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 21:45:35 ]
- D言語、1系が安定しない永遠のβだった頃から注目してるけど、
1系が成熟しないままさっさと2系に移ったところを見ると 実用的になるのは3系が登場してからかなと思ってしまう。
- 222 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 21:51:38 ]
- Dは永遠にをるたんの実験言語。
実用的になるなんてあり得ないよ。
- 223 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 21:59:20 ]
- >>209-211
さっぱりわからんのだが・・・ idup付ける代わりにassumeUniqueで済むってことだけじゃないよな? 余計にタイプ数増えるんだが 本当はassumeUniqueは何のためのものなの?
- 224 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 22:05:37 ]
- >>223
idupはデータのコピーが行われるが、 assumeUniqueはコピーが行われない。
- 225 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 22:40:23 ]
- >>224
うーん そうですか もうちょっと暗黙のコピーが発生するのを許容して 明示的な指定が減るようになったらいいね
- 226 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 22:50:17 ]
- テストしてなさすぎワロス
いろいろ試してみたがdmd2.006はstd.formatが壊れてるな //>writef //testtest1010 //%s=%dvalue200 import std.stdio; void main(){ writef("test", "test", 10, 10, "\n%s=%d", "value", 200, "\n"); }
- 227 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 23:01:33 ]
- >>226
>Breaking change: std.stdio.writef can now only accept a format as its first argument.
- 228 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 23:21:22 ]
- >>227
あ 最後に書いてあるのそういうことか thx
- 229 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 23:34:02 ]
- stringにconstつけてみたりinvariantになったりするのはWalterたんからの「ソース見直せリファクタリング汁!!」というご命令に違いない!
- 230 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 23:57:41 ]
- Andrei Alexandrescuありがとう、そしてがんばれー
とエールを送っておこう
- 231 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 01:09:50 ]
- >>230
Andrei Alexandrescu先生のTMPが見られるのは今やD言語だけ!(でもない)
- 232 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 01:40:11 ]
- gdcってdmdで言うv2.0以降はあるの?
- 233 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 01:46:50 ]
- svnで対応してるよ。
- 234 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 19:31:42 ]
- >>206
ありがと しらんかった
- 235 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 00:01:06 ]
- coroutineが、phobosでほしいなぁ
- 236 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 00:14:29 ]
- そこは言語仕様に組み込むべきだろう。
- 237 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 06:13:14 ]
- dmd2.004 以降でこういうちょっと怪しいのをコンパイルしようとすると途中で固まる。
void main(){ f([[]]); } void f(int[][] a){} f(cast(int[][])[[]]); ならおk -v 付きでコンパイルすると semantic3 までは表示されるけど code が表示されずに止まってる。 何これ?
- 238 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 06:40:44 ]
- D言語で作られたアプリケーションって何があるよ
- 239 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 11:33:27 ]
- Dで作ったOS
それがDOS
- 240 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 11:37:56 ]
- ttp://www.digitalmars.com/d/phobos/std_string.html
int ifind(in const const char[] s, in const const char[] sub); なんなんだ、const だらけかよ。 inつかっても constをこれだけ使うっていうのがなんとも・・・
- 241 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 12:44:04 ]
- in const constってどういう意味ですかwwww
inって invariant const scopeだったよねwwwconst三つですかwwwww
- 242 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 13:09:17 ]
- typo
ソース見れ
- 243 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 13:36:42 ]
- D言語でstaticライブラリをつくる方法はどうやるのでしょうか。
コンパイル激早なんで、やる必要があまりないのかもしれませんが・・・
- 244 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 13:50:03 ]
- budなら
bud -lib main.d 何も使わないでやるなら dmd -c main.d lib -c -l main.lib main.obj
- 245 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 13:50:18 ]
- >>240
なんかintつけるとDDocが変なものを生成する。
- 246 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 14:18:48 ]
- static引数まだー?
- 247 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 16:20:50 ]
- >>246
なにそれ
- 248 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 16:53:40 ]
- 関数名に?入れて述語ry
そういやなんで?とか!とかは識別子にならないの?
- 249 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 17:01:03 ]
- scopeクラスが単にnew ScopeClass();でエラー出さないでしかもスコープ抜けてもデストラクタが呼ばれないですけどこれはバグ?
- 250 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 17:03:49 ]
- やっべDMD古いからかな。新しいので試してみます。一応古いのは1.020です
- 251 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 17:24:27 ]
- >>249
scope周りはバグだらけ。もうどうしようもない
- 252 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 17:40:25 ]
- 把握しました
- 253 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 17:50:04 ]
- 本当にconstとかinveriantとか必要なのか?
C++から移ってきたときはほしいなと思ったこともあったけど、現状のconstとinveriantを見てるとうざったさ以上の便利さを感じない… もっと上手い方法なかったのかな…
- 254 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 18:03:42 ]
- デリゲート便利だなw
Scheme触って帰ってきたら使わずには居られないwwww
- 255 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 19:50:18 ]
- >>253
constまわりは、まだまだこれからって感じだと思う。 現時点では文字列をimmutableにするためにしか使われてないし。 評価を下すのはまだ早いと思う。 現状のconstまわりの仕様には問題あると思うが。 文字列(配列)のスライスはコピー作らないから、文字列をimmutableにする意味はあると思うし、現時点では、 「inveriantは文字列をimmutableにするためのもの」 って割り切って、それ以外の機能は使わないようにすれば何とかやっていけそうだと俺は感じてる。
- 256 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 23:12:18 ]
- >>244
ありがとうございます 作れました!
- 257 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 02:46:33 ]
- 勇気出してD2を入れることにしたぞー!
- 258 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 07:56:12 ]
- macroって結局なんなの?
- 259 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 13:09:30 ]
- >>258
カンファレンスのをるたんのスライド見れば分かるよ。
- 260 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 14:45:02 ]
- それでも俺は1系列を使い続ける
- 261 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 16:50:22 ]
- >260
1系列は俺に任せてお前達は先に行け! まで読んだ
- 262 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 17:38:26 ]
- >>261
文字数増えてるという不思議。
- 263 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 18:20:58 ]
- >>262
つまり行間じゃなくて字間を読んだということか
- 264 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:27:45 ]
- D2.0のstring周りの改変は
暗黙のコピーがいやでしょうがない どこでどう動いてるか把握したい 文字列で、知らぬ間にメモリをちょっとでも使われるのも嫌でたまらん ってことかな。 スクリプトライクな手軽なコーディングを できるだけ殺さないように、がんばってんだよね
- 265 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 22:14:00 ]
- みんな phobos と tango のどっち使ってる?
phobos は単純明快だが機能面でちょっと不足な上にバグ多いし、 tango は機能面はある程度充実してるけどドキュメントが整備されてない上に使いにくかったりするし、 なんかこう、どっちも中途半端なんだよなぁ。
- 266 名前:デフォルトの名無しさん [2007/10/20(土) 22:28:27 ]
- >>248
全角?も駄目なんだな。これで我慢しとけ。 bool もしかしてnullですか(Object nullかどうか調べるオブジェクト) { return nullかどうか調べるオブジェクト is null; }
- 267 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 00:09:01 ]
- もしかしてnullですか?
- 268 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 00:10:25 ]
- もしかしてnullですか¿
- 269 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 00:11:09 ]
- nullですよ¡
- 270 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 03:22:06 ]
- >>264
藻前は組み込みに向いている Dが組み込みに対応するその日まで Dで生き延びろ
- 271 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 03:25:55 ]
- >>264の発言は>>264自身のことじゃなくてDの文字列仕様の意図でしょ?
- 272 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 07:58:34 ]
- >>265
両者の良いところが全部一つに集まると、 素晴らしき真のDが誕生してどんな願いも叶えてくれると伝説にはあります
- 273 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 09:51:27 ]
- >>270
げ、するどい 正直びっくりした。 組み込み屋です。 Dが早く使えないかねらってます。
- 274 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 12:02:31 ]
- ちょっと和んだ
- 275 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 13:55:30 ]
- >>273
そう考えると2.006 invariant stringは有望だなあ。 Walterたんが「リアルタイム処理ではmalloc/freeよりGCの実行制御のほうが有利なこともある」 ってるが、そういうのは確かにあるので分かる気はする。 実際free listと組み合わせるとなかなか高速に動作してくれるし。 ada並の用途になるとDも本望だろう。
- 276 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 14:37:40 ]
- >>272
それを後の人は「闇鍋」と呼んだ。
- 277 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 14:57:01 ]
- D1〜D7まで揃えるとDragonが(ry
- 278 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 15:34:37 ]
- 組み込み屋ってなにするひと?
- 279 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 15:45:17 ]
- >>278
ttp://ja.wikipedia.org/wiki/組み込みシステム
- 280 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 15:57:58 ]
- >>279
サンクス
- 281 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 17:11:50 ]
- 組み込みに関してはかなり素人で見当違いなことかもしれないんだが…
たとえばH8のマイコンがGCCのコンパイラでコンパイルできるみたいだけど、 GDCとH8を使ってD言語による組み込み向けのプログラムを作ることはできないのかな?
- 282 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 18:59:26 ]
- GDC
- 283 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 19:00:39 ]
- ごめん、途中で送ってしまった
GDCでクロスコンパイラはつくれるかもしれないが、 ターゲットが32ビットCPUでないとだめかもしれない。
- 284 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 19:01:25 ]
- tango 0.99.2を使ってるんだが、IConduitやらOutputStreamやら入出力周りの関係と用途がさっぱりわからん。
ソースによらず汎用的にストリームを扱いたいときはどのインタフェースをサポートすればいい?
- 285 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 20:22:16 ]
- >>281
去年 gdc を H8 にポートしてみた事がある。 phobos の GC がうまく動作しないところで絶賛放置中。 2日の作業じゃここらが限界だった。
- 286 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 22:06:18 ]
- GCつかわなければいけるんじゃなかろうかと一瞬考えたけど、そんなDに意味はあるのかどうか真剣に考えてしまった。
- 287 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 22:16:38 ]
- ベターC++と高速コンパイルだぜ!
- 288 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 22:41:03 ]
- GDCだと遅い罠
- 289 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 00:17:21 ]
- じゃあ意味ないんじゃね?
- 290 名前:デフォルトの名無しさん [2007/10/22(月) 00:56:13 ]
- >>284
flectioned から抜き出してみた。tango と phobos の差異を吸収するような 書き方が一番なんでないかい? static if(is(typeof((new object.Object()).toUtf8()) == char[])){ const bool inTango = true; const bool inPhobos = false; }else{ const bool inTango = false; static if(is(typeof((new object.Object()).toString()))){ const bool inPhobos = true; }else{ const bool inPhobos = false; } } static if(inTango){ import tango.stdc.stdio; } else static if(inPhobos) { import std.c.stdio; } int main() { printf("Hello world"); return 0; }
- 291 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 00:58:57 ]
- またあげちまったよ・・・すまん
|

|