[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 03/03 02:04 / Filesize : 146 KB / Number-of Response : 879
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

D言語 Part28



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)

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への対応で元日終わりそう

673 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 21:34:04.83 ]
あれ?

int func1() { return 1; }
@property int func2() { return 1; }

void func3(int i) { }
@property void func4(int i) { }

void main() {
 int i;
// i = func1; // -propertyだとコンパイルエラー
 i = func2;

 func3 = i; // コンパイルできる…
 func4 = i;
}

これってそういう仕様なの?

674 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:53:20.19 ]
Dって引数以外でref変数あるの?

675 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 10:10:17.53 ]
>>674
関数の返り値はrefにできる。
変数自体には指定できないけど、ポインタやクラスで代替可能。

676 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 10:50:07.97 ]
ありがとうございます。おとなしくポインタ使います

677 名前:デフォルトの名無しさん [2012/01/02(月) 11:24:20.97 ]
ポインヨだろ 間違えるな

678 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 14:35:37.56 ]
ポインティーヌ



679 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 18:08:52.92 ]
>>673
https://github.com/D-Programming-Language/dmd/pull/279
パッチを出したがまだマージされていない

680 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 18:17:05.66 ]
>>649
ざっとstd.xmlのコード見てみたが、
> e.tag.attr["attr"] = `"quot"`; // '"'入りの文字列
はTagクラスのpublicなattrフィールド(連想配列)に直接値を設定しているから、
encode/decodeとか何も動かない。

つまりそんな機能は元から無い様に見える。

681 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 19:20:56.52 ]
Tagクラスの toNonEndString のところ
decodeじゃなくて、encodeにすべきなんじゃないのか?

682 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:03:47.76 ]
>>681
ああ、そっち(出力)の方か。確かにそこをencodeにすると、
outputがエンコードされるようになるな。

誰かbugzillaにレポート投げてくれればfixされるかも。

683 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 22:54:27.85 ]
>>679
やっぱバグなのね。ありがと

つまり次のバージョンでもう半分の-property地獄を体験することになるわけだな
これだからDはやめらんねぇ!

684 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 00:42:58.19 ]
std.xml Commentクラスのコンストラクタ内
× if (content == "-" || content.indexOf("==") != -1)
○ if (content == "-" || content.indexOf("--") != -1)

685 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 05:59:45.30 ]
おお
やっぱ消えると分かっていてもメンテしてくれないと困るな

686 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 06:00:41.72 ]
あるいはguthubで特定のソースに対するpatchを簡単に絞り込めないのかな

687 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 14:21:43.58 ]
ネスト関数に事前条件無しで事後条件書くと構文エラーになるけど、
事前条件有りで事後条件書くとコンパイル通って動くんだけど、なんか理由があるのかな?

688 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 21:12:23.26 ]
>>687
手元で試したら全部通ったけど、どんなコード書いたの?



689 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 22:31:29.87 ]
>>688

void main()
{
string foo()
//in
//{
//}
out (result)
{
assert(result.length == 0);
}
body
{
return null;
}
}

__EOF__

このままコンパイルしようとすると構文エラーで通らない。コメントアウトすると通る。
ちなみにコンパイラはDMD64(v2.057)をUbuntu向けパッケージからインストールしたもの。

690 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 22:35:18.75 ]
エラーメッセージはこんな感じ

d.d(7): found 'foo' when expecting ';' following statement
d.d(7): expression expected, not ')'
d.d(7): found 'out' when expecting ')'
d.d(8): found '{' when expecting ';' following statement
d.d(11): Declaration expected, not 'body'
d.d(14): unrecognized declaration

691 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 23:08:59.74 ]
それ多分ウォルターの自作自演だから

692 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:21:59.25 ]
>>689
パーザーの問題。DMDのパーザーは手書きだからこういう抜けが未だにある。
in/outなしでbodyだけ付けるのも同じようにrejectされるな。

原因は判ったのでパッチを書いておくが、bugzillaはどうする?
自分で投げてみるいいチャンスかも。

693 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:32:34.95 ]
ちなみにテストコードはこれ

void main()
{
size_t foo() in{} out{} body{ return 0; } // OK
size_t bar() /*in{}*/ out{} body{ return 0; } // NG1
size_t baz() /*in{} out{}*/ body{ return 0; } // NG2
}


694 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 03:41:31.25 ]
あ、仮引数の省略ってできたっけ?

695 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 03:42:00.71 ]
あと使わない実引数の省略もか

696 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 09:52:43.56 ]
>>694
仮引数の省略は不可。
一応、可変個引数で似たようなことは出来るが、余計めんどくさい・・・

>>695
デフォルト引数が設定されている引数については省略可。

697 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 12:15:29.91 ]
いやそうでなくて、変数名の省略

698 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 13:06:37.84 ]
変数名省略できる言語なんかあるのか?



699 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 13:13:57.12 ]
timerStart( 1000, (Timer,EventArgs){ doSomeThing(); } );

こういうのが書ければいいってことでしょ

700 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 13:17:33.72 ]
長い変数名を書くのが面倒で、短い変数名にしたいって事なら、alias使えばおk。
クラスや構造体の参照を簡略化したいなら、with文を使うのもあり。

型名を書くのを省略したいという事なら、残念ながらDでは出来ません。
関数オブジェクトを簡単に作りたいなら、関数リテラルを使えばおk。
型が違うだけで、処理の内容が同じ関数を書くのが嫌という話なら、テンプレートを使えばおk






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<146KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef