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/
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 ] またあげちまったよ・・・すまん
292 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 01:23:43 ] ttp://dsource.org/projects/tangobos/browser/trunk Tangobos is a compatibility layer to allow most Phobos software to be compiled unmodified on Tango. It is effectively a port of Phobos to Tango: it is only modified to the degree required to make it compile. これってTango/Phobos共存させるのが目的なんだよな?
293 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 02:30:10 ] テラタンゴボスwww
294 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 10:56:20 ] なんというド直球ネーミングw
295 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 11:06:07 ] D言語製のブラウザってある?
296 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 12:24:25 ] >>292 Tangoboswww 見間違いかと思ったわw
297 名前:デフォルトの名無しさん [2007/10/22(月) 12:57:13 ] >>292 Tangoの上に乗っかるPhobos互換レイヤか
298 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 13:07:18 ] どっちかに統一したほうが良いように思うのは俺だけ?w
299 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 13:09:36 ] Tangoboswwwwwwwwwwwww
300 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 13:31:59 ] >>298 統一してほしいね〜 そもそも、TangoはPhobosと共存できないように 作る必要があったのだろうか?
301 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 14:03:17 ] 誰かがグレイトなライブラリを作ればいい。 どうせ D はまだ実用されてるとは言いがたい状況なんだし、 新規のライブラリがポンと出てきた所で問題は無い。
302 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 14:08:58 ] それをここで作るんですよ
303 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 14:27:52 ] Pascal型UpperCamelCaseが嫌いなのでphobos中心にマージされて欲しいと思う俺がいるが、 phobosはバージョンアップに追従するのが原則、 Tangoはそこまでやったりもしてないからなあ。 C++ユーザからの乗り換えパスとしてSTLとboost相当の移植は欲しい気がする lexical_castとかはC++では使えるけどDではtoStringその他が使えるからまあいいけど。
304 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 14:35:52 ] >>303 >lexical_cast 確かめてないけどstd.conv.toは?
305 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 16:47:31 ] makefileがわりにmake.dってファイル作ってrdmd make.d optionってやるのよさそうだね。 bud使ったほうが早いかな?むしろrdmd bud.dってかww
306 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 16:49:55 ] いまさら気づいたけどなんもよくないね
307 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 17:01:00 ] D2でライブラリ関係のコンパイル通らなすぎわろたあああああああああああ
308 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 17:31:37 ] >>303 ちゃんと「The D Style」なんてのまで存在してるのに、 そこまでlowerCamelが嫌いだったのかねぇ・・。 豊富な機能やクラス設計に「おお」と思いつつ、ドキュメントのHelloWorldを見た時点で > tango.io.Console; 「え? モジュール名・・」 > Cout("Hello...")(s).newline 「え? Coutて? UpperCamelな関数? いや()演算子持ったオブジェクト? つかなんで可変引数使わへんのん? で、newline? 構文が最終的にプロパティ参照になっちゃってるやん?」 そんなTango。
309 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 17:34:31 ] そういう話題が出ないはずないと思うんだけどなぁ・・・ なんか考えがあってのことなのかね?
310 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 17:44:08 ] Tangoは機能自体はいいんだが、俺も設計が気に食わない。
311 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 17:54:10 ] たしかにCoutはきもい void coutln(T...)(T t){ ... } とか各自定義汁ってことか?www
312 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 17:56:18 ] とりあえず動けばおkってことになってるのかな???
313 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 18:15:54 ] 自分はCoutよりStdout派。 import tango.io.Stdout; Stdout("こんにちは 世界\n"); Stdout(1, 2, 3, 4, 5).newline; int a = 5, b = 10; Stdout.format("てすと {} + {} = {}", a, b, a+b).newline;
314 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 18:33:08 ] opCallのオーバーロードは、C++のビットシフトのオーバーロードより数倍キモイ。
315 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 18:34:55 ] まぁ、なんだかんだワガママ言ってもphobosよりはOOPが生きてるし、 使いたいといえば使いたいんだよねTango。 SDLに対するSDL_image/mixer/..、C++のSTLに対するboostみたく、 phobosがコンパイラ添付の最低限ライブラリ、 Tangoが「事実上の標準」な拡張ライブラリ、とかに分かれててくれるのが理想と思う俺。 組込みとか色々タイトな分野じゃない限り、普通Tangoを被せて使うものだよ、みたいな。
316 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 19:09:10 ] ならTangoはPhobosを利用しないといけないな! つーかなんでTangoはPhobosと共存できないのwww意味不明wwwwww
317 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 19:11:50 ] Phobosは廃止でいいよwwwwwwww
318 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 19:41:58 ] そこでTangobosが登場する?? Phongoとか、ネーミングはもうちょっとなんとかならんかったのか。
319 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 19:51:41 ] Tacos
320 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 20:02:40 ] >>319 それ良さそう。
321 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 20:19:52 ] >>304 俺も使ってないけど使えると思う。 というのはともかくとして、C++はlexical_castが無いと面倒な場面があるのだが、 Dではstd.conv.toを使わなくても結構いけるのでそのへんが良い。
322 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 20:21:13 ] >>319 cはどっから来たんだよw
323 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 20:22:33 ] 無理に2つのライブラリ名入れることも無くない?