トップページ⇒tech
962コメント242KB

D言語 Part24

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/01/26(火) 00:06:57
プログラミング言語 D (D Programming Language) について語るスレッドです。

■前スレ
http://pc12.2ch.net/test/read.cgi/tech/1253443684/

■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)

■コンパイラ
http://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
http://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
http://www.dsource.org/projects/ldc (LDC, バックエンドにLLVM)

■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF)
ttp://dsource.org/ (dsource)
ttp://tinyurl.com/candcpp2d2 (C/C++に疲れた人のD言語2.0)
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の入門講座)
ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画)
ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games)
ttp://dusers.dip.jp (D言語友の会)
ttp://www.wish.sakura.ne.jp/desuno/game/Drawing (PrincessDrawing! D言語で作られた横スクロールSTG)

>>2へ続く
0002デフォルトの名無しさん2010/01/26(火) 00:08:21
■ IDE
ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks)
ttp://www.dprogramming.com/entice.php (Entice Designer)
ttp://www.dsource.org/projects/descent (Descent)
ttp://www.dsource.org/projects/poseidon (Poseidon)
ttp://alexanderbothe.com/?id=27 (D-IDE)
ttp://codepoet.sourceforge.net (CodePoet ※計画中)

■過去スレ、関連スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=D%8C%BE%8C%EA&sf=2&all=on&view=table&shw=5000

■その他関連スレ
Eclipse統合M28【Java/C/PHP/Ruby/Python/Perl】
http://pc12.2ch.net/test/read.cgi/tech/1247051216/

eclipseってそんなに良いか?【エクリプス】
http://pc11.2ch.net/test/read.cgi/tech/1099300344/

統合開発環境Eclipseプラグイン開発QA
http://pc11.2ch.net/test/read.cgi/tech/1081517094/

"Code of the Nerds" Digital Mars C/C++
http://pc11.2ch.net/test/read.cgi/tech/1044210976/
0003デフォルトの名無しさん2010/01/26(火) 00:10:20
バイナリを吐く言語スレは落ちてたので削除しました
0004デフォルトの名無しさん2010/01/26(火) 00:12:02
>>1
乙です
0005デフォルトの名無しさん2010/01/26(火) 07:32:59
>>1乙
0006デフォルトの名無しさん2010/01/26(火) 13:02:51
乙
0007デフォルトの名無しさん2010/01/26(火) 21:31:21
ttp://bit.ly/4tosnw
最近のD事情がまとめられているようです。
0008デフォルトの名無しさん2010/01/27(水) 01:39:26
>>7 はPDF
0009デフォルトの名無しさん2010/01/27(水) 02:21:16
>>7の短縮前は http://www.kmonos.net/pub/Presen/zatsu5.pdf
0010デフォルトの名無しさん2010/01/27(水) 06:58:12
opDispatchでcdddddddarわろたw
0011このくらいテンプレにしとこうぜ(レスカットされた人ごめんね)2010/01/27(水) 10:48:21
954 名前:デフォルトの名無しさん投稿日:2010/1/20(水) 00:09:08
Dに未来はある?

962 名前:デフォルトの名無しさん投稿日:2010/1/21(木) 19:21:55
>>954
Dに関してははっきり「ない」と言える

963 名前:デフォルトの名無しさん投稿日:2010/1/21(木) 19:59:47
Pythonを知ってるプログラマが100人いるとすればDは0.02人くらい

964 名前:デフォルトの名無しさん投稿日:2010/1/21(木) 23:18:39
pythonと比べるなんてpythonをバカにしているとしか思えない

965 名前:デフォルトの名無しさん投稿日:2010/1/21(木) 23:26:03
Python を 100 とすると

VB 1000000
PHP 500000
C/C++ 100000
Java 50000
Ruby 1000
D 0.02

968 名前:デフォルトの名無しさん投稿日:2010/1/22(金) 03:16:14
D弱杉www

969 名前:デフォルトの名無しさん投稿日:2010/1/22(金) 23:38:53
Dは永遠に迷走し続ける
0012デフォルトの名無しさん2010/01/27(水) 12:38:08
乙ー。ウォルたんの写真はー?
0013デフォルトの名無しさん2010/01/27(水) 20:01:15
ttp://www.astoriaseminar.com/images/walter.gif
うぉるたんはそろそろヒゲを生やすべき
0014デフォルトの名無しさん2010/01/29(金) 00:27:34
D3.0はいつになるんだろう?
0015デフォルトの名無しさん2010/01/29(金) 01:32:00
>> 14
>>7と>>9も載せてるが、ttp://www.kmonos.net/pub/Presen/zatsu5.pdf
五月予定。
0016デフォルトの名無しさん2010/01/29(金) 03:13:28
5月に入稿、7月発売ってとこか
0017デフォルトの名無しさん2010/01/29(金) 23:06:31
>>15
thx
じゃあAndreiの本はD3.0のガイドにもなるのだろうか
英語苦手なんだよなー
0018デフォルトの名無しさん2010/01/30(土) 00:52:00
Post D2とか考えるとD3について書くのかな
発売どんどん延期してるし,最後に触れる可能性はあるか
0019デフォルトの名無しさん2010/01/30(土) 08:30:59
>>17
D3.0のガイドにもなる……か。
確かに脱稿時点でD2.0の仕様を固定と書かれているので、
その可能性は否定できないな。

>>18
同感。
0020デフォルトの名無しさん2010/01/30(土) 17:43:51
dmd 2.040

* Clarification: function returns are not lvalues
* Added shared static constructors/destructors, regular static constructors/destructors now deal with TLS
* Add -map command line switch
* Add @disable attribute
* Delegates and function pointers may be used in CTFE
* Delegate literals and function literals may be used in CTFE
* Lazy function parameters may now be used in CTFE
* Slicing of char[] arrays may now be used in CTFE
* added static/final function implementations to interfaces
* added getOverloads, identifier, and isStaticFunction traits.
* ModuleInfo changed from class to struct
* Bugzilla 3556: version(CTFE)
* Bugzilla 3728: getOverloads and identifier traits
0021デフォルトの名無しさん2010/01/30(土) 18:56:02
>>20
乙
なんかいろいろ来たな
@disableって何だろ?
0022デフォルトの名無しさん2010/01/30(土) 19:48:56
* added static/final function implementations to interfaces

かなり前にこのスレで話題に出てたな
0023デフォルトの名無しさん2010/01/30(土) 22:23:15
toStringzがconst付いてるおかげで渡せないときどんな方法で解決するのがベター?
0024デフォルトの名無しさん2010/01/31(日) 04:09:39
>>20
乙。
これでBindings for the Windows APIを最新版で使える……。
0025デフォルトの名無しさん2010/01/31(日) 08:17:14
>>30
前に話していたのは
interface A{
int f(int i) in{assert(i>0);}
out(r){assert(r>0);}
}
みたいに非final/非staticなメソッドじゃなかったか?
何で普通のメソッドが含まれていないんだ・・・
0026デフォルトの名無しさん2010/01/31(日) 16:10:11
>>21
@disableはc++1xの=deleteみたいだぜ
0027デフォルトの名無しさん2010/01/31(日) 16:11:55
D言語はprivateにしても同一ソースならfriendだからな
使用禁止にするためにprivateに押しやっても
効果が出ないので@disableみたいなのがいるんだろう
0028デフォルトの名無しさん2010/01/31(日) 16:15:38
>>23
ソースで書いてくれ
それじゃわからん
0029デフォルトの名無しさん2010/02/01(月) 11:54:45
dmd.2.039なのですがsort用の叙述関数に任意の引数を渡したい
場合はどうすればよいですか?

例えば
sort!(Sorter(10), SwapStrategy.unstable)(List);
みたいにして、Listの中身を10からの差の絶対値でソートするみたいな
処理をしたいのです。
0030デフォルトの名無しさん2010/02/01(月) 14:07:19
>>29
schwartzSort
0031デフォルトの名無しさん2010/02/01(月) 16:49:30
>>29
http://twitter.com/mono_shoo/status/8487179130
0032デフォルトの名無しさん2010/02/01(月) 16:51:41
twitterとのこういう連携初めて見た。
0033292010/02/01(月) 17:03:00
パチュDの人ありがとうございます。
でも実は本当にやりたいのは10がローカル変数だったりする場合なのです。

int[] ary = [1,5,9,13,18,23];
int Num = 10;
sort!q{abs(Num-a) < abs(Num-b)}(ary);
writeln(ary);

とすると

Error: static assert "Invalid predicate passed to sort: abs(Num-a) < abs(Num-b)"
instantiated from here: sort!("abs(Num-a) < abs(Num-b)",cast(SwapStrategy)0,int[])

なエラーになってしまいます。
これをC++でのbindみたいに何とかすることはできませんでしょうか。
0034デフォルトの名無しさん2010/02/01(月) 17:28:54
デリゲートを渡せばいいのでは
int[] ary = [1,5,9,13,18,23];
int n = 10;
bool f(int a, int b) { return abs(n-a) < abs(n-b); }
sort!f(ary);
writeln(ary);
0035デフォルトの名無しさん2010/02/01(月) 21:02:46
こういうのを見るとほんとDは手が広いね
0036デフォルトの名無しさん2010/02/01(月) 21:09:46
>>25 が実装されたようだ
0037デフォルトの名無しさん2010/02/02(火) 00:06:22
>>25
finalまたはstaticならvtblの衝突はない、という話だったかと思う
でも名前の衝突は回避案が見つかったのか?
interface A { static void f(){} }
interface B { static void f(){} }
class C : A, B {...}
としたときのC.fの扱いとか
0038292010/02/02(火) 10:42:39
>>34
解決しました!ありがとう。
0039デフォルトの名無しさん2010/02/02(火) 18:54:17
>>33
int[] ary = [1,5,9,13,18,23];
int Num = 10;
sort!((int a, int b){return abs(Num-a) < abs(Num-b);})(ary);
writeln(ary);
0040デフォルトの名無しさん2010/02/03(水) 23:00:25
>>24
>>これでBindings for the Windows APIを最新版で使える……。

使ってみた。確かに数箇所コンパイラに指示された所を修正するだけで使えましたさ…だがッ!!

(d3d10.d の ID3D10Device の中の)
誤>> void ClearRenderTargetView(ID3D10RenderTargetView pRenderTargetView, FLOAT[4] ColorRGBA);
正>> void ClearRenderTargetView(ID3D10RenderTargetView pRenderTargetView, FLOAT[4]* ColorRGBA);

……なんだぜッ…(dmd2の場合)!!
…や、みんなもうご承知かもしれませんが3日ほど詰んでたので一応…
0041デフォルトの名無しさん2010/02/03(水) 23:29:11
object.Exception: Cyclic dependency in module hoge
って例外が投げられたのですが、どう対処してよいのやら・・・
どんな原因が考えられます?
0042デフォルトの名無しさん2010/02/03(水) 23:49:08
環境は?
0043デフォルトの名無しさん2010/02/03(水) 23:51:11
>>41
そのまんま、循環依存してるんじゃないの?
循環依存しないようにプログラム書いたらいいんじゃない?
0044412010/02/03(水) 23:58:24
>>42
DMD2.040です。

>>43
循環依存ってどのような状況でしょう?
0045デフォルトの名無しさん2010/02/04(木) 00:46:10
module hoge;
import foo;
int fuga;
static this() {fuga = foo.bar + 10;}

module foo;
import hoge;
int bar;
static this() {bar = hoge.fuga + 10;}

どちらの static this() を先に実行したらいいかわからないため、循環依存の例外が発生する
0046412010/02/04(木) 01:11:04
>>45
なるほど! よく解りました^^

しかしながら相互importで例外が発生するのなら、
素直に初期化関数を作ったほうが良さそうだ。。。
0047デフォルトの名無しさん2010/02/05(金) 10:05:35
D言語基礎文法最速マスター - はてなかよっ!
http://d.hatena.ne.jp/repeatedly/20100201/1264972016

流行ってるのか
0048デフォルトの名無しさん2010/02/05(金) 18:11:50
はやってる
0049242010/02/05(金) 20:55:54
>>40
d3d10.d の ID3D10Device の中の定義ミスには気付かなかった。
サンキュー直しとく。
0050402010/02/07(日) 01:14:41
…今度は Bugzilla 1687 で詰みますたorz
これは、回避可能なのか…?
0051デフォルトの名無しさん2010/02/07(日) 01:20:24
>>50
諦めてFLOAT*にしてしまってはどうか
0052512010/02/07(日) 01:21:24
途中だった

>>50
諦めて定義はFLOAT*にしてしまってはどうか
で、呼び出し時には配列の ptr プロパティを渡す
0053デフォルトの名無しさん2010/02/07(日) 23:28:41
MicrosoftVisualD言語とか出ませんかね
0054デフォルトの名無しさん2010/02/07(日) 23:32:53
出てもすぐに古くなるしなあ。
dmd=言語仕様になってる現状そんなもんあっても仕方がない
0055デフォルトの名無しさん2010/02/07(日) 23:40:44
http://lists.puremagic.com/pipermail/digitalmars-d/2010-February/071838.html
これを再開させよう
0056デフォルトの名無しさん2010/02/08(月) 00:15:39
>>52
あ、 >>40 と >>50 は別の話。書き方が悪かった。スマソ。
>>40 は FLOAT[4]* でたぶんいけてる感じ。
>>50 の方は「extern(C++)のinterface内の関数呼び出しに失敗(別の関数を呼んでしまう?)する」
と言うdmdのバグ。おいらにゃお手上げです。
0057デフォルトの名無しさん2010/02/08(月) 00:28:18
暇だから最近D言語さわってみたけど何か面白い
でも、ライブラリ周りとか統合できないの?

あとは他言語とのDLL介した連携とかでGC絡みがよくわからん・・・
DでDLL作らん方がいいんだろうか
0058デフォルトの名無しさん2010/02/08(月) 19:55:23
>>57
GCを使うのは、一つのDLL内で完結する部分のみだね。
連携部分はmallocとかAPIとかで別個に処理。
0059デフォルトの名無しさん2010/02/08(月) 21:28:27
>>56

extern (C++) の interface って DirectXのやつ?
extern (System) にしてもだめ?
0060562010/02/08(月) 22:15:06
ごめん、関係なさそうだ。忘れてください
006156じゃなくて592010/02/08(月) 22:16:43
60 のハンドルは typo です。重ねてごめんなさい。
0062デフォルトの名無しさん2010/02/08(月) 22:38:14
>>58
なるほど、結局そうなるのか。

DLLのサンプルでマルチスレッド未対応になってるのは、
Dの管理外スレッドからのコールはそれこそ”リソースを管理できない”から
falseを返してると勝手に思ってるんだけど、これで合ってるのかな

D言語間でもGCのハンドルを引き回したり・・・DLLは何か後で嵌まりそうだ
0063デフォルトの名無しさん2010/02/08(月) 23:30:33
っていうかDでもっとも鬱陶しい機能だわGC
shared_ptr最高。でもC++はもう使いたくない……
0064デフォルトの名無しさん2010/02/08(月) 23:53:05
メモリ周りを楽にしてくれるのがGCならややこしくしてくれるのもGC・・・
0065デフォルトの名無しさん2010/02/09(火) 02:18:56
.Netマンセー・・・ とは言わないけど、GC含めた
統一フレームワークっぽいのがあれば何かと便利な気がする
複数のD系統DLL使ってたらどうすれば良いのやら・・・

お互いのインターフェイスとかで混乱しそうorz
0066デフォルトの名無しさん2010/02/09(火) 03:25:32
std.ffiみたいなのが欲しいね
0067デフォルトの名無しさん2010/02/09(火) 08:55:18
>>65
>統一フレームワーク
Dの弱点はそれだよねえ。.NET使うと「どの環境でも共通して使えるライブラリ群の強み」って言うのを強く感じる。
0068652010/02/09(火) 10:43:03
自分で書いてて思ったけど、.Net程でかくなくていいから、
せめてメモリ周りくらいは何か共通基盤が欲しい。

phobos/tangoとかライブラリ関係なく使えるのが良いんだけど難しいんだろうか。
今は混ぜるな危険って感じがする
0069デフォルトの名無しさん2010/02/09(火) 11:06:47
Dの場合実行ファイル単位でGC埋め込んでるから、
共通して使えるってなると仮想マシンみたいなもんの上で実行する必要が出てくるんじゃないかなと。
あるいはランタイムライブラリ必須になったり。
0070デフォルトの名無しさん2010/02/09(火) 12:54:39
まあ、だからこそ「GCって本来OSがやるものだよね」というコメントが出ているわけで。
0071デフォルトの名無しさん2010/02/09(火) 13:17:43
それに対するMSの回答が.NETだったりするのかな。
0072デフォルトの名無しさん2010/02/09(火) 19:37:15
DWT+tangoでコード書いてたはずなのにだんだんtangobosが混ざってカオスになってきた
何でtangoはあんなに使い勝手悪いんだろう
命名規約のせいなのか
何にでもclassを持ち出すからか
0073デフォルトの名無しさん2010/02/09(火) 19:58:07
tangoは一昔前のオブジェクト指向ライブラリって印象だな。
0074デフォルトの名無しさん2010/02/09(火) 22:55:41
>何でtangoはあんなに使い勝手悪いんだろう
>命名規約のせいなのか

