トップページ⇒tech
1001コメント291KB

D言語 Part8

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/01/12(木) 21:15:04
C言語をベースにC++やJAVAの要素を取り入れさらに一歩進めた
新進気鋭のプログラミング言語Dの総合スレッドです。

かつて高性能C++コンパイラで知られたDigital Mars社が送り出す
より実践的で、本当に使える仕様が目標にされています。

■参考URL

本家
http://www.digitalmars.com/d/

プログラミング言語 D (本家和訳)
http://www.kmonos.net/alang/d/

GCCフロントエンド gdc
http://home.earthlink.net/~dvdfrdmn/d/
http://gdcmac.sourceforge.net/

D言語研究
http://f17.aaa.livedoor.jp/~labamba/
0153デフォルトの名無しさん2006/01/19(木) 02:26:56
>>152
それ、おれも悩んだんだけど、
phobosをデバッグモードでコンパイルしたら出なくなった。
assert()がリリースモードじゃ消されてて、
でもテンプレートだからソース読んでくるから、
リリースモードのphobosに入っていないassertが存在してて、
リンクエラーになるのかと思ったんだけど、ちゃうかな。
0154デフォルトの名無しさん2006/01/19(木) 17:04:33
>>111
GUIライブラリもないのに最強はないなあ
0155デフォルトの名無しさん2006/01/19(木) 17:30:02
GUIっつったら何が使いやすいんだろ
DFLとか?
0156デフォルトの名無しさん2006/01/19(木) 17:45:26
DXULが使えるところまでくれば面白そうなんだけどなぁ。
0157デフォルトの名無しさん2006/01/19(木) 17:47:01
D言語のGUIアプリって無いよな?
0158デフォルトの名無しさん2006/01/19(木) 18:56:04
>>157
どっかにゲームならあったが
0159デフォルトの名無しさん2006/01/19(木) 18:58:40
>>157
duiを使ったのがあった。
今duiはコンパイル通らない。
0160デフォルトの名無しさん2006/01/19(木) 19:04:25
windows.hを全てポーティングしたやつない?
こないだGetStdHandle使おうと思ったら使えなくてへこんだ・・・
0161デフォルトの名無しさん2006/01/19(木) 19:45:03
>>155
wxDはどうなってるんだろう
0162デフォルトの名無しさん2006/01/19(木) 20:02:06
SDWFとかどうだろう。
弱い○×ゲーム付。
0163デフォルトの名無しさん2006/01/19(木) 20:11:02
宣伝です

【Delphi互換!?】FreePascal【GPL】
http://pc8.2ch.net/test/read.cgi/tech/1137051510/
0164デフォルトの名無しさん2006/01/19(木) 22:11:46
前にGTK+CでちょこっとだけGUIプログラムをやったことがあるのですが
GUIって使う側には優しくて好きなんですけど、作る側には優しくないん
ですね。
0165デフォルトの名無しさん2006/01/19(木) 22:36:26
慣れるまでは大変かもね。
作り方っていうか、ノウハウがわかってくれば
そんな苦でもないようなきがする。。
0166デフォルトの名無しさん2006/01/19(木) 23:19:23
>>164
GUI毎にAPIのポリシーや哲学みたいなものが違うのが最大の長所でもあり短所でもあるのでこればっかりはどうしようもないですねぇ。
0167デフォルトの名無しさん2006/01/19(木) 23:21:38
Windowの構造をXMLで指定出来たらいいのに・・・
0168デフォルトの名無しさん2006/01/19(木) 23:24:32
>>167
JavaのThinletってのがxmlでGUIの構造を定義してたよ。
LGPLだったからDに移植してみれば?(swing丸ごと必要だと死んじゃうけどさ)

