トップページ⇒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へ続く
0237デフォルトの名無しさん2010/03/24(水) 12:55:46
>>236
それC++1xで
0238デフォルトの名無しさん2010/03/24(水) 13:02:28
全く関係ないんだけどC++にはfstream, ifstream, ofstreamの区別があって
読み取り専用で開いたファイルストリームに書き込もうとするのなんかを
コンパイル時に検出できるわけだけどphobosのFileはそういう風にする予定はないのかな
0239デフォルトの名無しさん2010/03/24(水) 13:06:49
デフォルトが読み取り専用なんだからいらんでしょ?
全く困った事ないなぁ
0240デフォルトの名無しさん2010/03/24(水) 13:21:57
コンパイルタイムに検出できるエラーをわざわざランタイムまで先送りするってのは行儀がいいとは思わないな
0241デフォルトの名無しさん2010/03/24(水) 21:30:23
static 引数(だっけ?)を実装したら出来るようになるんじゃ?
0242デフォルトの名無しさん2010/03/24(水) 21:38:49
Call-Time Function Evaluation
0243デフォルトの名無しさん2010/03/25(木) 06:02:39
C言語+RAD

と

D言語 RADなし

だと

果たしてどちらが便利だろうか?
0244デフォルトの名無しさん2010/03/25(木) 06:18:47
GUIのデザイナに限ればツールキット付属のでいいよね
0245デフォルトの名無しさん2010/03/25(木) 07:25:29
>>244
そういうことでよろ
0246デフォルトの名無しさん2010/03/25(木) 08:48:48
>>243
C++Builderみたいなのが相手ならともかく、素のC言語+RADだと、
GUIデザインをD言語上のDSLでやるとしても(外部GUIデザイナを使わないとしても)、
まだD言語のほうが便利な気がする。
0247デフォルトの名無しさん2010/03/25(木) 23:45:44
SpanMode.breadthでディレクトリ巡回すると
4invalid UTF-8 sequenceってでる

同じディレクトリをSpanMode.depth使うと正常に終わる
バグ?

try {
foreach (DirEntry entry; dirEntries(".", SpanMode.breadth));
} catch (Exception e) {
writeln(e.msg);
}
dmd 2.042
0248デフォルトの名無しさん2010/03/25(木) 23:49:39
安心しろ、以前のコンパイラなら何の問題もなかった俺のプログラムも
2.042から不定期にUnicodeエラー出したりアクセス違反したりメモリ確保失敗したりしてる
だから安心しろ
0249デフォルトの名無しさん2010/03/26(金) 04:58:32
budのLIBPATH働いてない気がするけど何か間違ってるのかな
0250デフォルトの名無しさん2010/03/26(金) 22:51:18
関数型ライクなスタイルでコードを書こうと思ったんですが、phobosはpureがついてないのが多くて不便に思います。
std.algorithmなんかは関数型っぽい仕様してると思うのですが、なぜpureがついてないのでしょうか?
0251デフォルトの名無しさん2010/03/26(金) 22:57:03
歴史的事情なんじゃね?
pure できたのいつだっけか。
0252デフォルトの名無しさん2010/03/26(金) 23:22:22
pureで書き直してパッチを送り直せばいいとおもうよ
0253デフォルトの名無しさん2010/03/26(金) 23:36:13
なんかバージョンが1個あがるごとに関数1個ずつぷちぷちpureがついていく感じ
0254デフォルトの名無しさん2010/03/27(土) 00:07:52
>>250
pureをつけるためには引数がimmutableじゃないといけないから、
コンテナを引数に取るstd.algorithmの関数はpureにできない
02552502010/03/27(土) 04:15:58
確かに全てのコンテナにidupのような関数を要求するのもアレですね。
それと、標準ライブラリがまだ未完成でpureに対応してない部分もあるという事ですか。
関数型で書くのも簡単じゃないなぁ。
0256デフォルトの名無しさん2010/03/27(土) 04:43:43
なるほど immutable か。
確かに外からこっそりいじられる可能性がある限り、真の pure とは言い切れないな。
0257デフォルトの名無しさん2010/03/27(土) 04:54:36
Haskell並にpureとinpureな部分を分割するのはさすがに無理かー
0258デフォルトの名無しさん2010/03/28(日) 01:08:32
import std.range;
void main() {
writeln(ElementType!(char[]).stringof);
}

dchar

