- 1 名前:デフォルトの名無しさん mailto:sage [2011/08/24(水) 06:02:12.35 ]
- プログラミング言語 D (D Programming Language) について語るスレッドです。
■前スレ D言語 Part27 hibari.2ch.net/test/read.cgi/tech/1303022487/ ■本家 www.digitalmars.com/d/ www.d-programming-language.org/ (ドキュメント) www.kmonos.net/alang/d/ (和訳) ■コンパイラ www.digitalmars.com/d/dcompiler.html (DMD, 本家) dgcc.sourceforge.net/ (GDC, gccフロントエンド) www.dsource.org/projects/ldc (LDC, バックエンドにLLVM) ■参考URL f17.aaa.livedoor.jp/~labamba/ (D言語研究) f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF) dsource.org/ (dsource) tinyurl.com/candcpp2d2 (C/C++に疲れた人のD言語2.0) www.kmonos.net/alang/wnd/ (わかったつもりになるD言語) shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか) shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座) www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画) www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games) dusers.dip.jp (D言語友の会) www.wish.sakura.ne.jp/desuno/game/Drawing (PrincessDrawing! D言語で作られた横スクロールSTG)
- 572 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:02:41.35 ]
- >>565
GC関連の関数を内部で直接呼んでいるため。 言語としてはnew式はpure扱いだが、ランタイムのGC関数がpureであるべきかは newsgroup上の議論でも明確な結論が出てなかったと思う。
- 573 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:04:05.33 ]
- >>570
直交している。Appenderがpureでない理由は>>572の通り。
- 574 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 20:20:35.80 ]
- >>571
なるほど納得した
- 575 名前:デフォルトの名無しさん [2011/12/21(水) 00:17:01.32 ]
- 直感的にはhoge.set("fuga", hoge.length);みたいな評価順の方が嬉しいかな
- 576 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 00:40:50.28 ]
- アセンブリ想像出来てれば直感的だし今のでいいと思うけど
- 577 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 00:43:41.69 ]
- 右辺で例外が起きたらと考えると、怖いな
- 578 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 01:27:27.23 ]
- opIndexAssign( "fuga", hoge.length )
こんなオーバーロードないんだっけ?
- 579 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 01:36:45.52 ]
- >>577
assert(笑);
- 580 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 01:50:49.40 ]
- >>577
STLのコンテナでfront()とpop()が分かれてる理由系の話だね ideone.com/rBvF3
- 581 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 17:13:59.45 ]
- D1系のアップデート見てて思ったんだけど
CTFEできる範囲って仕様で明確化されてるの? 仕様に沿ったコンパイラでCEFEのせいで コンパイルできる事とできない事があるってのはとても困る気がする
- 582 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 17:17:28.83 ]
- pureなものじゃない?
今@pure付けられる範囲をどんどん広くしていってる気がする
- 583 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 02:24:56.04 ]
- @safeならCTFEできる、ってのもあったような。
- 584 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 13:21:42.68 ]
- ぶっちゃけ、大抵のプログラムは、C#なりPythonなりHaskellなりGoなりの高級言語を使えばよくて、
わざわざ「Cに代わる低級言語」を持ち出す必要はない 一方で、本当にC言語に取って代わろうとするなら、 高級言語を持ち出せない、プアな環境で使えないといけない ・ポインタ演算は手放せない ・GCは使えない ・ポリモーフィズムも使えない ・テンプレートも容量を食い過ぎる ・正規表現を実行時にコンパイルするのは贅沢すぎる ・標準ライブラリーが充実させても意味が無い ・標準でないアーキテクチャをサポートしなければならない それなら、C言語で十分じゃない? 文字列型?ハッシュマップ?サードパーティ製のを使えばいい ドキュメント自動生成なら、言語仕様を変更しなくても、Pythonとかでツールを作ればいい Cのシンタックスがキモいとか、Lisp風マクロとかが欲しいと言うのなら、 JavaScriptに対するCoffeeScriptみたいな物を作ればいい
- 585 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 13:26:14.29 ]
- 哀れなD使い達を説得しにきたの?
- 586 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:35:57.36 ]
- あちこち手を伸ばしすぎて
かつて売りにしてた機能まで潰しまくる迷走ぶりについては認める
- 587 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:56:03.70 ]
- ttp://www.kmonos.net/alang/d/2.0/builtin.html
- 588 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 16:41:48.27 ]
- 複素数…
- 589 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 22:25:33.38 ]
- typedefってなんで消えたの?
あの超シンプルに型を作れるところが気に入ってたんだけど
- 590 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:06:14.50 ]
- 基本的にマクロみたいな機能は無駄です
- 591 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 09:28:03.36 ]
- それってaliasのこと?
- 592 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 10:52:52.35 ]
- alias は便利だけど危うさが漂う
もうちっと機能を狭めてもいい
- 593 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 11:15:18.32 ]
- >>590
そんなんじゃ「そうじゃねーよ俺は便利に使ってんだよ」と反論できちまう せめて「typedefあるとコンパイラの実装が超大変になるんだよ、わかれよ」くらい言ってほしい
- 594 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 11:43:45.05 ]
- strong typedefはまともにやるとめんどくさいからな。
t f(t, t)って関数があってtからuを新たに作ったときに、t f(u, t)として使えるのが正しいのか t f(u, u)が正しいのかu f(u, u)が正しいのか。
- 595 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 12:11:48.42 ]
- ユーザ定義リテラルがあれば
複素数をビルトイン型にしなくてもいいような気もする (パフォーマンス的には分からんが)
- 596 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 12:14:25.88 ]
- >>594
やっと納得した uがどこまでtか微妙なのが仕様的に面倒なのね あれ、でもenum…
- 597 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 12:56:34.72 ]
- >>595
複素数がライブラリに移動したときにその話はあった 結論から言うとcomplex型とimaginary型を併用することでパフォーマンス的にも問題なく解消する ただし記述が面倒だからユーザー定義リテラルが必須
- 598 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 19:54:02.30 ]
- ユーザー定義リテラルを入れたいから複素数リテラルをなくしたのか?
ユーザー定義リテラルを入れなくても、複素数リテラルがあれば、複素数についてのパフォーマンスは元々解決されていたんでしょう。 なくす必要性がまだ見えないんだよね
- 599 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 20:07:50.18 ]
- コンパイラ組みこみじゃなく、
ライブラリの存在を前提としたシンタックスシュガー化するということかと。 Dならstring→immutable char[]が似ているし、 C#のstringはSystem.Stringの別名だ(と思う)し。
- 600 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 20:17:25.54 ]
- ユーザー定義リテラルって何ぞ・・・? ガクガクガタガタ
- 601 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 20:19:04.64 ]
- C99が複素数を言語組み込み、C++が複素数をライブラリ提供してるけど
gccはバイナリ互換性を持たせるために、「コイツは内部的に複素数だ」ってpragma用意してるよね。 Dの複素数もC99の複素数とバイナリ互換性を持ってるはずだが、ライブラリ版はどうなってるんだろう。
- 602 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 03:55:23.75 ]
- >>599
そうするのはなぜだか知ってますか? ユーザー定義リテラルを導入するならば複素数だけ優遇する必要がないから?
- 603 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:15:55.26 ]
- octal!100はどうするんだよ…。
octだったかな
- 604 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:14:29.54 ]
- dlang.org てのがまた出来てる
こっちに移るんかな
- 605 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:11:57.58 ]
- 当面の間はミラーリングして様子見じゃないの
- 606 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 01:33:27.78 ]
- const(char[])がconst(char)[]に暗黙変換されるようになったんだってな。なんか不具合出ないのかな
- 607 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 07:19:58.60 ]
- 仕様も見ずに言うけどref引数だと変換されないんだよね?
- 608 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 20:31:46.19 ]
- ちょっと生理させてくれ
const(char)[]:中身を書き換えられない配列 const(char[]):?? Cのchar a const[] ?? いやそれじゃchar a[]と同じか
- 609 名前:デフォルトの名無しさん [2011/12/26(月) 23:07:10.07 ]
- const(char[]) a, b;
a = b; が出来ないんじゃなかった?
- 610 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 23:17:27.56 ]
- ・・・えっち
- 611 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:56:23.39 ]
- 月桂冠
- 612 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 08:42:56.37 ]
- 厶板ではここが一番落ち着く
- 613 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 11:50:14.46 ]
- わかるわ
俺もD言語に全く興味ないのに覗いてるしな
- 614 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 12:05:34.60 ]
- あれ、俺がいる
- 615 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 13:37:36.63 ]
- 逃げない奴はよく訓練されたD言語erだ
- 616 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 21:03:32.31 ]
- D言語が落ち着くまで待ち続けるぜ
- 617 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 21:08:22.82 ]
- UFCSとラムダ式が入るらしい
まだまだ若者には負けんよ
- 618 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 21:21:05.99 ]
- UFCSって何?
- 619 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 21:22:04.16 ]
- Windows版64bit対応くらいしてくり
- 620 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 21:23:30.80 ]
- Universal Fire Contol System
- 621 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 21:47:40.01 ]
- これで敵軍も拾った武器で戦えるようになるね! っておい
- 622 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 10:39:17.88 ]
- 2.057でもHello, World1MBのまま?
- 623 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 13:05:42.51 ]
- import std.stdio;
void main() { writeln("hello, world."); } ↑に -O -relese -inline 付けて 933404byte=911.5kbyteだった
- 624 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 14:06:17.81 ]
- クソだな
- 625 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:43:07.33 ]
- >>622
2.058から220KBに減るよ
- 626 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:50:05.25 ]
- 別にでかくても実害ないとは思ってるが、小さいバイナリ好きなのもちょっとわかる
- 627 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:58:44.05 ]
- >>625
リリース直後にそういう話が出てたから対応済みかと思ってたわ 2.057 に移行する意欲が減退・・・冬眠でもするか
- 628 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 16:43:49.87 ]
- サイズってそんなに重要?
配布するにしても7zとか使えば誤差みたいなもんだと思うんだけどなあ
- 629 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 17:50:25.84 ]
- その辺はPyの文法が許せるかとか
MyClassName instance = new MyClassName(); の冗長性が許せるかとか そういうレベルの話だと思う。 気にする人もいればそうでない人もいる。
- 630 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 17:52:43.48 ]
- 小さいプログラムだと結構嫌だな、サイズでかいの
まあそういうのはDなんか使わないでスクリプト言語でも使ってろって話なんだけど
- 631 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:46:43.46 ]
- 公開したり、他の人へあげるの、躊躇するよね
大した機能もないのに1MBだと、何か仕込んでるじゃないと勘ぐられそうでw
- 632 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:04:03.41 ]
- upx使うと147kbまでがっつりと減った。
こっちはこっちで抵抗あるとは思うが、いちおう。 しかし900kbってなんかDelphiを思わせるサイズだ。 Dってアルファベットになんか呪いでもあるのかとw
- 633 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:13:50.50 ]
- Deburin
- 634 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:19:14.70 ]
- そのファイルサイズ、大きいように見えるでしょ?
でも、実際にはOSのシステムファイルと共通してる部分が多いから、実際にはそんなにサイズは食ってないんです。
- 635 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:41:09.33 ]
- いや表示されてるだけサイズ食ってるだろw
ゼロパディングされてるわけでもあるまいし
- 636 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:41:48.93 ]
- 実際に900KB食ってるだろ
- 637 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:43:30.61 ]
- これが本当のエクササイズ
- 638 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 09:47:22.63 ]
- upx使うと減るってことは冗長な記述が多いってことか……
- 639 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:49:18.74 ]
- Dは大らかな人達が開発してるんだよ
ファイルサイズくらいどうってことないよ
- 640 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:14:24.01 ]
- 649 デフォルトの名無しさん [sage] 2011/12/29(木) 14:50:37.28 ID: Be:
学生プログラマ日本一決定戦(予選は社会人も参加可) ttp://codevs.jp/howto.html 現在予選開催中 応募締切 2012.1.6 12:00 おもしろいことやっているじゃん。誰か今から参加しろよ。
- 641 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:12:06.58 ]
- >>640
盛り上がってないからって あちこちで宣伝すんなよ
- 642 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 19:03:34.97 ]
- >>635
バイナリエディタでexe見てみたら、ゼロばかり並んでるw
- 643 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:32:50.15 ]
- タワーディフェンスだと・・・?
codevs.jp/rule.html
- 644 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:40:47.22 ]
- Watch out, or you may attract a thunderbolt!!
- 645 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 22:13:18.43 ]
- 久々にJavaScriptで書いてみたが、コンパイル時型チェックがないのは面倒ではあるな
大規模プログラミングでこれは使えないだろうとは思った。
- 646 名前:デフォルトの名無しさん mailto:sageman [2011/12/30(金) 12:35:56.70 ]
- だが、それがいい
- 647 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:45:55.76 ]
- 近頃のDはコンパイラアップデートしても割とすぐコンパイルできる代わりに
端々で以前と違う挙動をしてアプリをバグらせてくれる これはいいものだ
- 648 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:54:14.69 ]
- 年内今日明日で何か作る
- 649 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:31:39.90 ]
- import std.xml;
import std.stdio; void main() { auto doc = new Document(new Tag("root")); auto e = new Element("elem"); e.tag.attr["attr"] = `"quot"`; // '"'入りの文字列 doc ~= e; writeln(std.string.join(doc.pretty(1),"\n")); } $ dmd -run x.d <root> <elem attr=""quot"" /> </root> 以前std.xmlで属性がエスケープされないって話があって、確か直ったはずなんだけど どうして戻ってるの…
- 650 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 18:11:03.14 ]
- std.xmlってなくなるんじゃないの?
- 651 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 18:21:06.27 ]
- Cのlongと同じ型!みたいなエイリアスが詰まったモジュールとかありませんか?
- 652 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 19:21:53.92 ]
- >>650
無くなるのはいいけどいつまで経っても無くならないなぁ 代替手段ができるまではちゃんとメンテしてほしす
- 653 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 21:13:57.83 ]
- >>651
Cはプリミティブ型のバイト数決まってないから無理
- 654 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 21:54:49.34 ]
- >>653
だからこそdmcの型と対応するaliasが欲しいって話じゃね?
- 655 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:31:26.59 ]
- version か何かで分岐すれば良い
- 656 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:55:24.04 ]
- それをユーザ側でいちいち用意するのは馬鹿らしいってことじゃないの?
intptr_tはあるけどな
- 657 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 08:00:29.16 ]
- 使う人いるのか、いないだろうな
他のライブラリポーティングするにしても大抵Uint8とかGLintみたいにそのライブラリ固有で型定義してるし
- 658 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 08:35:48.82 ]
- typedef long HogeLibInteger;
D語に訳すにはどうすればいいんでしょうか
- 659 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 09:26:42.03 ]
- alias long HogeLibInteger;
- 660 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:51:22.55 ]
- typedefがオワコンになった今、今更キーワードaliasをtypedefに戻せない辺りに哀愁を感じる
- 661 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:02:11.71 ]
- 3.0に期待
- 662 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:30:12.61 ]
- @strong alias
こんな感じで
- 663 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 20:10:52.35 ]
- どっちでもいいけどななー
typedefに戻すメリットもたいしたものないし
- 664 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 21:16:57.34 ]
- typedefってJavaのgotoみたいな永久欠番になるのかな
- 665 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 21:18:15.30 ]
- 3.0開発し始めたら
アンドレイ「いいこと考えた。1行で完全に新しい型を定義できる機能とか新しくね?」 ウォルたん「いいね!なぜかtypedefってキーワードが空いてるからそれ使おう」 ってなるよ
- 666 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 21:38:40.28 ]
- typedefの代わりに、structで包めばいいかな
- 667 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 21:55:14.94 ]
- 別にstrong typedefは新しい機能でもなんでもないぞ。C言語由来の型システムとはなじまないってだけで。
- 668 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:28:12.64 ]
- リファクタリング...ひらめき...実装...リリース!
- 669 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 01:23:56.49 ]
- 灰になった!
- 670 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 04:42:41.23 ]
- 代替手段ができるまではメンテして欲しいよな
- 671 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 09:48:04.67 ]
- 代替手段ができるできる詐欺である可能性もあるからな
そろそろD言語も元年を標榜してみる?
- 672 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 20:42:49.91 ]
- -propertyへの対応で元日終わりそう
|

|