0169デフォルトの名無しさん2006/01/20(金) 00:02:37
wxDが標準ということで。
0170デフォルトの名無しさん2006/01/20(金) 00:10:51
wxDだとexeがでかくなるから標準はDFLでいいや。
0171デフォルトの名無しさん2006/01/20(金) 00:13:08
ここは間を取ってWin32APIにしようぜ。
0172デフォルトの名無しさん2006/01/20(金) 00:14:48
GUI以前にマルチバイトの対応が終わってる時点で日本じゃどう考えても普及しないな。
0173デフォルトの名無しさん2006/01/20(金) 00:21:04
俺は別に不満はあんまりないけどな。
まあちょっと前に出た引数に日本語いれるとおかしくなるのは直して欲しいかな。
そんなもんじゃない?
0174デフォルトの名無しさん2006/01/20(金) 00:33:54
開発に日本人いないと絶対直らん
CKJなんてゴミとしか思われてないもん
0175デフォルトの名無しさん2006/01/20(金) 00:49:50
そこでマルチバイト文字を使ったAAブームを起こすわけですよ。
0176デフォルトの名無しさん2006/01/20(金) 00:58:36
マルチスレッドはどう?まだダメ?
0177デフォルトの名無しさん2006/01/20(金) 01:01:24
まだって何?
前はどう駄目だったの?
0178デフォルトの名無しさん2006/01/20(金) 01:05:57
でも、UTF8に対応していない環境の方が駄目だと思いますが。
文字コードは色々な思惑が入ったりしていて理論的ではないですし。
0179デフォルトの名無しさん2006/01/20(金) 01:13:49
Win98ってUTF8大丈夫なの?
0180デフォルトの名無しさん2006/01/20(金) 01:22:02
普通のユーザーで普段UTF8でテキスト保存してる香具師なんかいねーから、
自分専用ツールならいいけど、配布用のアプリには使えないね。
0181デフォルトの名無しさん2006/01/20(金) 02:36:42
釣りならもうちょっと工夫しなさい。
0182デフォルトの名無しさん2006/01/20(金) 10:08:56
DOS窓やcmd.exeみたいなWindows用のUTF8対応のコンソールってありますか?
0183デフォルトの名無しさん2006/01/20(金) 10:41:00
>>182
cygwinのbashで環境変数LANGを書き換えればいけるけもしれない。
0184デフォルトの名無しさん2006/01/20(金) 10:59:10
phobosでinternalというのがあるのですけど、これは標準ライブラリでは
ないわけですか?
0185デフォルトの名無しさん2006/01/20(金) 15:34:00
>>184
GCとか配列演算とか例外処理とかの言語機能そのものの実装なので、
ライブラリとして使うたぐいのものではないです
0186デフォルトの名無しさん2006/01/20(金) 17:29:09
>>182
Windows用のktermがあると思いましたけど。
0187デフォルトの名無しさん2006/01/20(金) 17:34:53
>>182
とりあえずck勧めとく。
0188デフォルトの名無しさん2006/01/20(金) 18:30:20
>>187
昔ckためしたときに出力だけは、変換されるのですが、
入力がMBSで入ってきた気がします。
あれ、入力の文字コードを設定できます?
0189デフォルトの名無しさん2006/01/20(金) 18:39:12
>>188
右クリックで選べる。
0190デフォルトの名無しさん2006/01/20(金) 22:15:32
かなり苦しい状況なわけですね。
なんとかしたいなぁ。
0191デフォルトの名無しさん2006/01/20(金) 23:30:56
Javaの場合はどうなっているのですか?
使ったことないからわからないです。
そもそも、今まで文字コードを気にするようなものを
作ってこなかったなあ。
0192デフォルトの名無しさん2006/01/21(土) 00:06:17
Javaは内部はUnicode。
ソースはWindows版はShift_JISを許容する。

なのでJ2EE+EclipseはデフォルトでShift_JIS(MS932)を使って開発ができる。
というかEclipseが文字コードの選択が出来る罠。
0193デフォルトの名無しさん2006/01/21(土) 01:02:36
ゲームを作りたいのですがいわゆるラッパーライブラリは存在しますか?
0194デフォルトの名無しさん2006/01/21(土) 01:43:45
なにをラップするのかわからんが、
ちょっと前のDirectXがある
0195デフォルトの名無しさん2006/01/21(土) 03:23:57
SDLとOpenGLも忘れるな!
0196デフォルトの名無しさん2006/01/21(土) 10:51:18
SDLってなんかリフレッシュレートが低いね。
0197デフォルトの名無しさん2006/01/21(土) 12:14:26
はぁ?
0198デフォルトの名無しさん2006/01/21(土) 12:25:39
ヒィィ
0199デフォルトの名無しさん2006/01/21(土) 12:31:20
フゥゥ
0200sakurai2006/01/21(土) 12:45:52
日本語の件ですが、すまぬ。
久しぶりに2chみてたら、カッとしてやった。
今は後悔してる。
こんなにレスが付くとは思ってもみなかったんだ。
っていうかんじで。。。

ウォルターさんは、utf8使えゴルァ。
って感じで、一貫して昔から考えは変わっていないようです。

mangoか、iconvか、yanesdkかはわからんけど、
何らかの形でデファクトスタンダードを作っていくことが必要に思います。
writefなどの対応も、やるなら、phobos書き換えたライブラリを用意して、
毎回のバージョンごとに追従すると。
俺には根気がないので、無理かなぁと思ってます。

変換ライブラリは、dはハッシュ(連想配列)が使えるので、そいつに突っ込んでおけば
楽な気がします。
テーブルの初期化は、1GHzの俺のマシンで10msほどで済むようです。
あとは、プログラムサイズが大きくなるのがちょいと問題。
なんか、unicodeのサイトからテーブル生成してみたり、
javaからテーブル生成してみたり、そういったプログラムは書いてたんだけど
めんどくさくなってしまって動けなくなってしまったんで、
すまぬです。
また、気が向いたらやるかもしれません。
プログラムは、D言語研究に乗っけときます。
http://f17.aaa.livedoor.jp/~labamba/?%B9%F1%BA%DD%B2%BD%C2%D0%B1%FE
0201デフォルトの名無しさん2006/01/21(土) 12:55:10
>>196
OpenGLのフリップ速度に縛られてるんじゃないの?
ドライバのGLオプションでVSYNC同期とる設定になってるとか。
0202デフォルトの名無しさん2006/01/21(土) 15:37:15
>>200
大丈夫。ダレも本気でお前にレスとかしてるわけじゃない。
どうでもいい存在なんだよ。
0203デフォルトの名無しさん2006/01/21(土) 17:12:08
とりあえずやめれ。
文字コード変換はまあ頑張れば方法はいくらでもあると思うが、
現状、自己流で各人が変換している状況に見える。
多分Dに新しく触れた人は同じ質問を繰り返すんじゃないかな?
そこに、選択肢の一つとして基本的な考えを作ろうという動きはありがたいと思う。
ただし、D言語は俺が守らねば、みたいにならず適当にやってればいいと思う。
いいもんだったら自然に誰かついてくし、いろんな手段が生まれてくるはず。
Dはもどかしさも含めて面白いと思うよ。
0204sakurai2006/01/21(土) 17:23:03
>>202>>203
りょーかい。気が楽になったよー(´ー`)
0205デフォルトの名無しさん2006/01/21(土) 18:09:10
とりあえずって事で正式バージョン出してくれないのかなぁ。
はやく本気モードに移りたいんだがいまの状況ではモチベーションが維持できん。
0206デフォルトの名無しさん2006/01/21(土) 18:36:34
CPANのD言語バージョンみたいなサイトはだめかな。
自分で作ったライブラリで公開しようと思うものを提供していって、
phobosに無いから自分で作ろうと思ったら、まずは既に作られていないかをそこで探せるなど。
そうしていくうちに、段々と「これといえばあれ」的な存在が出てきて、
ディファクトスタンダードになっていくんじゃないかな。
0207デフォルトの名無しさん2006/01/21(土) 18:47:28
そんなサイトがあればいいですね。
ぜひぜひ作って下さい。
お願いします。
0208デフォルトの名無しさん2006/01/21(土) 18:51:54
>>205
仕様の変更やdmdのバージョンアップでDjcodeも修正無しでは
コンパイルできませんね。
DjcodeはCのソースを丸写しした感があるので元からちょっとアレでしたが。
0209デフォルトの名無しさん2006/01/21(土) 19:06:16
>>206
dsourceが一応そんな感じじゃないの?
0210デフォルトの名無しさん2006/01/21(土) 19:12:12
とりあえずstd.conv基数を元にした変換が無かったりとかするからなぁ…
CやJAVAやboostと比較したのがあってもいいかもしれないと思う。
0211デフォルトの名無しさん2006/01/21(土) 21:13:34
>>209
dsourceは、大げさすぎて、
ちょっとした1ファイルライブラリを置く勇気がでないかなと思いまして。
公開する人の気軽さも必要だと思うのですよ。

>>207
言いだしっぺの法則かー!
0212デフォルトの名無しさん2006/01/21(土) 23:25:05
D言語は正式版になったら有料化するんだろ
DelphiみたいなIDEがあるわけでもなし、正式版が出たとたん終わりそう・・・
0213デフォルトの名無しさん2006/01/21(土) 23:46:56
dmdが有料化というのはあるかもしれないですが
gdcが使えなくなることはないと思いますよ。
たいして浸透することもなさそうなので、そこま
で強気な態度をとることはできないかと。
0214デフォルトの名無しさん2006/01/22(日) 02:18:23
D言語は正式版になったら軍事用プログラミング言語に採用されるんだろ
DelphiみたいなIDEがあるわけでもなし、正式版が出たとたん終わりそう・・・
0215デフォルトの名無しさん2006/01/22(日) 02:36:41
じゃあD言語版CPANを目指すべく、サイトを作ってみようかと
横やりを入れてみます。

アイデアキボウ。
0216デフォルトの名無しさん2006/01/22(日) 03:24:10
>>215
モジュールの正式版は普通に載せて、開発版は評価、バグ報告等の
コメントを寄せることができる掲示板風にしてはどうでしょうか?

ダウンロード数を表示するのも面白いかも。多ければ励みになりま
すし。やはり開発側のモチベーションを高める仕掛けは必須だと思
います。
0217デフォルトの名無しさん2006/01/22(日) 04:14:36
>>215
コードを載せるつもりが現状無い人にもとりあえず
アカウント登録してもらえるようなサイトにして、
「あー、せっかくつくったからとりあえずのせておこう」という
具合に供給を刺激するのがいいんじゃないかなぁと思う。
0218デフォルトの名無しさん2006/01/22(日) 04:19:57
>>217
気付いたらのめり込んでるみたいな?
で、気付いたら常連みたいな?

それ上手いですね。
0219デフォルトの名無しさん2006/01/22(日) 05:15:15
気付いたらゴミ糞だらけのライブラリになってるんだろうな
0220デフォルトの名無しさん2006/01/22(日) 05:32:22
そんな後向きなことを言うのはお互いやめましょう。
良いライブラリ作って下さい。
期待してます。
0221デフォルトの名無しさん2006/01/22(日) 12:01:09
おまえらオープンソースって知ってるか?
そこにソースがある限り、皆でよってたかって改善するんだぞ。
それには終わりは無い。
0222デフォルトの名無しさん2006/01/22(日) 14:07:02
それは幻想
実際には一部の者が独占的に開発を行う
パッチを投げてもスルーが基本

例外的な幸せ体験を触れ回るのは、
北朝鮮がパラダイスだと心の底から噂した人たちと同じ行為だ
0223デフォルトの名無しさん2006/01/22(日) 14:39:19
北と違うところは少なくとも「一部の者」の方に入り込む機会は平等に与えられてるってことでは?
0224デフォルトの名無しさん2006/01/22(日) 15:01:01
<チラシの裏>
少なくともFirefoxはオープンソースで成功していると思うぞ。
実際に技術力がある一般人がゴロゴロいるってほどでもないけどな。
</チラシの裏>
0225デフォルトの名無しさん2006/01/22(日) 15:11:59
XPCOMってかなりの数のAPIがあるからねぇ…
0226デフォルトの名無しさん2006/01/22(日) 16:05:42
XPCOMってMSCOMのパクリだろ1
0227デフォルトの名無しさん2006/01/22(日) 19:39:43
折角期待してたのに何かぐだぐだみたいだなw
Readerクラス、Writerクラスが自動的(あるいは任意)に言語を補完してくれる
みたいなライブラリがphobosに詰められれば解決なんだろうけど。
0228デフォルトの名無しさん2006/01/22(日) 20:14:57
>>227
D言語自体ぐだぐだなんだから仕方ないだろ。
0229デフォルトの名無しさん2006/01/22(日) 23:52:13
思い切ってJava APIのクローンを作ってしまうとか。
0230デフォルトの名無しさん2006/01/22(日) 23:53:28
誰が?
0231デフォルトの名無しさん2006/01/23(月) 00:34:02
std.utfの

uint stride(char[] s, uint i);

ってs[i]がシーケンスの開始でない場合は0xFFを返すけどなぜだろう?
0を返すという仕様ではまずいのかな?
0232デフォルトの名無しさん2006/01/23(月) 01:09:50
for (j = 0; j < i; j += stride)
エラー処理してないこんなやつが無限ループになるのを嫌ったか、
単に不正な値であることを強調したかったか。
0233デフォルトの名無しさん2006/01/23(月) 01:19:28
strideが0となる可能性は0だけど255になる可能性は0とは言えないんですよね。
まあ、strideが255になる世の中ってのはこないとは思うけども。
地球外の文字集合を入れ込まない限り。
0234デフォルトの名無しさん2006/01/23(月) 03:56:40
DTLっていうSTLを意識したライブラリがあるんですね。
2004年のリリースだけど大丈夫かな?あやしい?
0235デフォルトの名無しさん2006/01/23(月) 06:39:13
今現在1.0以上のライブラリってあるのかな?
0236デフォルトの名無しさん2006/01/23(月) 14:08:37
マンゴーツリーとか?
0237デフォルトの名無しさん2006/01/23(月) 18:25:50
0.144age
0238デフォルトの名無しさん2006/01/23(月) 21:47:25
まともにウィンドウ出すことさえ出来ねえ・・・
0239デフォルトの名無しさん2006/01/23(月) 22:19:04
やっとウィンドウだせた・・・

WNDCLASSEXとか宣言されてないけどどうなの?>std.c.windows.windows
0240デフォルトの名無しさん2006/01/23(月) 22:25:51
>>239
http://www.kmonos.net/alang/d/htomodule.html
自分で宣言すべし
0241デフォルトの名無しさん2006/01/23(月) 22:26:57
そしてそれをD言語版CPANに投稿してくれ
0242デフォルトの名無しさん2006/01/23(月) 22:36:24
>>240
おk、自分で宣言してるよ。
02431172006/01/24(火) 07:51:13
>>124-125
http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D.bugs/6058
デカい配列はGCとは相性が悪いのでそういうのは自前でdeleteすべし。
class LargeArrayWrapper(T) {T[] buf; ~this(){delete buf;} ...}
みたいなのを経由してアクセスするようにすると楽だよん。

というありがたいお返事をいただいたので一応報告。
0244デフォルトの名無しさん2006/01/25(水) 01:37:59
>>243
deleteってデストラクタ呼ぶだけではなくて、GCからも削除されるのですか?
と思ったので確認してみたら、
>プログラムは、オブジェクトがもはや参照されないことを(delete式によって)
>ガベージコレクタへ明示的に伝えることもできます。
> この場合はGCはすぐに デストラクタを呼び出し、
>オブジェクトのメモリを自由領域へ戻します。
なんて記述があったのですが、これはつまり、他から参照がある領域でもdeleteなら開放できるという認識でOKでしょうか?

昔からこうでしたっけ?
0245デフォルトの名無しさん2006/01/25(水) 02:00:21
どれくらい昔のことを言っているのかわからないですが,
結構前からその文は入っていたように思いますよ.
0246デフォルトの名無しさん2006/01/25(水) 15:56:54
ファイルの一部書き換えたいんだけど、
std.stream.BufferedFile 使うとなぜか4GBのファイルに膨れ上がる。
何が悪いんだろう?
std.stream.File なら問題ない。
BufferedFile に対して writeBlock 使うのはいかんのだろうか?
根本的にやり方間違ってる?
Windows版 dmd, Cygwin gdc の両方で同じ現象を確認。

import std.stream;

int main(char[][] args)
{
Stream fd_img = new BufferedFile("test.img", FileMode.In | FileMode.Out);
// Stream fd_img = new File("test.img", FileMode.In | FileMode.Out);
fd_img.seekSet(0);
ubyte buf[1];
buf[0] = 0x99;
uint write_size = fd_img.writeBlock(&buf[0], 1);
fd_img.close();
return 0;
}
0247デフォルトの名無しさん2006/01/25(水) 18:36:08
それって出力されたファイルのサイズが4GBになるってことですか?
うちの環境ではなんともないでした。
実行形式も300KBちょいでした。

環境:VineLinux3.2 dmd0.143 pentium4
0248デフォルトの名無しさん2006/01/25(水) 18:44:34
うちの環境(Win98)だと、
すでにデータがあるところに書き込もうとすると
(上のプログラムだと二度目の起動)
Error: unable to move file pointer(File.seekにて)
とはじいてくれる。なんかおかしいかも。
02492442006/01/25(水) 18:54:03
>>245
去年くらいにD言語をやろうと決めて、日本語サイトをざっと見たときに
deleteは単にデストラクタを呼び出すだけで、
メモリが開放されるかはGCがきめると書いてあったような気がしたのですが、
気のせいだったかもしれません。どうもです。
0250デフォルトの名無しさん2006/01/25(水) 19:14:16
そもそも、BufferedFileのコンストラクタの第二引数はバッファサイズのはずなんだが。
0251デフォルトの名無しさん2006/01/25(水) 19:22:03
>>250 ちゃんとあるよ。
std.stream:2080-
// opens file in requested mode and buffer size
this(char[] filename, FileMode mode = FileMode.In,
uint bufferSize = DefaultBufferSize) {
super(new File(filename,mode),bufferSize);
}
0252デフォルトの名無しさん2006/01/25(水) 19:59:43
>>249
deleteはデストラクタを呼ぶだけで、即インスタンスを
開放してくれるわけではありませんね。
■ このスレッドは過去ログ倉庫に格納されています