この挙動は一体?
0259デフォルトの名無しさん2010/03/28(日) 01:22:50
>>258
"ほげほげ".front == 'ほ'
0260デフォルトの名無しさん2010/03/28(日) 01:24:22
import std.stdio;
static func() {
writeln("hoge");
return "fuga";
}
void main() {writeln(func);}

$ dmd -run test
hoge
fuga

mainとfuncの位置を入れ替えるとコンパイルエラーになる、そんな不思議
0261デフォルトの名無しさん2010/03/28(日) 01:52:49
そこはDではprivateと書くべきではないのか
0262デフォルトの名無しさん2010/03/28(日) 02:12:14
>>259
なるほど。
しかし配列と文字列(charの配列)とでElementTypeの挙動が変わるのは釈然としないなー
0263デフォルトの名無しさん2010/03/28(日) 04:28:19
>>262
それは思う
他の言語でもあるように配列と文字列を完全に別のものにして欲しいかも
0264デフォルトの名無しさん2010/03/28(日) 12:41:56
>>261
文法見ると関数の戻り値型は省略できないはずなんだよね
せめてautoと書かないと

ところがstaticとかつけるとコンパイル通ってしまう(privateは駄目)
たぶん変数の型を省略できる辺りの仕様と混線してるんだと思う
0265デフォルトの名無しさん2010/03/28(日) 16:24:54
>>264
これだね
http://lists.puremagic.com/pipermail/digitalmars-d-learn/2010-March/016389.html
0266デフォルトの名無しさん2010/03/28(日) 21:28:16
DMDのパーサは継ぎ接ぎだらけで汚いからなあ
0267デフォルトの名無しさん2010/03/28(日) 22:00:41
誰かDで書き直してやれよ
0268デフォルトの名無しさん2010/03/28(日) 22:10:08
Dで書いてもなぁ、パーサジェネレータ使ったものでないと他人が
読めるぐらい平易にならんよ
0269デフォルトの名無しさん2010/03/28(日) 22:44:40
ddmdっていう、dmdをD言語で実装するとか頑張ってるのがあるよ
http://www.dsource.org/projects/ddmd
0270デフォルトの名無しさん2010/03/29(月) 00:21:25
まず仕様が固まらないとなw
D3マダー?
0271デフォルトの名無しさん2010/03/29(月) 12:18:39
>>263
これ以上組み込み型増やすのは勘弁だわ
Cとの互換性も下がるし
0272デフォルトの名無しさん2010/03/29(月) 14:17:47
Cとの互換性大事だろうがあッ!!
0273デフォルトの名無しさん2010/03/29(月) 14:24:14
Cとの互換性は大事だよ、大事だよ
0274デフォルトの名無しさん2010/03/29(月) 15:22:52
http://www.digitalmars.com/d/archives/digitalmars/D/Why_Strings_as_Classes_75488.html

