1 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 23:00:35 ] プログラミング言語 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://tinyurl.com/3da5oa (C/C++に疲れた人のD言語) ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語) ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか) ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)
411 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:48:22 ] >>408 それくらいの関数って作れなかったっけ?
412 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:23:48 ] yes. プロパティのための構文糖。
413 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:24:57 ] リロし忘れてたごめんorz 答え方まで似てるってのが笑える。
414 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:31:14 ] >>411 CTFEできないとダメだから自前でこしらえるしかない、って言いたかったのさ
415 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:36:56 ] >>414 あーなるほど。さんくすこ
416 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 11:30:03 ] >>410 ,412 なるほど、Ruby チックでいいね
417 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 20:19:50 ] それってプロパティじゃない関数までgetterとして振舞うってことだよな。 LL好きにはいいんだろうけど、ちょっとやだな。 getter/setter相当がオーバーロードされているときと、 getterのみはローカルキーワードで対応ってならんのかな。
418 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 21:52:02 ] 引数がない関数にわざわざ()をつける必要がないってのは自然な感じがするんだけどなあ。
419 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:01:44 ] まあ副作用が無ければ自然に思える。
420 名前:デフォルトの名無しさん [2008/01/07(月) 22:25:16 ] その情報を取り出すことで何かが変化するのなら、それを使用するときに変化すると言うことが明確でなければならない。 つまり関数には後ろに「( )」が必要。
421 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:47:17 ] >>417-419 Delphiも、引数なし関数は省略できたな。 >>420 上の行としたの行がつながらん。 ()があれば、必ず副作用なるわけではないでしょう? 副作用があるかどうかは、メソッド名とドキュメントで明示すべき。
422 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:49:44 ] 命名をちゃんとしとけばそれほど違和感ないと思う。 process.kill thread.start window.close stream.flush something.toString
423 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:55:44 ] 基本的に、名詞はプロパティ、動詞はメソッドというのが一般的じゃないかな。
424 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 03:06:26 ] そういや、Rubyも括弧いらないんだよな。
425 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 07:19:29 ] Ruby で慣れてるから副作用があろうがなかろうが括弧無しで違和感ないわ
426 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 10:57:58 ] >>417 個人的には変数がクラス外部からはconstに見えるアクセス制御がほしい。 class Foo { int hoge_; int hoge() { return hoge_; } } とか書くのも冗長、最適化されるか分からないのが嫌、みたいな。 っつかそういう制御っていまできましたっけ?
427 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 12:32:09 ] >>426 constメンバ関数 class Bar {} class Foo { int hoge_; const int hoge() { return hoge_; } Bar bar_; this() { bar_ = new Bar; } const const(Bar) bar() { return bar_; } }
428 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:37:46 ] そういうことじゃなかろう。
429 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:44:09 ] readonlyにするってこと?
430 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:46:40 ] 話ぶったきるが、連想配列では char[][char[]] m; m["foo"] ~= "bar"; と m["foo"] が lvalue になるんだけど、自分で作ったクラスが opIindex で配列を返すと 当然のことながら lvalue にならない。どうにか関数で配列の参照を返すことってできんだろうか?
431 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:08:07 ] opIndexAssign? ~= みたいな複合演算子は使えないけど。
432 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:42:51 ] それか、プロキシオブジェクトを返すか、だね。
433 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:07:09 ] phobosにmap, filter, reduceとか配列操作関数が欲しいよう
434 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:15:26 ] >>431 代入(=)じゃなくて連結(~=)したいんだ。 いちいちプロキシオブジェクト作るのは面倒だし、困ったものだ。 あと、配列とかにも演算があるんだから opCmp とか呼べりゃ良いのに・・・ ソート用に比較するときに == と < (または > ) の2回比較しなければいけないから困る。 細かいところで融通きかんよなぁ。
435 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:19:52 ] >433 Lisp屋さんか?それともPython屋さんか?
436 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:37:02 ] >>434 インデクサやスライサの複合代入がオーバーロードしたいって要望はずっと前からあるが、 実現される兆しはないな。プロキシオブジェクト返すしかなさそう。 TypeInfo使えば、プリミティブ型を含めて任意の型の比較が汎用的に出来るよ。 int[] x = [1, 2, 3], y = [1, 2]; writeln(typeid(int[]).compare(&x, &y));
437 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 14:08:13 ] java7で言語仕様に盛り込まれるというプロパティ仕様がかなり羨ましくてしょうがない。 お決まりの実装は自動生成してくれたり……をるたんも影響受けてくれないかなぁ。
438 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 17:02:35 ] >>437 詳細ちぼん
439 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:34:02 ] >>438 journal.mycom.co.jp/articles/2007/05/16/java7/index.html あ、でもこれだと「フィールドとプロパティで名前がかぶるからフィールドに_つけなきゃ」 とかの悩みが解決できないなぁ……いや、内部からもプロパティでアクセスすりゃいいかな。
440 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:41:32 ] >>439 > 内部からもプロパティでアクセスすりゃいいかな。 継承に影響が出るから、別の意図が無ければそうすべきだよ。
441 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 20:09:00 ] >>224-226 の話だが、eBook版が現地時間の1/7からゲット可能になってるらしいぞ。 www.dsource.org/projects/tango/wiki/LearnToTangoWithD なんてのもできてた。 人柱レポ頼む。
442 名前:434 mailto:sage [2008/01/09(水) 22:58:21 ] >>436 おおお、そんな方法があったのか。ありがとう。 というか、インスタンスが同じかどうか調べる(x is y 式と同じ)ものだと思ってたよ。 opCmp は呼べないのにどういう仕組みになってんだろ。。
443 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 23:26:05 ] >>442 std.typeinfo以下に全部ソースあるから読んどくといいよ。
444 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 07:07:30 ] >>439 なるほど。 ありがとう これはいい文法砂糖
445 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 03:01:09 ] >>353 アイ ウンコ ナウ と読んでるでのは俺だけじゃないはず
446 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 09:48:44 ] お前だけだろw
447 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 05:07:50 ] ウンキングナウ!
448 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 16:06:46 ] 動きないのかなあ
449 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:04:37 ] D forum からネタ www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=64888
450 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:40:17 ] WPFでウィンドウを表示するのには成功したんだが、 イベントの受け取りをどうするか…
451 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:27:53 ] std.threadにsleepがないんだが、どっか別の場所にある?
452 名前:デフォルトの名無しさん [2008/01/14(月) 19:42:43 ] $ find std -name '*.d' -exec grep -H 'sleep' \{\} \; std/c/time.d:void sleep(time_t); std/c/time.d:void usleep(uint); std/c/time.d:void msleep(uint);
453 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:51:30 ] d 今更だがphobos手抜きすぎる気がしてきた
454 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:50:08 ] 言語仕様は素晴らしいが開発環境とライブラリが貧弱すぎて使い物にならないのがD。
455 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:52:41 ] 言語使用はC++なみに複雑で全然素晴らしくない。 C++の焼き直しに過ぎない。
456 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:55:45 ] 言語仕様が素晴らしいと思われるようにころころ言語仕様を変更してるから、 開発環境とライブラリが成熟しなくて、結局使い物にならないのがD。
457 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:00:35 ] C++のように現実的な限界を認めてさっさとライブラリや文法を 固めてしまった方がはるかに現実的なのに。
458 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:02:04 ] Dは実用言語を目指した実験言語です
459 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:04:47 ] こんなところでケチ付けても、をるたんは日本語の掲示板なんて見ないよ。
460 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:28:21 ] >>457 それはPython
461 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:34:55 ] 来年で10年だし そろそろ固まってもいいころだと思うんだが
462 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:52:40 ] Dの初心者向け解説を一通り見た感想なんだけど。 C++のキモ過ぎに絶えられない人。 英語読めない人。 せいぜい趣味の範囲。 windowsが主でパソコン(PC)しか見えてない人。 それ以外mac, linux, unixにあんまり関心ない人。 C++に抵抗があって、java, C#以外を考えるなら、 objective-cでいいかなと思うけど、英語勉強しないとねw Dなんて、いまだに実用(プロジェクト・個人でも)で使うのは怖くてできないし、 おぼえようにも仕様が複雑すぎ・リテラルが多すぎで、結局C++とかわんないw ということで、C++と同じくwindows向けのオナニー言語ってことだと思った。 この辺が一向に流行らない理由じゃないかな。 ちなみに、dmcは結構好きだけど。
463 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:00:30 ] D は Windows 以外でも使えるが・・・。
464 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:05:00 ] ニュースグループ読んでる感じだと、非Windows環境での話題のほうが多いぞ
465 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:08:46 ] つか言語がwindows向けってどういうことだ
466 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:16:04 ] windows(とlinux)がターゲットだからまずwinからサポート・実装される。次が非windows。 でもパソコンがターゲットならvmのjavaかc#でいいよ。 次世代目指すとかデスクトップ(win, gnome)とかターゲットかと思えば、 その割には、dはguiとか標準で持ってないし、一体何をしたいんだが理解に苦しむ。 dを追いかけるよりも他の言語やunixを追いかけたほうが日本人にはいいと思った。 ハードならcや分野専用のカスタマイズ言語(cgとか)があるし。 一応、嘆き。
467 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:16:36 ] >>462 日本語でおk
468 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:18:13 ] デーモンとか書くの楽になるならDもいいんだけど
469 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:19:07 ] >467 おまえ馬鹿じゃね? >>462 の言ってることはめちゃくちゃ明解
470 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:20:05 ] >>465 PCが主体で、携帯とかPDAとかじゃなくて、デスクトップ向けってことです。 ほぼwindowsの牙城というか。 C++にGCが標準で搭載されれば(bohem gcでも)、Dの存在価値は薄くなるかなってw
471 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:22:50 ] 正式版が出てから急にシェアが増えたのはどう説明するんだろ>>257 対してC++のシェアはDの伸び以上に減ってるんだよな 言語が増えた今、C++は用途が限定されたオナニー言語になりつつあるという事だ
472 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:33:07 ] C++ はプログラマのオナニー向けじゃなく、コミュニティのオナニー向けだろ。 俺は Boost のイカれ具合とそれを崇拝する信者どもに嫌気が指した。
473 名前:デフォルトの名無しさん [2008/01/14(月) 23:35:06 ] なんだ自演がはじまったのか
474 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:36:16 ] Dの目的のなさも似たようなもんじゃないか? どうせC++についていけないでDに逃げてきたんだろうし。
475 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:37:45 ] 0xスレでやれ
476 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:38:00 ] C++は標準化委員会があるからまだいいほうだろ。
477 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:43:39 ] >>476 Boost の lambda とか言われたままに採用せずに、あんなもん言語仕様のひとつに組み込めよ、と思う。 なんでもかんでも template で generic programming って間違った進化だろ。 で、こういうこと言うとパラダイムシフトできないアホグラマがどうのとか。 スレ違いだからこのへんにするが。
478 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:45:23 ] C++についていけなかった香具師らはRubyに逃げた
479 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:47:58 ] >>477 まあ今の言語の群雄割拠は地球の歴史でいうと先カンブリア紀のようなもんだからなぁ
480 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:04:41 ] パーサーが実質世界に一つしかなくてしかもオープンソースというのは C++ からしたら天国じゃないか
481 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:23:46 ] 同じ事が近いコーディングコストで達成できるのであれば、言語仕様は小さい程いい。 何でもかんでも言語仕様に取り込みゃいいってもんじゃない。
482 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:28:54 ] >>481 構文や意味に誤りがあった場合にまともなエラー表示ができていない。 達成できてるとは言い難い。
483 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:30:20 ] コンパイラが実装しなけりゃ絵に描いた餅。 export の二の轍を踏むだけ。
484 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:32:13 ] Dの設計・言語使用に携わっている人たちが、そもそもC++についていけなかった件について。
485 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:32:45 ] export は実装が難しすぎたからだろ。 lambda の実装ごときに何の問題があると。
486 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:34:34 ] >>449 forumに書き込んでる暇があれば自分で移植しろという感じだな
487 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:35:32 ] この様子だと、Dは実用とか稼動とかとは程遠いですね。 けっきょくは、better c++ なんでしょうか。 また1年後ぐらいにこのスレにきますわw
488 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:36:50 ] >言語仕様は小さい程いい。 D見るとつくづくそう思うよ。 バグは言語仕様に対して指数関数的に増えるからな const周りの仕様変更でfinalメンバ関数の挙動がおかしくなったりとか そういうのにぶつかると絶望感感じるよ。
489 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:38:38 ] 仕様が増えれば、それだけ実装コストがかかるのは当然だろ。 言語は実装されて初めて意味を持つんだから、普及させたけりゃ仕様は少ない方がいい。 さらに、覚える方も楽だしね。 さらに、D の設計思想にある 「構文解析と意味解析を分離する」 が達成されていない C++ で 新たに仕様を増やしたときの実装コストはいかほどのものかちったぁ考えようぜ。 boost をそのまま取り込むとなれば実装コストは名前ちょっといじる程度。 この差は非常に大きい。
490 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:41:29 ] >>477 仕様に組み込みたい気持ちは分かりますが、Cの言語仕様にラムダはいかんでしょ。 あなた、プログラム言語のことをちゃんと学んでないようですね。 パラダイムとかテンプレートもいいたいこと分かるんですけど、世の中にはもっとキモイのがいるんで、 そういうの見ると少しはC++のそれも理解できるかとw 正規表現で不定方程式を解く
491 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:45:32 ] それは理解できるが、lamda プログラミングは素晴らしい!なんて語りながら 現実があれじゃどうかと思うぜ。あんなのIOCCCに応募するようなコードだろ。 マクロでマイ言語作って叩かれた25年前から何も変わってない。
492 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:16:36 ] Cのコンパイラも書いたことない奴らがDの設計思想とかぬかすなよ おこちゃまはwinでrubyでいいからw
493 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:17:26 ] Dスレにまでいつものが湧くようになったか。 スルーしとけ
494 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:17:43 ] windowsならvbaで決定だな。
495 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:19:57 ] >>491 ラムダは制御には向いてませんよ。Cは制御に向いてますよ。 あなたに必要なのは、そういうところだと思います。
496 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:20:02 ] >>487 仕事で使ってる俺から言わせてもらうと 実用とか稼働とかとはほど遠いから趣味で使うのがいいよ あと1年後じゃ無理だから5年後においでw
497 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:22:07 ] >>484 誤れ!アンドレイ・アンドレスクに誤れ!
498 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:31:45 ] それにしても、クロージャ実現したことだし、 そろそろDにもラムダ記法導入して欲しいよね。
499 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 02:23:07 ] >>497 誤ってるのはお前の書いた名前だw
500 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 06:06:19 ] アインシュタインがオナニー言語を超えてるの、みたいな事を昔言ってた人が再び降臨したのか
501 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 06:38:16 ] 更新があったのかと思ったじゃないか あーもーつまんね
502 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 07:27:12 ] 結局なんなの 実の無い話があっただけ?
503 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 07:40:38 ] オナニー文章の中には頻繁にオナニー呼ばわりが登場する、 という毎度の傾向がまた一つ見られただけです。
504 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 08:34:10 ] DMD 1.020 って事は GDC だとまだクロージャは使えないの?
505 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:09:03 ] shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all これでもみておちつこうぜ
506 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 21:25:55 ] g++に負けるのかー
507 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 21:32:53 ] C++ ごとき風前の灯 shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all&calc=Calculate&xfullcpu=1&xloc=1 コードが冗長過ぎだもんね
508 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 21:40:55 ] >>507 生温い ttp://tinyurl.com/39ap2z
509 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:34:47 ] HDDが消去されます
510 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:48:14 ] あるDLLからインポートライブラリ作って、ダイナミックリンクし、 このDLLの関数をmainから直に呼べば問題なく動くのに、 オブジェクト指向なラッパとして、クラスを作ってメンバ関数から呼ぶと起動すらできずに実行時エラー 「アプリケーションを正しく初期化できませんでした (0xc0000005)。」が出る。 このクラスをプログラム内で一回も使っていなくても、定義しただけで起動できなくなる。 こんな奇妙な現象に悩まされているのですが、一体どんな原因が考えられますか。
511 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 23:22:58 ] >>510 再現コード+DLLを、どっかにアップしたらどう