なぜかPHPのことを思い出した
0075デフォルトの名無しさん2010/02/10(水) 09:21:38
char[]をKeyTypeとした連想配列を、
アルファベット順にソートされた形で、foreachで回したいです。
どうやればよいのでしょうか?
0076デフォルトの名無しさん2010/02/10(水) 12:28:52
foreach (k; aa.keys.sort) {
 auto v = aa[k];
 ...
}
0077デフォルトの名無しさん2010/02/10(水) 12:35:04
>>76
thx
keyだけをforeachで回すという発想がなかったです。
0078デフォルトの名無しさん2010/02/10(水) 17:28:59
aa.sort()にしたい
0079デフォルトの名無しさん2010/02/10(水) 19:56:28
よし、上手い具合にソート済みになるようなhash値を持つ文字列型作ろうぜ
0080デフォルトの名無しさん2010/02/10(水) 21:11:23
文字列をbigendianのバイトコードとみなしたときに
たとえば上位4バイトをhash値でテーブルにして
残りの下位バイトをhash重複のリンクリストにすれば最強
0081デフォルトの名無しさん2010/02/12(金) 02:00:16
.
0082デフォルトの名無しさん2010/02/12(金) 02:48:30
>>80
(´・ω・`)あ?
0083デフォルトの名無しさん2010/02/13(土) 01:42:35
ここに来て演算子オーバーロードのやり方変更のお知らせ
http://www.dsource.org/projects/phobos/changeset/1419
opUnary, opBinary
0084デフォルトの名無しさん2010/02/13(土) 01:49:08
ひゅう
0085デフォルトの名無しさん2010/02/13(土) 08:43:56
D言語でゲームを作るとしたら、SDLしかないんでしょうか?
SDLはライセンスが面倒くさそうなのが気になります。
0086デフォルトの名無しさん2010/02/13(土) 09:43:04
SDLのライセンスってLGPLでしょ。そんなに面倒かな
あとはDXライブラリとかAllegroとか
0087デフォルトの名無しさん2010/02/13(土) 11:05:05
>>86
どうもです。
ライセンス関係はあまり知識がないのですが、LGPLはよく理解した上で使わないと痛い目に遭いそうな怖さを感じます。
DXライブラリを使う事にします。
0088デフォルトの名無しさん2010/02/13(土) 13:01:27
struct {
int member = void;
}
これできないのですが代替手段ありますか?
0089デフォルトの名無しさん2010/02/13(土) 13:08:35
あります
0090デフォルトの名無しさん2010/02/13(土) 23:40:30
なにがどうできないの?
0091デフォルトの名無しさん2010/02/14(日) 11:25:26
this/static thisかね
0092デフォルトの名無しさん2010/02/15(月) 07:45:26
D++
0093デフォルトの名無しさん2010/02/15(月) 17:53:19
std.string.splitってデリミタの文字を消して分割しちゃうけど
デリミタを残したまま分割することってできないのでしょうか。
0094デフォルトの名無しさん2010/02/15(月) 18:01:51
どういうこっちゃ
0095デフォルトの名無しさん2010/02/15(月) 19:26:26
自分で追加しなはれ
0096デフォルトの名無しさん2010/02/15(月) 21:01:58
よーしパパstd.c.string.strtokで分割しちゃうぞー
0097デフォルトの名無しさん2010/02/15(月) 22:49:41
せっかくだしCTFEできるように書いてくれ
0098デフォルトの名無しさん2010/02/16(火) 01:12:15
D#はいつ頃完成しますか?
0099デフォルトの名無しさん2010/02/16(火) 03:47:35
しません
0100デフォルトの名無しさん2010/02/16(火) 05:27:28
します
0101デフォルトの名無しさん2010/02/16(火) 07:15:45
ObjectiveD++が先です
■ このスレッドは過去ログ倉庫に格納されています