Cとの互換そんなことを考えていた頃も
あり…ありま…(ry
0275デフォルトの名無しさん2010/03/29(月) 19:57:10
dflインスコ出来ねぇ
0276デフォルトの名無しさん2010/03/29(月) 20:50:49
今生きてるGUIライブラリはGtkDとQtDだけ?
0277デフォルトの名無しさん2010/03/29(月) 20:52:23
>>274
何この大河ドラマ
0278デフォルトの名無しさん2010/03/29(月) 20:57:16
>>276
マジかよ・・・うぇ
0279デフォルトの名無しさん2010/03/29(月) 21:00:01
>>274
なげええええええええええええええええええ!!!!!!!!!!
0280デフォルトの名無しさん2010/03/29(月) 21:26:31
>>274
夜空を流れる天の川みたいだ・・・
0281デフォルトの名無しさん2010/03/29(月) 21:36:32
>>274人気杉ワロタ
0282デフォルトの名無しさん2010/03/29(月) 21:44:08
wxDは、DWTは生きている
そんな風に思っていた時期が、俺にもありました
0283デフォルトの名無しさん2010/03/30(火) 00:51:14
流れる星は生きている(もすぐ死ぬ)
0284デフォルトの名無しさん2010/03/30(火) 01:43:59
日本語でも読む気しねえよこの長さww
0285デフォルトの名無しさん2010/03/30(火) 17:03:50
char 型と、utf8 型(?)に分けちゃえば、すんなり行くような気がする今日この頃。
そうでもない?
UTF-8 と決まっている D の char 型と、C言語用の文字(列)型としての char 型が
ごちゃ混ぜになってるのがそもそもの不幸の始まりだよね?
0286デフォルトの名無しさん2010/03/30(火) 18:12:04
>>285
それなら、Cのcharに相当するのをlocale_charみたいな名前で新設する方がいいな。
UTF-16をwchar, 32をdcharって名前にしてしまってるんだから。
0287デフォルトの名無しさん2010/03/30(火) 18:23:37
(u)byteでは何か問題があるの?
0288デフォルトの名無しさん2010/03/30(火) 18:33:37
>>287
charでもubyteでも何の問題もないけど、そういうaliasが欲しいねって話と思ったんだが。
0289デフォルトの名無しさん2010/03/31(水) 11:59:12
いらねーヨ
0290デフォルトの名無しさん2010/03/31(水) 19:44:28
byteで何も困ってないからなぁ

locale_charとかsynchronizedとimmutableとforeach_reverseについで嫌いな名前になりそうだぜ
0291デフォルトの名無しさん2010/03/31(水) 20:07:45
foreach_reverseについては同意
もうちょっと良い感じのはなかったのだろうか
0292デフォルトの名無しさん2010/03/31(水) 20:15:38
いや自分が書くときはcharで困らんけどさ。
OSの言語設定や環境変数LANGに左右されるC文字列と、UTF-8固定のD文字列を区別しておかないと
混同しても何も困らない欧米人が混同したコード書きやがるよね、
というよくある話を>>285は言いたいんじゃないのか?別人だけど。
0293デフォルトの名無しさん2010/03/31(水) 20:21:13
ubyteでいいじゃん
0294デフォルトの名無しさん2010/03/31(水) 21:16:10
>>291
rforeachでいいよなぁ
0295デフォルトの名無しさん2010/03/31(水) 21:25:30
欲を言えばimmutableはもうちょっと短い言葉だと良かった
constに比べると長い
0296デフォルトの名無しさん2010/03/31(水) 21:36:58
invariantのほうが打ちやすい
0297デフォルトの名無しさん2010/03/31(水) 22:14:58
文字数の多さは最近そんな感じだな
むかしはメモリが少なかったし画面も狭かったから、
Cが発達したころ、その辺の事情と区別しやすさのバランスが取れた頃合いが5文字だったんだろう
0298デフォルトの名無しさん2010/03/31(水) 22:50:32
unsigned intをuintにした頃のウォルたんはどこへ…
0299デフォルトの名無しさん2010/03/31(水) 23:19:23
キーワードにスペース入ってるのは気持ち悪いんだよなあ
auto refとか
0300デフォルトの名無しさん2010/03/31(水) 23:39:58
static thisとかな
0301デフォルトの名無しさん2010/03/31(水) 23:41:49
こうしてD++の開発が始まったのだ
0302デフォルトの名無しさん2010/04/01(木) 00:16:11
複雑さでC++の10倍を目指します
0303デフォルトの名無しさん2010/04/01(木) 01:31:27
冗談でも言ってよいことと悪いことがある!
0304デフォルトの名無しさん2010/04/01(木) 03:54:56
先ずはD--
0305デフォルトの名無しさん2010/04/01(木) 15:17:24
そしてラブプラス+
0306デフォルトの名無しさん2010/04/01(木) 16:37:16
L言語作ってくるか…
0307デフォルトの名無しさん2010/04/01(木) 17:21:05
dllの読み込みはstd.loaderでいいのか?ライブラリ関連よくわからん
0308デフォルトの名無しさん2010/04/01(木) 22:22:43
>>307
え〜?そんなライブラリはないだろう……、と思ったがあったッ!!
うん。使えるんじゃないかな。使ったこと無いけど。
0309デフォルトの名無しさん2010/04/01(木) 22:59:51
std.loaderなんてあったんだな、しらんかった
0310デフォルトの名無しさん2010/04/01(木) 23:12:08
どっかに過去のバージョンのコンパイラは落ちてないんですか?
具体的に言うと0.149があるとABA gamesのMu-cadeが楽にコンパイルできそうなんですが
0311デフォルトの名無しさん2010/04/01(木) 23:54:09
>>308
thx
0312デフォルトの名無しさん2010/04/02(金) 00:01:04
>>310
http://www.kmonos.net/alang/d/1.0/changelog.html
ここの「D 1.049 での変更点」から落とせる。
0313デフォルトの名無しさん2010/04/02(金) 00:26:11
>>312
必要なのは0.149でしたけど、older versionsから辿って見つけることができました。
ありがとうございます
0314デフォルトの名無しさん2010/04/02(金) 11:49:03
bit型はどこいっちゃったの
0315デフォルトの名無しさん2010/04/02(金) 12:20:51
bit型 → bool型のalias → 非推奨のbool型のalias → 消滅
と順番に形を変えていきました
0316デフォルトの名無しさん2010/04/02(金) 12:34:42
バイト・ワードが定着して以降はマシン的に「1ビットのメモリ」なんて細かい扱いはしないから、
ビット単位で詰め込みたい人はstd.bitmanipで便利に使ってくれって感じの方針だな
0317デフォルトの名無しさん2010/04/02(金) 15:05:42
なるほどさんくす。
byteをboolの代わりにするのもにょもにょする
0318デフォルトの名無しさん2010/04/03(土) 10:48:05
いまある一番オススメなIDEはなんですか?
0319デフォルトの名無しさん2010/04/03(土) 11:04:00
使ったことないからまともに動くかどうかは知らないけど
使ったことがないからこそまともに動く可能性があるかもと思えるのはD-IDE
0320デフォルトの名無しさん2010/04/03(土) 12:45:14
今後C言語の置き換えが起こるとしたら、D言語で間違いないですか
もっと大きなパラダイムシフトが起こるまでそんなことないですか
0321デフォルトの名無しさん2010/04/03(土) 14:30:27
Cの代替になる言語は一つも無いんじゃね?
Cはコンパイル言語じゃなくて高級アセンブラだからなー

ただ、C++の代替にならなる可能性は…やっぱり無いか…
0322デフォルトの名無しさん2010/04/03(土) 14:46:35
代替じゃなくてDでしか作れないようなものがないと無理なんだろうね
0323デフォルトの名無しさん2010/04/03(土) 14:59:56
GC回りが整備されたら純粋なbetter Cの一角に名乗り出る資格はあると思うけどね
C++とかC#とかで書いてて思ったのは、
やはり関数の扱いがちゃんと関数で安心できることとか、
構造体型を返り値にするときの挙動の予測しやすさとかはいい点だと感じる
0324デフォルトの名無しさん2010/04/07(水) 05:47:18
言語仕様はC++の後継と言っていいと思うけど、現状、利用者が少ないからなー。
コンパイラにバグが残ってたり、ライブラリが未完成だったり、言語仕様がコロコロ変わったりするし、
そのせいもあってかIDEもまともなのがないし、ネット上の情報量も少なくて敷居が高いよね。

登場から11年経つけどこれから流行るかな・・・?
0325デフォルトの名無しさん2010/04/07(水) 06:40:08
標準ライブラリが整備されてなくてちょっと試せないのが厳しい(Tangoは最新バージョンで使えないしPhobosはネットワークとか死んでる)
あとやっぱりRubyのgemみたいなのが標準で欲しいかな
0326デフォルトの名無しさん2010/04/07(水) 10:54:17
言語仕様が固まってなくて文法がメジャーバージョンアップでもないのに
後方互換性がなく変わる状態じゃライブラリも周辺ツールも整備できねーよな
0327デフォルトの名無しさん2010/04/07(水) 16:13:59
だからD2はアルファ版だと…
0328デフォルトの名無しさん2010/04/07(水) 20:21:49
D1なら安定している
そんな風に思っていた時期が、俺にもありました
0329デフォルトの名無しさん2010/04/07(水) 21:11:11
仕様が固定したらライブラリ開発もやる気になるけど
現状ではとてもじゃないがやる気にならない
0330デフォルトの名無しさん2010/04/07(水) 21:53:14
だが待って欲しい。仕様を固定して進歩をやめたD言語に魅力などあるだろうか。
0331デフォルトの名無しさん2010/04/07(水) 21:57:21
進むも地獄とどまるも地獄
0332デフォルトの名無しさん2010/04/07(水) 22:28:37
進む地獄こそ選ぶ道
0333デフォルトの名無しさん2010/04/07(水) 22:36:42
こんなに苦しいのなら、悲しいのなら………Dなどやっぱ要る
0334デフォルトの名無しさん2010/04/08(木) 00:57:39
D言語に敵がいない、という事に最近気づいた
0335デフォルトの名無しさん2010/04/08(木) 03:05:18
無害、それ故に無敵
0336デフォルトの名無しさん2010/04/08(木) 20:36:18
<del>無害</del><ins>ほとんど無害</ins>
■ このスレッドは過去ログ倉庫に格納されています