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

D言語 Part8

レス数が1000を超えています。これ以上書き込みはできません。
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/
0002デフォルトの名無しさん2006/01/12(木) 21:15:38
■過去スレ
Part 7 http://pc8.2ch.net/test/read.cgi/tech/1122912733/
Part 6 http://pc8.2ch.net/test/read.cgi/tech/1109933426/
Part 5 http://pc5.2ch.net/test/read.cgi/tech/1102785854/
Part 4 http://pc5.2ch.net/test/read.cgi/tech/1091185216/
Part 3 http://pc5.2ch.net/test/read.cgi/tech/1079068715/
Part 2 http://f3.aaacafe.ne.jp/~null/cache/1079280501.html
Part 1 http://pc5.2ch.net/tech/kako/1003/10036/1003674814.html
0003デフォルトの名無しさん2006/01/12(木) 21:31:33
>>1
乙
0004デフォルトの名無しさん2006/01/12(木) 22:41:37
4様
0005デフォルトの名無しさん2006/01/12(木) 23:58:59
550
0006デフォルトの名無しさん2006/01/13(金) 00:00:41
http://www.sun-inet.or.jp/~yaneurao/dlang/
http://wisdom.sakura.ne.jp/programming/d/
0007デフォルトの名無しさん2006/01/13(金) 09:22:16
PHOBOS の逆引き辞典のようなサイトってありますか?

○○したいときは▲▲をインポートして
▼▼クラスの▽▽メソッドを使え

みたいな感じのものです

ちょっと探してみたんですが見つからなくて・・・
0008デフォルトの名無しさん2006/01/13(金) 11:43:47
>>1
乙であります
0009デフォルトの名無しさん2006/01/13(金) 13:18:16
>>7
自分で作ってwikiに投稿するんだ。
0010デフォルトの名無しさん2006/01/13(金) 23:11:51
糞言語
0011デフォルトの名無しさん2006/01/14(土) 20:12:16
FAQ
Q
日本語が表示できません
A

Q
コードに日本語が入ってるとコンパイルに失敗します

A

Q
日本語ファイル名のファイルのオープン処理他が出来ません

A
0012デフォルトの名無しさん2006/01/14(土) 20:14:54
FAQ
Q
日本語が表示できません
A
あきらめてください

Q
コードに日本語が入ってるとコンパイルに失敗します
A
あきらめてください

Q
日本語ファイル名のファイルのオープン処理他が出来ません
A
あきらめてください
0013sakurai2006/01/14(土) 22:45:31
FAQ
Q
日本語が表示できません
A
toMBSうんぬんつかえばいい気がするけど、linuxやmacだとどうなのかといった、問題が。

Q
コードに日本語が入ってるとコンパイルに失敗します

A
UTF-8でコンパイルしてください。
Q
日本語ファイル名のファイルのオープン処理他が出来ません

A
toMBS使って変換してからやったらうまくいくのではないかと。

ちゃんとためせばいいんだろうけど、めんどうでやってません。
うー、ちゃんとやろうと思うと、どうあるべきかをウォルターたんと
話さないといけなくなると思うんだよなぁ。
英語堪能であればいいのだけど、、、。

悔しいなぁ。あ、めまいが、、、。orz...
yaneuraoさんがそのへんの話進めてたみたいだし、
話聞いて出来るところまでやってみたいところです。
djcodeとか含めて。
やれるだけやってみます。期待しないで放置しててください。
0014デフォルトの名無しさん2006/01/14(土) 23:34:07
Q
C#2.0に勝てません。
A
諦めてください。所詮オナニー言語ですから。
0015デフォルトの名無しさん2006/01/14(土) 23:49:33
C#ってネイティブバイナリ作れるの?
0016デフォルトの名無しさん2006/01/14(土) 23:51:41
FAQ
Q
仕様が変わりまくるのですが?

A
仕様です。
0017デフォルトの名無しさん2006/01/14(土) 23:52:14
A
仕様(しょう)がない
0018デフォルトの名無しさん2006/01/14(土) 23:52:34
>>15
何も知らないんだな。ngen.exeを調べてみるといいよ。
0019デフォルトの名無しさん2006/01/14(土) 23:55:22
ngen使ったら折角のJITが効かなくなって本末転倒だよな。gcjと一緒。
0020デフォルトの名無しさん2006/01/14(土) 23:56:12
ngen使っても巨大なランタイムは必要なままな罠
0021デフォルトの名無しさん2006/01/14(土) 23:57:17
C#はネイティブバイナリを作れるという新事実を知らされても、必死な抵抗を
試みようとする可愛そうなD信者(涙
0022デフォルトの名無しさん2006/01/15(日) 00:03:13
http://tinyurl.com/bayef
C Intel 91.61
D Digital Mars 83.89
C++ 69.48
Python 53.72
C#  52.64

スクリプト未満のC#って一体…
0023デフォルトの名無しさん2006/01/15(日) 00:03:24
Webで開業するんで開発言語にDとMonoを天秤にかけてる。

Monoって普及したのかなぁ。
Dはまだこれからって感じだね。
0024デフォルトの名無しさん2006/01/15(日) 00:06:27
WebならJavaしかないよ。
ポトペタできるVS.NET上のWeb開発ならまだしもMonoじゃあ利点が無い。
0025デフォルトの名無しさん2006/01/15(日) 00:11:49
Javaってハードに金がかかるのと、無意味に開発手法が乱立してて安定しないからなぁ。
昨日覚えた新技術が明日には負の遺産になってるかもしれん罠がある。

なのでどうせならマシン代が安くつくようにしたい。
そういう意味ではPerlでも十分なんだが、こんどは保守に時間/カネが取られる。

その辺のバランスを考えるとDかC#かなぁと。
別にC++でもいいんだけど。
0026デフォルトの名無しさん2006/01/15(日) 00:14:12
スレ違い
0027デフォルトの名無しさん2006/01/15(日) 00:15:04
まだβレベルのDとかMonoを業務に使おうとするのは相当アホだな
0028sakurai2006/01/15(日) 00:17:21
std.stdioのソース直してみたんだけど、、、。
うーん。本来、UTF8を扱う言語が文字列を出力する際に
どのような処理をすべきかって問題がすっきり解決されていないから
だめなんだろうなぁと思った。

utf8で出力した文字がコンソールに出る場合にのみ、
そのOS固有の文字コードになるべきなのか、
ファイルにもそうなのか?
コンソールがutf8に対応していないのがそもそも問題なんじゃないのかなぁ。
と思った。
utf8対応のコンソールないのかしらん?
0029デフォルトの名無しさん2006/01/15(日) 00:17:51
ASP.NET使えよ
0030デフォルトの名無しさん2006/01/15(日) 00:18:35
自前のサイトで当面自分で作る事になるから面白ければなんでもいんだよ。
ならDとかは格好じゃないか?

外注とかPG抱えるようになったらリニューアルしてJavaに移行するつもりだけど。

このスレってDを対して冷静な人が多いんだね。
0031sakurai2006/01/15(日) 00:37:34
>>30
Dは宗教じゃないからかなぁ。宣教師になろうとは思わないもんなぁ。

現状は、文字出力したいときは、
printf(toMBS("こんにちは 世界\n"));
これでいくのが一番かと思います。
writefはファイル出力もあるし、utf8が標準の言語だから、、、
多分、utf8のコンソールがあれば済む話なんじゃないかと。
それ以外は設定ファイルを持ってて、ローケル見てうんぬんっていう
Javaみたいなことやったりしなきゃいけなさそう。
Javaはソースにsjisを許したけど、dは許さない方向性だからなぁ。
コンソール出力だけshiftjisでファイル出力はutf8でもいいのかもしれないけど
dprg>text.txt
とかやったときに、utf8じゃなくてsjisになってうんぬんとかあるんだろうし。
そこをどう解決するのかが問題。

後は、ウォルターさんを説得する方法を考えて粘着して無理やり変えてもらうとか。
嫌われそうだ。。。英語苦手だしなぁ。大仕事になりそう。
0032デフォルトの名無しさん2006/01/15(日) 00:47:43
文字列処理なんてJava風にすればいいじゃん
0033デフォルトの名無しさん2006/01/15(日) 01:01:56
> utf8対応のコンソールないのかしらん?
今ならたいていのコンソールは対応してない?
最悪Windowsのコマンドプロンプトでもchcp 65001すれば表示はutf8になるぞな。
0034デフォルトの名無しさん2006/01/15(日) 01:04:51
入力できない
0035デフォルトの名無しさん2006/01/15(日) 01:09:41
foo | nkf -s
でも結構いけるし
0036デフォルトの名無しさん2006/01/15(日) 01:16:26
import std.stdio;
import std.file;
void main()
{
writefln(toMBSz("テスト"));
}

これで8a0fd0とか出力されて日本語出力できないよ?
D良くわからん。
0037デフォルトの名無しさん2006/01/15(日) 01:19:29
だめな言語だなぁ。
0038デフォルトの名無しさん2006/01/15(日) 01:23:43
writeflnがUTF8じゃないと駄目なんじゃない?
だから>>31みたいにprintf使えばいいんじゃないかな
0039デフォルトの名無しさん2006/01/15(日) 01:48:26
MemoryStreamクラスのオブジェクトを使いwritef等の出力をメモリに
一度出力し、それをshift-jisにエンコードしたものを生で標準出力に
出力するというのはどうでしょうか?

char[] name = "近藤";
Stream tmpStrm = new MemoryStream;
tmpStrm.writefln("私は%sです。", name);
ubyte[] sjisStr = utf8_sjis(tmpStrm.toString()); // なんらかの変換関数
dout.writeBlock(sjisStr, sjisStr.length);
0040デフォルトの名無しさん2006/01/15(日) 01:51:08
文字コードの変換関数ではDJcodeというのがありますね。
http://www.wikiroom.com/sakurai/?DJcode
0041デフォルトの名無しさん2006/01/15(日) 01:55:28
>>38
printfで出来ました。ありがとうございます。
ソース見たらstd.stdioってstdioなのに入力関数が無いんですね。

入力もしてみようと思って、
googleで検索して出てきたサイトを参考にしてみたけど、
今度は、undefined identifier stdinと怒られてしまう…
importが足りないのかなと思ってphobosのソースgrepしてみたらstdinってどこにも無いし。
廃止されちゃったのでしょうか?

import std.conv;
import std.stream;
import std.file;
void main()
{
printf(toMBSz("あなたの名前は?\n"));
char[] name;
stdin.readLine(name);
printf("%s%s%s", toMBSz("あなたの名前は"), name, toMBSz("です。\n"));
}
0042デフォルトの名無しさん2006/01/15(日) 01:59:25
cstreamのオブジェクトのdout,dinというものに変わったみたいですね。
0043392006/01/15(日) 02:01:08
char[] name = "近藤".dup; // .dupをつけないと駄目でした。
Stream tmpStrm = new MemoryStream;
tmpStrm.writefln("私は%sです。", name);
ubyte[] sjisStr = utf8_sjis(tmpStrm.toString()); // なんらかの変換関数
dout.writeBlock(sjisStr, sjisStr.length);
0044デフォルトの名無しさん2006/01/15(日) 02:01:48
いよいよdmd.confの出番だな。
出力時の文字コードを設定で変更できるようにすればよんじゃないか?

日本ではMS821、EUC-JP、UTF-8さえ押さえておけばなんとかなるだろ。
0045デフォルトの名無しさん2006/01/15(日) 02:02:04
>>33
だめでした
0046デフォルトの名無しさん2006/01/15(日) 02:04:31
>>44
MS821って何?
0047デフォルトの名無しさん2006/01/15(日) 02:13:31
もしかしてdinも日本語通らないですか?

din.readLine(name);
とやって

printf("%s%s%s", toMBSz("あなたの名前は"), toMBSz(name), toMBSz("です。\n"));
あなたの名前はです。

printf("%s%s%s", toMBSz("あなたの名前は"), name, toMBSz("です。\n"));
あなたの名前は(null)(null)

になってしまいます。
これもstd.c.stdioのsscanfを使えという事でしょうか?
せっかくDなのでできればバッファサイズの事気にしないで済む
char[]を使える関数が使えると嬉しいなあと思うのですが。
というかgetlineが使えるC++より退化してるような…
0048デフォルトの名無しさん2006/01/15(日) 02:19:19
Dが扱える文字コードはutf8だけと考えた方がいいです。
0049デフォルトの名無しさん2006/01/15(日) 02:26:11
>>48
ありがとうございます。
日本語Windows環境ではコンソールでもWindowでも使い物にならないみたいですね。
Dが人気が無い理由が良く分かりました。
0050デフォルトの名無しさん2006/01/15(日) 02:31:32
>>49
だからtoMBSzがあるだろ
0051デフォルトの名無しさん2006/01/15(日) 02:45:04
例えば、テキストファイルから日本語文章を入力して
それを加工したい場合、MemoryStreamを用いて入力を
一度メモリに出力して、それをUTF8に変換してからプ
ログラム内で扱えば大丈夫ですよ。
Dが悪いというよりもUTF8を扱えないWindowsの方に問
題があると思います。

因に、Linuxの端末は色々な文字コードに対応していま
す。Dを試すならLinux環境の方が便利だと思います。
0052デフォルトの名無しさん2006/01/15(日) 02:45:12
>>47
>din.readLine(name);
>とやって

それだとnameがASCIIでもNULL文字列しか入らない
din.readf("%s", &name);
0053デフォルトの名無しさん2006/01/15(日) 02:46:37
>>47
printf("%s%.*s%s", toMBSz("あなたの名前は"), name, toMBSz("です。\n"));
これが正解。

確かに文字コード周りはなんとかしたほうがいいのかもねえ。
0054デフォルトの名無しさん2006/01/15(日) 02:49:46
>>53
Error: 4invalid UTF-8 sequence
こんなんでました
0055デフォルトの名無しさん2006/01/15(日) 02:51:36
俺はWindowsのコンソール用には、writefの変わりにもの作ってそれ使っているな。
まあただ単に、最終出力をtoMBSしているだけだが。

linuxは、ロケール設定して、
wcstombs(3)したらいいんでないの。
0056552006/01/15(日) 02:54:10
それと、UTF8のままやるなら、Poderosaでcygwin接続するとできるぞ。
cygwinってのと自分の環境でしかダメってのが気に入らないけど。
0057552006/01/15(日) 02:54:56
>>54
ソースコードをutf8で保存する
0058デフォルトの名無しさん2006/01/15(日) 02:58:34
>>54
>>52の問題かも

とりあえず家はこれで動いてる。

import std.cstream;
import std.windows.charset;
int main(char[][] arg)
{
char[] name = din.readLine();
printf("%s%.*s%s\n", toMBSz("あたいは"), name, toMBSz("です"));
name = din.readLine();
return 0;
}
0059デフォルトの名無しさん2006/01/15(日) 03:01:14
一行無駄な行がありますね
0060552006/01/15(日) 03:02:11
>>58
ああ、そっちか。すまん。
CFileは、readBlock、writeBlock以外にUTFのチェック処理があるので、
WindowsのコマンドプロンプトからMBSを入力するときは、
CFile.readBlockしたあとにUTF8へ変換しないとダメだったと思う。
0061デフォルトの名無しさん2006/01/15(日) 03:07:44
char[] name;
din.readf("%s", &name);

printf("%.*s\n", name);
printf("%s%.*s%s", toMBSz("おれは"), name, toMBSz("だ\n")); // 1
printf("%.*s%.*s%.*s", "おれは", name, "だ\n"); // 2
printf("%s%s%s", toMBSz("おれは"), toMBSz(name), toMBSz("だ\n")); // 3

>村田
村田
おれは村田だ
縺翫l縺ッ村田縺
Error: 4invalid UTF-8 sequence

// 3 のところで toMBSz にSJISを渡していたのが原因のようです

あと
din.readf("%s", name);
とすると文字列が空になります。
なんとなく違和感ありますが、こういうもんだと思うことにします。
0062552006/01/15(日) 03:08:11
>UTFへ変換
これはいらないか。

入出力を相互変換すると便利って言いたかったと思ってくれ。
readBlock->mbs to utf8->D
writeBlock<-utf8 to mbs<-D

このあたりはPerlIOの考えが個人的にかなり好きなんだが、
・・・Dにそういう考えが入ることはないだろうな。
0063デフォルトの名無しさん2006/01/15(日) 03:20:00
import std.stdio;
import std.cstream;
int main(char[][] args)
{
for(int i = 0; i < args.length; i++)
printf("%2d [%s]\n", i, &args[i][0]);
return 0;
}

コマンドラインから
hoge 申能
と実行すると
0 [(パス省略)\test.exe]
1 [\能]
0064デフォルトの名無しさん2006/01/15(日) 03:21:02
>>51
>MemoryStreamを用いて入力を一度メモリに出力して
何故MemoryStreamを経由しなければならないのでしょうか?
char[]に入れてtoUTF8では駄目なのですか?
0065デフォルトの名無しさん2006/01/15(日) 03:23:09
>>61
文字列のまとめ

* 文字コード
DではUTF以外は上手く扱えない。
UTF以外を使いたい時は、涙をこらえてprintfを使う。

* char[]?char*?
Dのchar[]はCのchar[]とは別物。先頭に大きさが入っていたり、末尾に'\0'がなかったりする。
よってprintfに渡したいときは"%.*s"を使う。
ただしリテラルはCと同じ。

こんなもんかな
0066デフォルトの名無しさん2006/01/15(日) 03:24:38
test 456申123能txt
1 [456申123能txt]

test 申123能txt
1 [\123能txt]

test 能txt
1 [\txt]

先頭にある2バイト文字の2バイト目が5Cのときだけ変?
0067デフォルトの名無しさん2006/01/15(日) 03:31:45
>>64
一応DのcharはUTF-8の文字列を意味するということだそうです。
ですからSHIFT-JIS等のコードがcharに入れられるのは不正だと
考えていいと思います。
ただ、入れただけで即エラーになるかというとならないのですが。
0068デフォルトの名無しさん2006/01/15(日) 03:32:47
test うううう
0 [...\test.exe]

コマンドラインパラメータに日本語使うと取得出来ませんね
0069デフォルトの名無しさん2006/01/15(日) 03:36:04
test もうだめぽ うううう eeee
0 [...\test.exe]
1 [eeee]

test "もうだめぽ" 'うううう' eeee
0 [...\test.exe]
1 [もうだめぽ]
2 ['うううう']
3 [eeee]
0070デフォルトの名無しさん2006/01/15(日) 03:40:08
Dでプログラムが使用できる総メモリ量を指定することはできないでしょうか?
0071デフォルトの名無しさん2006/01/15(日) 03:41:04
import std.cstream;
import std.windows.charset;
import std.string;
void main()
{
dout.writeLine(toString(toMBSz("あなたの名前は?")));
char[] name = din.readLine();
dout.printf("%s%.*s%s", toMBSz("あなたの名前は"), name, toMBSz("です。\n"));
}

toMBSzはあるのにtoMBSが無い理由が不明。
0072デフォルトの名無しさん2006/01/15(日) 03:46:25
printf("%s%s%s\n", toMBSz("おれは"), toMBSz(toUTF8(name)), toMBSz("だ"));

こうしてもなぜか
Error: 4invalid UTF-8 sequence
が出てしまいます(><)
0073デフォルトの名無しさん2006/01/15(日) 11:15:01
使えねーなぁ
0074デフォルトの名無しさん2006/01/15(日) 11:51:03
マジで国際化をちゃんとしないと消えるかも知れんなぁ。
0075デフォルトの名無しさん2006/01/15(日) 11:57:53
i18nはUTFでちゃんとされてるよ。
0076デフォルトの名無しさん2006/01/15(日) 12:09:42
どっちかというとdmd.confとかにlocale書くようなローカライズ屋根
0077デフォルトの名無しさん2006/01/15(日) 12:14:18
コンパイル時にlocaleが決まるなんて気持ち悪すぎ。
LANGをみて動作を変えるのが普通じゃないか
0078デフォルトの名無しさん2006/01/15(日) 12:15:40
やたら苦労した。
import std.cstream;
import std.windows.charset;
import std.regexp;
import std.string;
void main()
{
dout.writeLine(toString(toMBSz("あなたの名前は?")));
char[] name = din.readLine();
RegExp re = new RegExp("ほげ","g");
char[][] m = re.match(fromMBSz(name));
dout.printf("%s%s", toMBSz("あなたの名前は"~m[0]), toMBSz("です。\n"));
}
0079デフォルトの名無しさん2006/01/15(日) 12:17:38
gettextがあるじゃないかw
0080782006/01/15(日) 13:04:05
あー全然駄目。
英数字だけで入力したり、正規表現使うと死ぬ。
0081デフォルトの名無しさん2006/01/15(日) 13:07:46
>>78
そりゃそうだろね。
どっちかっていうと、

import std.cstream;
import std.windows.charset;
import std.utf;
import std.regexp;
import std.string;
void main()
{
dout.writeLine(toString(toMBSz("あなたの名前は?")));
char[] name = toUTF8(din.readLine());
RegExp re = new RegExp("ほげ","g");
char[][] m = re.match(name);
dout.printf("%s%s", toMBSz("あなたの名前は"~m[0]), toMBSz("です。\n"));
}

ではないかと。
0082デフォルトの名無しさん2006/01/15(日) 13:09:37
漏れには違いが分からん
0083デフォルトの名無しさん2006/01/15(日) 13:12:01
import std.cstream;
import std.windows.charset;
import std.utf;
import std.regexp;
import std.string;
void main()
{
dout.writeLine(toString(toMBSz("あなたの名前は?")));
char[] name = toUTF8(din.readLine());
RegExp re = new RegExp("ほげ","g");
char[][] m = re.match(name);
dout.writeLine(toString(toMBSz("あなたの名前は" ~ m[0] ~ "です。"));
}

やっとprintfが消えた。
0084デフォルトの名無しさん2006/01/15(日) 13:13:29
Dで日本語扱うのって文字コード変換しまくってて重そうだな。
0085デフォルトの名無しさん2006/01/15(日) 13:37:04
>>84
WindowsのコンソールがUTFを扱えれば変換しなくてもいいんだけどな。
0086デフォルトの名無しさん2006/01/15(日) 13:55:04
いや、普通のテキストファイルだって
UTF-8なんて使わないで、SJISかEUC使うでしょ?
結局UTFに一旦変換して処理して元のコード戻さなきゃ駄目じゃん。
0087デフォルトの名無しさん2006/01/15(日) 14:27:14
Win32の場合もそうだが?
0088デフォルトの名無しさん2006/01/15(日) 14:29:49
コード変換が重いって話なんだから、
UTF8で統一してみるってのも手だと思うけどなあ。

内部コードにSJIS使いたいですとかそういう話?
0089デフォルトの名無しさん2006/01/15(日) 14:31:05
>>86
将来的には正しい選択だったと思う日が来るよ
来るんじゃないかな?
来ればいいなぁ
0090782006/01/15(日) 14:54:10
import std.cstream;
import std.windows.charset;
import std.utf;
import std.regexp;
import std.string;
void main()
{
dout.writeLine(toString(toMBSz("あなたの名前は?")));
char[] name = fromMBSz(din.readLine());
RegExp re = new RegExp("(あ|ほ)(げ)+","g");
char[][] m = re.match(name);
if (!m) m = new char[][1];
dout.writeLine(toString(toMBSz("あなたの名前は" ~ m[0] ~ "です。")));
}
悪あがき。
文字をきちんと分けてやれば正規表現通るか。
でも、正直汚すぎる。

>>81 >toUTF8
こちらこの世に存在しないはずのWin98なもので。。。
fromMBSzを読み替えてくだしい。
0091デフォルトの名無しさん2006/01/15(日) 17:01:54
もしかしてWindows Vistaでもこの状況は続くのか?
0092デフォルトの名無しさん2006/01/15(日) 19:29:19
うちの環境 dmd v0.141 だと
char[] name = toUTF8(din.readLine());
とやっても name がUTFになってくれないみたいです。(SJISのまま)
import std.utf; もやってますし、ソースは UTF8 で保存しています。
どうも toUTF8 がスルーされてるような気がするのですが、
何か間違ってるのでしょうか?
同じ症状出る方はいらっしゃいますか?
0093デフォルトの名無しさん2006/01/15(日) 19:35:48
これが実装。なーんもしない。

char[] toUTF8(char[] s)
in
{
validate(s);
}
body
{
return s;
}
0094デフォルトの名無しさん2006/01/15(日) 19:38:54
sjisだったら上のようにfromMBSzでいいんでは?
出力はUTF8なはず。
0095デフォルトの名無しさん2006/01/15(日) 19:46:15
char[]は「UTF-8の文字列」という仕様になってるんじゃなかったけか。
生の文字列はbyte[]で受け取って、文字コードを判別したら
自力でUTF-8なりUTF-16なりに変換しろってことだと思う。
0096デフォルトの名無しさん2006/01/15(日) 19:46:42
>>93
うほっ。まじっすか。

>>94
うまくいきました。ありがとうございます。

import std.windows.charset;
import std.file;
の2つを同時に import すると toMBSz が conflict するので、
実際使いたかった import std.file; の方だけ import してたため、
fromMBSz が使えなかったようです。

これはどうすれば回避出来るのでしょうか?

質問ばかりで申し訳ありません。
0097デフォルトの名無しさん2006/01/15(日) 19:58:12
>>96
toMBSzをstd.file.toMBSzか
std.windows.charset.toMBSzに書き換える
0098デフォルトの名無しさん2006/01/15(日) 20:01:45
using std.windows.charset.toMBSz;
みたいなのは無いの?
0099デフォルトの名無しさん2006/01/15(日) 20:03:49
alias使うんじゃないか?
0100デフォルトの名無しさん2006/01/15(日) 20:24:24
しゃあない。
実行OSに合わせて文字コードを最適化する処理を書いてうぉるた君に送ってあげるか。
0101デフォルトの名無しさん2006/01/15(日) 21:52:49
あんまりちゃんと設計してないけどこういうのはどう?
ttp://www.42ch.net/UploaderSmall/source/1137329516.zip
0102デフォルトの名無しさん2006/01/15(日) 22:23:43
乙。今のままだと入力がないとAVなので、
CFileCC::
override char[] readLine() {
char[] rl = CFile.readLine();
return rl?cc.fromMBS(rl):"";
}
みたいにする必要があるな。
あと、dccoutとか長いからなんかいい名前ないかな。
0103デフォルトの名無しさん2006/01/15(日) 22:37:21
>>102
入力がないと落ちるのではなくてreadLineをnul終端と勝手に仮定して、
fromMBSというchar*を引数にする関数を呼び出しているのが問題だと思う。

nul終端の文字列への変換関数としてstd.string.toStringzがあるからそれを使って
override char[] readLine() {
auto r = std.string.toStringz(CFile.readLine());
return cc.fromMBS(r);
}
とすれば大体OKかな。


......というか、この手の勘違いする人を無くすために
A[]からA*への型変換をD言語から廃止してほしいなぁと思う今日このごろ。
01041032006/01/15(日) 22:47:47
あ、すまん、fromtMBSzと勘違いしてた。
上の文は忘れて
0105sakurai2006/01/15(日) 22:50:26
なんか、死んでました。すいません。
http://www.digitalmars.com/d/archives/digitalmars/D/learn/1510.html
よくわかりませんが、こう言った議論があるようなので、そこらへん見てみます。

http://sakurai.s59.xrea.com/charset/a001.html
機械翻訳してみました。
cp1252は変換モジュールをつくっていたようです。
windowsのsjisは、cp932とかなんですよね。
01061012006/01/15(日) 22:51:55
>>102-103
あちゃ、スマソ。fromMBSzの仕様勘違いした。
確かによく考えたら引数のほうがC文字列だ罠
修正するべきは
windows.charconvの
CodePage::
char[] fromMBS(char[] s) {
return fromMBSz(.toStringz(s));
}
です
01071032006/01/15(日) 22:55:58
お、勘違いした指摘が結果的に役にたったみたいなのでラッキーw
0108デフォルトの名無しさん2006/01/15(日) 23:00:08
CodePageで引数のcodePageを関数に渡していないのは意図的?
codePageが何するものかわからんが。
01091012006/01/15(日) 23:19:54
>>108
よく知らないけれどUnicodeと変換先の文字コードの変換表だと思って指定できるようにした。
はい、引数に書くのを思いっきり忘れましたillorz
- return .toString(toMBSz(s));
+ return .toString(toMBSz(s, codePage));
- return fromMBSz(.toStringz(s));
+ return fromMBSz(.toStringz(s), codePage);

cstreamccとかかなり手抜き実装です。
本当はgetcのほうをオーバーライドしないといけないんだろうけどやってない…
マルチバイト文字の境目はどうやって判定すれば良いのやら
0110デフォルトの名無しさん2006/01/15(日) 23:23:41
GCの挙動が今一つわかりません。
いつまでたっても全くメモリが開放されないみたいなんです。
auto付けてfullCollectしてんのになあ。

import std.cstream;
import std.gc;

class GCTest {
    private void[] _mem;
    this(size_t s) { _mem = new void[s]; }
}

int main()
{
    char c;
    for (uint i = 1; i <= 3; ++i) {
        dout.writefln("%dtimes.", i);
        func();
        fullCollect();
        din.flush();
        din.read(c);
    }
    return 0;
}

void func() { auto GCTest obj= new GCTest(1024*1024*200); }
0111デフォルトの名無しさん2006/01/15(日) 23:38:49
これ、コンパイラが完成すれば最強な言語なんじゃないか?
0112デフォルトの名無しさん2006/01/15(日) 23:46:18
標準のテンプレートライブラリも欲しい。

あと最強かどうかは用途とか状況による
0113デフォルトの名無しさん2006/01/15(日) 23:49:36
>>109
std.streamのFileとかMemoryStreamの定義見れば分かると思うけど、
定義しないといけないのはgetcじゃなくてreadBlock。

しかし、std.stream.Streamって色々詰め込みすぎで
派生するのに何を定義すれば良いかサッパリわからんから困る。

低レベルのIOと高レベルのIOでクラスを分割してくれとか思ってしまう。
0114デフォルトの名無しさん2006/01/15(日) 23:57:29
STLでもstreamは複雑でしたね。

ところでGCの件が解決いたしません。
Linuxのシステムモニタでプロセスのメモリ使用量を追いかけているのですが
やっぱり開放してくれない。
0115デフォルトの名無しさん2006/01/16(月) 00:35:03
C++の場合は低レベルと高レベルを分離して、
streambuf,iostream という風になっている。
なので派生したいときは、
streambufだけ面倒見れば良いから拡張はしやすいんだよなぁ

Dの場合は全部一緒にしてるから、
std.stream.Streamを拡張するのが、正直ダルイしヤヤコシイ。
頼むからもうチョイ拡張をしやすい設計にしてくれー
0116sakurai2006/01/16(月) 01:18:55
http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D/32124

こんな返答が、、、。libiconvを使うという、、、。
0117デフォルトの名無しさん2006/01/16(月) 02:59:05
>>110
GCのデバッグ出力を見てみた感じ、そのデカい配列がずっとstaticデータ
領域から参照されていることになってて、そのせいで解放されていないぽい。
強制的に
version (Win32) {import internal.gc.win32;}
version (linux) {import internal.gc.gclinux;}
int main()
{
void *p;
uint nb;
os_query_staticdataseg(&p, &nb);
removeRange(p);

...以下略...
}
としたら解放されるようになるけれど、こんなことやると他でバグるはず。

Conservative GC だと仕方ないような気もするけど…
0118デフォルトの名無しさん2006/01/16(月) 06:22:15
MBSだけど、yaneSDK4Dのy4d_aux.widestring使えば
めちゃくちゃすっきりすると今更思った。
import y4d_aux.widestring;
import std.cstream;
import std.utf;
void main()
{
char[] ask = "あなたの名前は?";
dout.writeLine(toMBS(ask));
char[] n = toUTF8(toWCS(din.readLine()));
char[] ans = "あなたの名前は" ~ (n?n:"?") ~ "です。";
dout.writeLine(toMBS(ans));
}
何でそのまま標準に取り入れなかったんだろう?
0119デフォルトの名無しさん2006/01/16(月) 07:15:03
110じゃないけど、俺もGCの挙動がわからない。
GCがメモリを溜め込むときと、きちんと動いているときがあるのですが、
何が悪くて、なにがよいのかさっぱり分からない。

ちなみに>>110で、
>>そのデカい配列がずっとstaticデータ
>>領域から参照されていることになってて
参照しているstaticデータってのはどれで、どうみたらそれが分かります?
それで正しい動作なんですか?
0120デフォルトの名無しさん2006/01/16(月) 07:24:36
>>116
iconv使った事あるが2ちゃんねるのdatをSJIS->UTF8で全部変換出来なかった事がある・・・
0121デフォルトの名無しさん2006/01/16(月) 10:08:00
>>117
fullCollectもしくはminimizeが呼ばれれば開放しないと
いけないのでは?
01221172006/01/16(月) 11:34:49
>>119
今のphobosの実装だと、gc_initの中(src/internal/gc/gc.d:105)で、
静的変数やらグローバル変数を置くために予約されたメモリ領域をまとめて
全部gc.addRange()してるんだが、その領域の使われてない部分が未初期化で(※)、
そこのゴミデータのビットパターンが"たまたま"newした領域のアドレスと
同じ値になってると、その領域は参照されてるとみなされて開放されない、
というパターンに見える。でかい配列になるほどゴミデータ中の値がたまたま
その配列の中へのポインタに誤認識される率が高いので>>110みたく200MBも
gcから取るとこうなりやすいんじゃなかろうか。
※ でもbssって普通ゼロクリアされてるような気もするんだが…わからん。
※ その辺dmdが何かバグってるのかもしれない。一応バグレポしといたほうがいいかも

>どうみたらそれが分かります?
debugオプション全部入りでphobosをビルド

>>121
開放される方が望ましいのは確かだが、
Conservative GCだとこの手の過剰認識は仕方がないかと…
0123デフォルトの名無しさん2006/01/16(月) 12:14:22
>>122
なら、その領域をnullに初期化すれば正常になるわけですね。
0124110=1232006/01/16(月) 12:22:36
実験してみたのですけど、一度に11,108KB以上の大きさで確保
されたメモリ領域がGCでうまく開放されませんでした。
下のプログラムでsizeを11,108KB以上にすると、GCが保持する
メモリ領域がsizeづつ増える場合もあるし増えない場合もあり
ました。
ところが、sizeが11,108KB未満だとGCはsizeより多く保持する
ことはありませんでした。
117さんの仮説によると、このsizeの条件がプログラムを走らせ
たときの状況で違ってくるってことでしょうか。
でも、これって明らかにバグな気が・・・。

import std.cstream;
import std.gc;

int main()
{
    const size_t size = 1024*1024*11 + 1024*107 + 1023;
    char  c;

    for (uint i = 1; i <= 10; ++i) {
        void[] mem = new void[size];
        dout.writefln("%dtimes.", i);
        din.read(c);
    }

    return 0;
}
0125110=1232006/01/16(月) 12:27:31
英語が苦手なので、どなたかバグレポートして頂けないものでしょうか?
01261172006/01/16(月) 13:36:48
>>123-125
いや普通にライブラリのglobal変数が置いてあるから、
nullで潰すと何も動かなくなると思う。ていうか
> 領域の使われてない部分が未初期化で
ごめん嘘ついた。もう少しマジメに調べてみたら俺の環境の場合、
std/utf.d の ubyte[] UTF8stride の途中にでてくる 0x02020202 が
mem.ptr と mem.ptr+size の間なもんだから開放されなくなってた。
実行環境によると思うがデカい配列は大抵こいつかstd/ctype.d の _ctype[] に引っかかってそう

今からD.bugsにレポート投げとく。けど、元々GCってこういうもんなので、
バグというのは酷かと…どうやって直せるんだろ、これ。
0127デフォルトの名無しさん2006/01/16(月) 14:36:22
>>120
nkf使っとけ。
0128デフォルトの名無しさん2006/01/16(月) 14:37:24
std.nkf; ってあるの?
01291192006/01/16(月) 14:54:35
>>117
マジサンクス。
分かった気がする。

あと、gcx.dのminimizeが未実装になっているけど、
これは公式のガベレージコレクトのページにあるように
>普通は解放されたメモリをOSに返すことはしません。
>代わりに内部のプールに保持するのが一般的です。
ということから?
これだと、増えなくなることはあるけど、一度でかい領域を取ってしまうと戻せなくなるってことなの?
0130デフォルトの名無しさん2006/01/16(月) 14:58:33
>>128
ないですが、Cの関数は直接呼べるので、DLL持ってくれば使えます。
そういうのありなら、Apacheのapr-iconvも文字コード変換に関してはなかなか信頼できるのではないでしょうか。
ただ、公式サポートしては何か悲しい・・・。
DのライブラリもCAPNみたいになっちゃうのか。
いや、phobosは手抜きくさいので、
むしろD版CPAN作って、みんなでライブラリを作りまくったほうがいいかもな。
そこで評価の高いものを標準に入れてもらったり。
0131デフォルトの名無しさん2006/01/16(月) 15:02:16
>>129
ソースを覗いてみると、gcが確保した領域(ブロック)は開放されてないように見える。
0132デフォルトの名無しさん2006/01/16(月) 15:17:04
>>131
gcが確保した領域=標準のnewで獲得した領域ですよね..

>>126
ちょっと考えてみて既に挫折しましたが、
保守的なGCだと、どうがんばってもこういうテーブルが偶然一致する値があるかぎり
開放できない場所が出てくるわけですか..
いや、「ここは、ポインタを置いていませんよ」という意味で、GCの管理外にしとけばいいのかな。
removeRangeがそれみたいだけど、
これってGCがサイズを知っていること前提のIF(先頭ポインタのみ指定)なので、
もしやstaticな領域の場合区切りがないとかで使えない?
0133デフォルトの名無しさん2006/01/16(月) 15:27:08
ubyte[256] UTF8stride_static = [..略..];
ubyte[] UTF8stride;

static this()
{
UTF8stride = UTF8stride_static.dup;
UTF8stride_static[0 .. length] = 0;
removeRange(UTF8stride);
}

こうしたらいいのかな。
0134デフォルトの名無しさん2006/01/16(月) 15:35:35
version1.0マダーッ?
マダーッ?
0135デフォルトの名無しさん2006/01/16(月) 15:44:18
保守的なGCなら、レジスタサイズ以上のバッファは、つねにポインタとしてみると
GCの管理領域を指す可能性があるので、しようがない。
外部からの入力もあるわけだし、そこまで気を使ってコーディングできないわな。
DのGCは偶然によってリークすることがあるってことだ。
0136デフォルトの名無しさん2006/01/16(月) 15:46:40
Dの言語仕様では、保守的なGCを規定してるわけではなく、GCなら何でもいいという規格だよね。
ところで、GCもライブラリの一部のようなので、入れ替えできる、、、かな?
0137デフォルトの名無しさん2006/01/16(月) 15:46:51
>>132
removeRangeはaddRangeしたものを外す専用だから、あんまり使えない。

例えば class A { int n; void* p; } の A.n がポインタじゃないことの
判定を頑張るのは大変だからサボるのが保守的なGCで、このパターンが
避けられないのはどうしようもないと思う。けど、pointerを含む可能性が
ある型のnewとpointerを含まない型のnewを別に管理するGCになっていれば、
ubyte[] の中身を誤認識するパターンは保守的なGCでも回避できるはず。
(DならCと違って言語仕様でvoid*をintにキャストしたりするのも禁止されてるし)

巨大な配列をサーチする必要もなくなって高速化するしいいことづくめだと思うので
そういう風にgcを改造してWalterに送りつけたら採用してもらえるかも
0138デフォルトの名無しさん2006/01/16(月) 15:49:21
ただ、現状コンパイラがgcに型情報を渡してくれないので、
gcだけじゃなくてコンパイラも改造しないといけないのがめんどい罠
0139デフォルトの名無しさん2006/01/16(月) 16:01:40
>>137
なるほど。
void *をintにキャストできないのに、
ubyte[]になら入れ込める(いれれる前提の仕様)というのはどうなのかなと思うな。
0140デフォルトの名無しさん2006/01/16(月) 16:48:40
void*をintにキャストするなんてエッチなんですね^^
0141デフォルトの名無しさん2006/01/17(火) 00:38:07
Apacheのリソースプールに置き換えたらいいんじゃないか?→GC
0142デフォルトの名無しさん2006/01/17(火) 02:55:45
>>141
あれは、一定サイクルで動いているプログラムじゃないと、
開放するタイミングが難しいんじゃないの。
0143デフォルトの名無しさん2006/01/17(火) 11:55:39
>>141
kwsk
0144デフォルトの名無しさん2006/01/18(水) 14:23:43
phobosに探索用のライブラリってないんですね。
Cのを使えってことかな?
DってCへの依存度が高過ぎる気がしないでもない。
0145デフォルトの名無しさん2006/01/18(水) 17:01:03
>>144
誰かが作らない限りずっとCのままだから、必要な人がつくるべきじゃないかな?
0146デフォルトの名無しさん2006/01/18(水) 18:56:16
>>144
ちなみに探索用のライブラリってどんなもの?
0147デフォルトの名無しさん2006/01/18(水) 19:33:44
import std.cstream;
import std.boxer;

int main()
{
Box x = box(4);
dout.writefln(unbox!(int)(x));

return 0;
}

を普通にコンパイルすると
gcc main.o -o main -lphobos -lpthread -lm
main.o(.gnu.linkonce.t_D3std5boxer24__T16unboxCastIntegerTiZ16unboxCastIntegerFS3std5boxer3BoxZi+0x15): In function `_D3std5boxer24__T16unboxCastIntegerTiZ16unboxCastIntegerFS3std5boxer3BoxZi':
: undefined reference to `_assert_3std5boxer'
collect2: ld はステータス 1 で終了しました
--- errorlevel 1

なります。assertのどれかがこけてるようなのでreleaseモード
でコンパイルしたらコンパイル成功。

これってバグでしょうか?
0148デフォルトの名無しさん2006/01/18(水) 19:37:18
>>146

Cでいうとbsearchです。
Cのbsearchだとポインタが剥き出しだし、引数で渡す比較関数
はextern (C)を付けて書かないといけないから嫌だなと思うの
です。
0149デフォルトの名無しさん2006/01/18(水) 20:04:20
>>147
確認してないが前にnewsgroupで
http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D/31993
>std.boxer doesn't seem to be built into phobos. Need to do the following
># dmd test c:\dmd\src\phobos\std\boxer
>to compile for DMD v0.141, v0.142, and v0.143
とか言ってる人がいた。バグじゃね?
01501472006/01/18(水) 20:12:42
どうやらstd.boxerの

427 assert (value.type() !is null);

が原因みたいですね。そこで assert (value.type() is null)に
してみたんですけど、やっぱりこけるんですよ。
なんでだろ?
0151デフォルトの名無しさん2006/01/18(水) 20:29:38
>>149にある通り、boxer.dがphobosに欠けているらしく、
boxer.dを引っ張り出してきていっしょにコンパイルすれば通るみたい。
01521472006/01/18(水) 20:37:50
あ、ほんとだ。
でも、unboxableは普通にコンパイルしてもこけないんですよね。
unbox使うとこけちゃいます。
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はデストラクタを呼ぶだけで、即インスタンスを
開放してくれるわけではありませんね。
02532472006/01/25(水) 20:05:02
>>246
やっぱり何回やっても家の環境だとtest.imgは1byteのままです。
dmdを最新版にしてみたらどうでしょうか?

dmd0.144でやってみても全く正常でした。
0254デフォルトの名無しさん2006/01/25(水) 20:05:09
>>249
恐らくD言語研究室の記述だと思うが、
例えば>>110のプログラムのfunc()内でdeleteしたとしても
挙動が変わらないところを見ると記述の通りじゃないかと思う。
メモリの解放が全てGCに任されているのであれば
deleteしてもやっぱりゴミに邪魔されて解放できないのでは?
02552462006/01/25(水) 20:17:18
あ、test.img は1.4MBのファイル使ってます。
1byteだと動いちゃったりするかも?

dmd は最新のはず。もう一回ダウンロードして試してみます。
02562462006/01/25(水) 20:23:07
ライブラリのバグくさいのでライブラリをトレースしたいんだけど、
dmd/src/std/*.d をコンパイルして *.obj にしたのをリンクする
ってのではいかんのかな?

writefln 仕込んでもぜんぜん出力してくれないんだけど。
0257デフォルトの名無しさん2006/01/25(水) 20:27:32
モジュール名変えるのが早いんでない?
02582472006/01/25(水) 20:44:25
2MBのファイルで試してみたけど何度やっても正常でした。
なんでしょうね?
0259デフォルトの名無しさん2006/01/25(水) 21:36:43
呼び出すのが'super.'だったり's.'だったり
これ追うの死にそう
0260デフォルトの名無しさん2006/01/25(水) 23:00:12
>>256
あ、writeflnなんかやると、
streamのほうに書き出されます。
0261デフォルトの名無しさん2006/01/25(水) 23:07:33
>>244
他から参照があっても開放されるよ。(つーか正確にはフリーリストに
戻されるだけで物理的には開放されなくて、次他でnewがあったときに
使いまわされるようになる。)
ソースで言うと internal/gc/gc.d の _d_delclass で _gc.free されてる。

>>254
うちだと>>110の最後の行を
void func() { auto GCTest obj= new GCTest(1024*1024*200); delete obj._mem; }
に変えたら消費メモリは増えなくなったが…
02622612006/01/25(水) 23:10:16
配列なら _d_delarray か。ゴメソ
02632542006/01/25(水) 23:31:03
>>261
ごめんなさい。こちらでもうまく行きました。
どう書いたかはきっと予想通りです。
02642442006/01/26(木) 01:20:48
>>261
どうもです。

>>256
phobos.libが先にあるからかな?
phobosをデバッグモードでコンパイルしてデバッガで追っかけたほうが早いかもよ。
0265デフォルトの名無しさん2006/01/26(木) 10:27:29
>>136
できる。boemGCにいれかえたことがある
仕様上は「保守的なGCを規定してるわけではなく、GCなら何でもいいという規格」になってるけど、
現在の実装だとむりぽ

>>137
送りつけたけど採用されなかったお

wxDのページのmiscでこうかいしてるお
http://wxd.sourceforge.net/misc.html
02662462006/01/26(木) 13:00:49
原因判明
stream.d の中に
streamPos = s.seek(-bufferSourcePos, SeekPos.Current);
というのがあるんだけど、
bufferSourcePos は uint なのに対して、
ulong seek(long offset, SeekPos whence)
というインターフェースになっている。
ここで、uint の値を negate して、long に昇格できないという問題らしい。

import std.stdio;

void func(long lx)
{
writefln("%d", lx);
}

int main(char[][] args)
{
uint x = 1;
func(x);
func(-x);
func(1);
func(-1);
return 0;
}

結果
1
4294967295
1
-1
02672472006/01/26(木) 21:38:02
うちの環境では不具合がでなかったのは偶然でしょうか?
0268デフォルトの名無しさん2006/01/26(木) 22:41:29
Linuxではseek関数内でlseekの第二引数にoffsetを渡してるが、
ここでintに再びキャストされて問題無くなるみたい。
02692472006/01/26(木) 23:20:03
それは報告した方がよさそうですね。
0270デフォルトの名無しさん2006/01/27(金) 19:55:52
>>246
凄い。細かいとこまでフォローしてる。>D.bugs
0271デフォルトの名無しさん2006/01/29(日) 12:58:12
std.zipって圧縮するファイルが多くなるとやけに遅くなる気がするんだが、気のせい?
0272デフォルトの名無しさん2006/01/29(日) 13:06:27
ソース付いてるんだから読んでみたら?
0273デフォルトの名無しさん2006/01/29(日) 16:31:29
Windowsのコマンドプロンプト
プロパティのフォントでMSゴシックにしてchcp 65001やったらちゃんと日本語表示されたヨ!

あと、コマンドラインで日本語使えるようにinternal.dmain2を書き直してたらDMCのバグ見つけちまった。
第1引数の最初の文字がMBSだと正しく文字列が取得できねぇ。

test 日本語.txt にほんご.txt
1:..\test.exe
2:{.txt
3:にほんご.txt

これ何とかならんかな。
0274デフォルトの名無しさん2006/01/29(日) 16:40:25
>>271
ファイルの中身を全部メモリ上に保持してるんじゃなかったけ?>std.zip
0275デフォルトの名無しさん2006/01/29(日) 17:27:19
>>273
>>60-70 あたりと同じことか?
0276sage2006/01/29(日) 21:29:10
そうそう。
コマンドプロンプトでデフォになってんのがラスタフォントなんだけど、こいつがUTF8を扱えない。
MSゴシックはUnicodeフォントなんでUTF8を表示できるらしい。
この設定やればtoMBSzなんか使わんでも日本語表示が出来る。

もう一つの方なんだが、phobosではinternal.dmain2の中で
int main(int argc, char** argv)
が定義されていて、この中でgcとかの初期化をやった後
int main(char[][] arg)
を呼び出してる。
ところが[char** argv]の時点ですでにおかしくなってる。
ためしにCで引数を表示するプログラムを書いて
BorlandとDMのCコンパイラでコンパイルしたら、やっぱりDMだけおかしかった。
だからDMCのバグを直してもらうか、他のCコンパイラを使わなきゃいかん。
0277デフォルトの名無しさん2006/01/29(日) 22:48:47
>>273
プロパティでラスタフォントしか選択肢がないのだけど、どっかで設定しないといけない?
オレだけか・・?
0278デフォルトの名無しさん2006/01/29(日) 23:28:02
ISOが正式に採用するのってまだですか?
02792762006/01/30(月) 00:00:16
>>277
ひょっとしてWin98ですか?
NT系じゃないと使えないかも
0280!=2772006/01/30(月) 00:12:52
>>279
先生、XPですがMSゴシック選択肢にありません
ttp://www003.upp.so-net.ne.jp/kish/font/ttf_con.html
この辺りを参考にレジストリを弄って見たけど上手くいかん...
02812762006/01/30(月) 00:23:31
>>280
オレは特に何もした覚えはないけどなぁ。
ttp://hp.vector.co.jp/authors/VA000092/nt/console.html
オレはこのページを見て気づいた。
02822772006/01/30(月) 04:59:17
XPだけど、選択肢がないです。
02832762006/01/30(月) 12:35:48
コマンドプロンプト ラスタフォントで検索してみたけどMSゴシックはちゃんとあるみたいだ。
んー何が原因だろ?
[オプション]タブの設定とかはどうなってます?
現在のコードページの欄を変えると、選択できるフォントが変わるみたいだけど。
コードページごとにラスタフォントともうひとつTrueTypeフォントが選択できるはずなんだけど。
0284デフォルトの名無しさん2006/01/30(月) 15:04:33
DMD 0.145
0285デフォルトの名無しさん2006/01/30(月) 16:47:27
バグ修正だけか・・・

いつも思うんだけど
Fixed D.bugs/6068
Fixed D.bugs/6079
とせずに

せめて要約しろよと思う
0286デフォルトの名無しさん2006/01/30(月) 16:50:30
コードページの変更の件は2000だったらできた
でもさ,

printf("chcp 65001 でコードページを変更しても");
printf("このように");
printf("1行目しか表示されないんですけど\n");

(出力)
chcp 65001 でコードページを変更しても
>

なんか間違ってる?
0287デフォルトの名無しさん2006/01/30(月) 18:50:15
>printf("chcp 65001 でコードページを変更しても");
>printf("このように");
>printf("1行目しか表示されないんですけど\n");

>(出力)
>chcp 65001 でコードページを変更しても

これもDMCのバグだな。Cでコンパイルしても同じことが起きる。
とりあえずwritefなら正しく表示できるのでそっち使うべし。
02882862006/01/30(月) 19:35:29
>>285
激しく同意

>>287
バグなのか・・・
dout.printfでも正しく表示されますた
文字コード周りはいろいろ問題だらけだなあDM
02892872006/01/30(月) 23:50:15
前言撤回
writefでも一度改行すると後が表示されねぇ。
使えるのはdout.printfだけか・・・orz

プログラムの引数に日本語使えない問題は、phobos改造して出来るようになったよ。
参考
ttp://www.digitalmars.com/d/archives/digitalmars/D/bugs/6087.html

0290デフォルトの名無しさん2006/01/31(火) 18:12:36
ちょっと質問
7-zip32.dllを動的に使いたいんだが以下のプログラムだと
何故かAccess Violationってエラーが出る。
誰か助けてくれ。

alias int function(HWND,LPCSTR,LPSTR,DWORD) Com_fp;//Command
int main()
{
HMODULE h;
FARPROC fp;
LPSTR dummy;
Com_fp comfp;
h = LoadLibraryA("7-zip32.dll");
fp = GetProcAddress(h,"SevenZip");
if(fp == null)
{
return 1;//Error
}
comfp = cast(Com_fp) fp;
return (*comfp)(h,"e sample.zip",dummy,32767);
}
0291デフォルトの名無しさん2006/01/31(火) 18:13:33
あと、ちなみにSevenZip以外の関数はどうやら正常に動作するようだ。
0292デフォルトの名無しさん2006/01/31(火) 18:33:57
extern(C)?
02932902006/01/31(火) 19:47:02
>>292
それってこういうことか?
alias extern(C)int function(HWND,LPCSTR,LPSTR,DWORD) Com_fp;//Command

やってみたけど、同じだったorz
0294デフォルトの名無しさん2006/01/31(火) 20:14:18
>>293
もしかして:
  extern(C)alias int function(HWND,LPCSTR,LPSTR,DWORD) Com_fp;//Command 
02952902006/01/31(火) 20:48:53
>>294
やってみたけど、なんか何も表示されず止まったままになったorz
0296デフォルトの名無しさん2006/01/31(火) 21:24:49
extern(Windows) じゃないの?
0297デフォルトの名無しさん2006/01/31(火) 21:57:18
elephantってどうなったの?
0298デフォルトの名無しさん2006/01/31(火) 23:28:11
extern(NullPo)
0299デフォルトの名無しさん2006/01/31(火) 23:46:25
extern(Gattu)
0300デフォルトの名無しさん2006/02/01(水) 00:04:33
D-.NET&D-JVMをまず出しなさい。
話はそれからだ。
0301デフォルトの名無しさん2006/02/01(水) 00:12:11
D.NET はともかく、
D-JVMは相当言語機能削らんと無理っぽいような。
0302デフォルトの名無しさん2006/02/01(水) 00:17:05
この言語普及すんのか?
0303デフォルトの名無しさん2006/02/01(水) 00:22:16
>>300
現在D.NETのサイトは消失中
0304デフォルトの名無しさん2006/02/01(水) 01:01:33
VMって負の遺産になりそうな予感。
0305デフォルトの名無しさん2006/02/01(水) 01:19:32
僕も最近のはやりに乗る感じでジェネリック実装するのがいいと思うよ。
ネーティブでやるのはきついかもしれんけど、C++/CLIに負けちゃうんじゃないかとちょっと不安。
0306デフォルトの名無しさん2006/02/01(水) 01:47:16
LIST欲しいなあ。
03072902006/02/01(水) 10:27:19
>>296
extern(Windows){
alias int function(HWND,LPCSTR,LPSTR,DWORD) Com_fp;
}
って変えてみたけど、結果は一緒だった。
0308デフォルトの名無しさん2006/02/01(水) 11:13:24
>>307

ひょっとしたら、こうかもしれない。とりあえずaliasは無しで、
extern(Windows) export int function(HWND,LPCSTR,LPSTR,DWORD) fp;

これが上手く行ったらalias版でやってみてはどうでしょうか?
03093082006/02/01(水) 11:18:27
( ´ー`).。oO(LoadLibrary()は諦めてインポートライブラリを使えば楽なんだけどなぁ)
0310デフォルトの名無しさん2006/02/01(水) 11:42:06
>>308
あれ?書き換えてみたけどコンパイルすら通らないorz
>>309
そうなんだけど…
ツールみたいなのを作ってるので一つのDLLがないだけで
他の機能が使えないって状況はちょっとまずいかなって思ってる。
だからなるべくLoadLibrary使いたい。
03112962006/02/01(水) 12:22:06
>>290
てか良く見たら、extern(Windows)以前の問題で
>LPSTR dummy;
>...
>return (*comfp)(h,"e sample.zip",dummy,32767);
ほんとにこう書いてるならそらAccess Violationだわ。
dummy用にメモリ確保するか最後の32767を0にするかしないと。

あとこの場合は大丈夫だけど、Dの文字列"e sample.zip"を
toStringzせずにCの関数に渡すのはお勧めできない。
03122902006/02/01(水) 13:01:49
>>311
なるほど。解決した、ありがとう。
0313デフォルトの名無しさん2006/02/01(水) 13:56:02
import std.loader;
import std.c.windows.windows;
import std.string;

int main()
{
try
{
auto ExeModule dll = new ExeModule("7-zip32.dll");
void* symbol = dll.getSymbol("SevenZip");
if (null == symbol) throw new ExeModuleException(ExeModule_Error());

int function(HWND,LPCSTR,LPSTR,DWORD) SevenZip;
*(cast(void**)&SevenZip) = symbol;

return SevenZip(null, toStringz("e sample.zip"), null, 0);
}
catch (ExeModuleException e)
{
e.print();
}
return 0;
}

ぬるぽ
0314デフォルトの名無しさん2006/02/01(水) 15:51:41
俺が出した結論はこうだ!
Visual C# for Win64API
Visual C# for JVM
つまり.NETはいらない。
ネイティブとジャヴァヴァーチャルマシーンで動くC#が最高。
そういうこと。
03152902006/02/01(水) 16:20:26
>>313
std.loaderなんてあったのか・・・orz
0316デフォルトの名無しさん2006/02/02(木) 00:26:29
XMLパーサクラスの実装ってまだですか?
0317デフォルトの名無しさん2006/02/02(木) 16:23:09
>>316
言いだしっぺ乙

というのは半分冗談として、libxmlなりparsifalなり使えば?
0318デフォルトの名無しさん2006/02/02(木) 17:29:36
作ってみるかな?
0319デフォルトの名無しさん2006/02/02(木) 18:08:02
暗黙のテンプレート実体化マダーーー・・・・・・
0320デフォルトの名無しさん2006/02/02(木) 18:11:34
Dからobjcのオブジェクトの名前とスーパークラスの名前を取る事ができた。

SEL型の定義がうざい。
0321デフォルトの名無しさん2006/02/02(木) 18:47:34
ちょい作ってみた。

char[] randomstring(char[] table, int length){
char[] s; s.length = length;
for( int i ; i < length ; i++ )
s[i] = table[rand()%table.length];
return s;
}
0322デフォルトの名無しさん2006/02/02(木) 18:52:56
自分ならこう書くかなぁ。
char[] randomstring(char[] table, int length){
    auto s = new char[length];
    foreach(inout char ch;s)
        ch = table[rand%$];
    return s;
}
0323デフォルトの名無しさん2006/02/02(木) 18:56:45
俺なら(ry
void randomstring(char[] table,inout char[] s){
    foreach(inout char ch;s)
        ch = table[rand%$];
}
0324デフォルトの名無しさん2006/02/02(木) 18:58:09
>>323
sはinoutじゃなくても良くね?
0325デフォルトの名無しさん2006/02/02(木) 18:59:43
スマソoutで十分だな
0326デフォルトの名無しさん2006/02/02(木) 19:02:48
配列を引数に渡しても中身のコピーまでしないから。
何も付けなくても大丈夫
void randomstring(char[] table, char[]s){
    foreach(inout char ch;s)
        ch = table[rand%$];
}
0327デフォルトの名無しさん2006/02/02(木) 19:04:42
ああ、配列は参照なんだっけか。
すっかり忘れてたorz
0328デフォルトの名無しさん2006/02/02(木) 19:14:52
>>322が気に入った。
0329デフォルトの名無しさん2006/02/02(木) 19:57:41
>>320
Dはリフレクションが無いので、コールバックの所で詰まるぞ.
0330デフォルトの名無しさん2006/02/02(木) 19:59:41
>>329
そうなのか・・・
0331デフォルトの名無しさん2006/02/02(木) 22:33:10
マニアックな事やるなあ
0332デフォルトの名無しさん2006/02/02(木) 22:38:37
疑似リフレクションとか誰かやってなかったっけ?
0333デフォルトの名無しさん2006/02/03(金) 10:08:59
ちびまる子に出そうな名前の東大生がやってらした気がする。
0334デフォルトの名無しさん2006/02/04(土) 01:24:29
D言語って完全にこけてる気がしないでもない。
日本のD関連サイトは全く更新されていないし、今後される気配もない。
phobosの充実も全く見られないのは深刻。
0335デフォルトの名無しさん2006/02/04(土) 01:37:30
>>334
選択肢:
-C/C++からD言語へのトランスレーターを作る
-DelphiからD言語へのトランスレーターを作る
-JavaからD言語へのトランスレーターを作る(libjavaはGPLだけど)
-C#からD言語へのトランスレーターを作る
0336デフォルトの名無しさん2006/02/04(土) 01:50:17
http://www.dprogramming.com/entice.php
Entice Designer
良さげだが、動かないorz
0337デフォルトの名無しさん2006/02/04(土) 01:53:42
オープンソースにしないと相手にされなくなってる昨今
0338デフォルトの名無しさん2006/02/04(土) 02:10:30
ソース付いてるじゃん
0339デフォルトの名無しさん2006/02/04(土) 02:39:13
ここで、D言語版CPANだろ。
0340デフォルトの名無しさん2006/02/04(土) 02:49:05
D言語だからPAIPANだろ。
0341デフォルトの名無しさん2006/02/04(土) 03:19:56
CDAN
0342デフォルトの名無しさん2006/02/04(土) 07:25:21
とにかくまともに使えるライブラリ&IDEがないと話にならない。
みんなD言語に注目はしてると思うけど。
0343デフォルトの名無しさん2006/02/04(土) 08:15:23
もう諦めろって。
0344デフォルトの名無しさん2006/02/04(土) 09:16:42
javaからのポートツール作るとしたらjava. javax辺りを移植したら大丈夫かな?
0345デフォルトの名無しさん2006/02/04(土) 10:39:23
Dでwgetみたいな奴作ってんだけどどんな名前がいい?
0346デフォルトの名無しさん2006/02/04(土) 10:55:32
wget for D
0347デフォルトの名無しさん2006/02/04(土) 11:51:43
JavaやC++をDにポーティングするメリットは皆無な罠
0348デフォルトの名無しさん2006/02/04(土) 14:37:05
>>330
Obj-Cのイベントとデリゲートの類いは、文字列からメソッドを検索して、あれば呼び出し、無ければデフォルトの動作をする。
Javaはリフレクション、C#はリフレクションとアノテーションを併用して、ブリッジを実装している。
0349デフォルトの名無しさん2006/02/04(土) 17:29:05
どなたかThe Mango Treeの解説ページ作って下さい。
0350デフォルトの名無しさん2006/02/04(土) 18:42:18
perlのCGI.pmみたいなものはDにはないのですか?
0351デフォルトの名無しさん2006/02/04(土) 20:52:49
>>350
そのくらい自分でかけないとDをやっていけないのが現状。
http://www.wikiroom.com/sakurai/?D%B8%C0%B8%EC%A4%C7CGI は参考になりそう。
0352デフォルトの名無しさん2006/02/04(土) 21:34:29
>>351
ないのですか。
そのサイトも全く更新されてませんね。
0353デフォルトの名無しさん2006/02/04(土) 21:48:15
>>352
標準入出力をどうにかすればいいだけ。
dsourceにあったような気がするけど自分で書いた方が気が楽だ罠
03542902006/02/04(土) 23:39:34
すまん。解決してなかったみたいだorz。
一部のzipがエラーが出て解凍がうまくいかない。
>>313を参考にして
char[16 * 1024] output;
SevenZip(null,toStringz("e " ~ filepath),output,output.sizeof);
と書き換えて呼び出しているんだが、通常に解凍できるのとできないのがある。
(書き換えない前も同じ)
できないのは
ERROR: Can't allocate required memory!
ってエラーが出てくる。
03552902006/02/04(土) 23:40:23
エラーはoutputをprintfして出てきたやつね
0356デフォルトの名無しさん2006/02/05(日) 01:28:58
>>354
そのエラーそのまんまメモリ不足ってことはないの?
>一部のzipがエラー
その一部ってのは特別大きいファイルってわけじゃない?
0357デフォルトの名無しさん2006/02/05(日) 01:30:26
配列は結合する度にコピーが発生するからやっぱりlistが欲しい。
安心して使えるようにphobosでだしてもらいたい。
でも、本格的なlistをだすことになるとSTLみたいな大仕事になる
から当分先の話かな。
DTLってのがあるけど更新が止まっているので使いづらいってのが
ある。
やはり公式なサポートがないとなあ。
03583562006/02/05(日) 01:35:10
>>355
SevenZipってのを知らないので、一般的なことしかいえないけど、
メモリ関係では、DLL側とDがでちがうallocator使っていたりすると
メモリの受け渡しでまずいことになるから、そのあたり調べて見たらどうでそ。
D側で取得したメモリを、DLL側で開放しようとしたとか、reallocに渡そうとしたとか。
その逆とか。
0359デフォルトの名無しさん2006/02/05(日) 12:35:11
>>357
基幹的なライブラリは更新が止まって枯れてない方が怖いだろ。
0360デフォルトの名無しさん2006/02/05(日) 17:07:45
>>359
Dの仕様が変化している状況だから直す部分はあるはず。
それにDTLはどう見てもまだ中途。
03612902006/02/05(日) 23:46:03
>>358
一部とは別に特別大きいファイルじゃない。
50〜80MBぐらいので試してるんだけど、大きくても正常に解凍できたり、逆に小さくても正常に解凍できなかったりとまちまち。

358で言ってるメモリについてはちょっとまだわからない。
もしかしたらGCが悪いのかとも思いdisableで止めてみたりしたけど、変わらなかった。

あと7-zip32.dllのAPIを読み返してみたら
int WINAPI SevenZip(const HWND _hwnd, LPCSTR _szCmdLine, LPSTR _szOutput, const DWORD _dwSize)
って書いてあった。
WINAPIはDで定義してもがコンパイル通らないから無視してたんだが、これが原因ってこともあるのか?
0362デフォルトの名無しさん2006/02/05(日) 23:54:21
>>361ならそれが原因っぽい
hoge WINAPI huga(...)
はDでは
extern(Windows) hoge huga(...)
となる。
D言語の標準はextern(D)なので呼び出し規約が異なるのが原因だろうなぁ

#なんだがDの呼び出し規約はFAQに入れたいほど頻出する話題だなぁ
03632902006/02/06(月) 00:36:54
>>362
試してみたが、同じエラーが出てくる。
多分これも原因のひとつだろうけど、まだ原因がありそうだなあ…
0364デフォルトの名無しさん2006/02/06(月) 02:13:44
>>290
C++使ってはどうか?
0365デフォルトの名無しさん2006/02/06(月) 02:20:05
うん、
C++側から同じ関数で同じファイル解凍できるかできないか試してみるのがいいかも。
0366デフォルトの名無しさん2006/02/06(月) 02:22:24
x86の時代は終わりつつあるわけよ。
しかしx64が次の時代を担うのかといえば違うんだな、これが。
Intelはどう見ても失敗した。
これからしばらくはAMDの時代さ。
おもえらゲイツを舐めすぎ。
.NETはJavaに対抗したというのもあるけど、実はPentiam対策でもある。
様子見ですよ。
勝敗が決するまではネイティブ言語には力を入れない。
.NETで様子を見るのだ。
0367デフォルトの名無しさん2006/02/06(月) 02:23:36
なあ、標準GUIの話しどう?
DWTって現状使いもになるの?
0368デフォルトの名無しさん2006/02/06(月) 02:29:17
妙にスレが上がっているなと思ったら、
コピペ荒らしかよorz
0369デフォルトの名無しさん2006/02/06(月) 02:35:10
正直、ライブラリのバグが目立つ。
商用で使うのはまだ怖い。
03702902006/02/06(月) 08:29:45
>>364-365
C++側(というより普通の圧縮解凍ツールでC++で作られているのを確認したものいくつか)
やってみたが何も問題なかった。
やっぱりD側の原因かな。
0371デフォルトの名無しさん2006/02/06(月) 09:37:46
>SevenZip(null
toStringz("e " ~ filepath)
output
output.sizeof);

output.lengthとか?
03722902006/02/06(月) 10:00:08
>>371
途中でとまって反応しなくなった。
0373デフォルトの名無しさん2006/02/06(月) 11:08:52
>>366
アホか。
それだったら、x86なんかより遙かに優れたアーキテクチャを持っている
Itanium2(EPIC)の失敗はどう説明すんだよ。

過去のソフトウェア資産の価値を甘く見過ぎ。
0374デフォルトの名無しさん2006/02/06(月) 12:02:05
>>367
今漏れも触ってみてるのだが、機能面ではSWTの機能はほぼ完全に
移植されてて、まあ使える感じ。バグとか安定度はどうだろね。
0375デフォルトの名無しさん2006/02/06(月) 13:57:34
>>290
BOOL WINAPI SevenZipGetRunning(VOID)を呼んでいないのでは?
もし呼んでいないのなら、7-zipAPI.txtを100回熟読して反省してください。
03762902006/02/06(月) 14:54:10
>>375
呼び出してるよ。SevenZipGetRunningやSevenZipCheckArchiveなんかはちゃんと動くんだ。
ただSevenZipだけができない…というより解凍のコマンド(e)がうまくいかない。
ちなみに圧縮(a)や更新(u)は正常に動作するようだ。
0377デフォルトの名無しさん2006/02/06(月) 15:55:28
>>366
これからはPowerPCの時代だと思わんかね?
03783752006/02/06(月) 15:56:45
>>290
これは失礼しました。
となると、原因の切り分けが必要かと。

(1)>>364-365の言う通りに(実績のある)C/C++で作ってみる
(2)別のDLL(UnLHa32.dllなど)で試してみる

(1)の場合は>>370の様な誰かが作ったものではなくて、自分で
作ったコードで確認するべきだと思います。
0379デフォルトの名無しさん2006/02/06(月) 16:43:31
http://dream.my-sv.net/upload/src/up0131.gz

メルセンヌ・ツイスターを移植してみた。
0380デフォルトの名無しさん2006/02/07(火) 00:01:22
>>367
そうなら、俺も次から使おうかな。
標準に期待して。
0381デフォルトの名無しさん2006/02/07(火) 14:15:01
DWT入れた、packages\dwt\dwt-readme.txtに書いてある通り

ソース http://www.dsource.org/projects/dwt/
buildツール http://www.dsource.org/projects/build/

dmdにimport, lib, packages, del-intermediate.batをコピー

・\dmd\bin\sc.ini の書き換え
DFLAGS="-I%@P%\..\src\phobos" から
DFLAGS="-I%@P%\..\src\phobos;c:\dmd\import"

・コンパイル
\dmd\import\ の
make-dwt-lib.bat
make-dwtextra-lib.bat

・サンプル
packages\dwt\examples
適当なフォルダの.batで
0382デフォルトの名無しさん2006/02/07(火) 18:46:12
>381
サンクス。コンパイル通らなくて悩んでた。(テキスト読めよ

ライブラリ作成の際に、buildコマンドに-version=ANSIを付ければwin9xで動作する模様。
ただし、WNDPROC<->WNDPROC_Iで暗黙のキャストができない様なので、修正(十数カ所)。
例)widgets/group.d:80
!GroupProc = cast(WNDPROC_I)lpWndClass.lpfnWndProc;

widgets/display.d:1949
!lpWndClass.lpfnWndProc = cast(WNDPROC)windowProc_var;

サンプルの大半とposeidonをビルド、動作確認。ちょっと感動。
0383デフォルトの名無しさん2006/02/07(火) 19:41:53
あと、win9xの場合internal/bidiutil.d:494をコメントアウト。
これでコントロールサンプルがとりあえず動く。
0384デフォルトの名無しさん2006/02/09(木) 00:59:50
手を加えなくても日本語が通るのが素敵。
scintillaも日本語フォントとコードページ与えてやればいい感じ。
0385デフォルトの名無しさん2006/02/10(金) 03:00:02
static try{}static catch{}まだー?
0386デフォルトの名無しさん2006/02/10(金) 06:05:13
>>385
何に使うん?それ
0387デフォルトの名無しさん2006/02/10(金) 07:53:44
書き換え禁止な配列ってどうやって作ればいいんでしょう?
static constでもconstでも内容を書き換えることができてしまいます。
0388デフォルトの名無しさん2006/02/10(金) 08:21:42
dmdは全体的に変数の保護チェックが弱いと思う。
gccならprivateメンバとなっている配列が書き換えられる
ようなコードを見つけた場合コンパイルエラーをだしてく
れてたのになあ。確か。
0389デフォルトの名無しさん2006/02/10(金) 20:06:03
DMD 0.146
0390デフォルトの名無しさん2006/02/10(金) 21:13:11
ついにスクリプト風に使えるときが来ましたyo!
っていってもshebangが使い難くて…orz
もっとスマートな方法あったらよろ
#!/usr/bin/perl -e exec(dmd,'test.d','-run')
private import std.stdio;
int main(){
  writef("Hello World\n");
  return 0;
}
0391デフォルトの名無しさん2006/02/10(金) 21:43:25
>>390
Newsgroupでも同じようなこと言ってる人がいるな。
http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D.announce/2636
これは仕様バグだと思うので0.147で改善されるんじゃないかなあ。
0392デフォルトの名無しさん2006/02/10(金) 22:19:56
回避するの作ってみた。ソース汚いけど気にしない。
http://dream.my-sv.net/upload/src/up0134.d
#!./rdmd
private import std.stdio;
int main(){
  writef("Hello World\n");
  return 0;
}
とすればok。キャッシュも効くはず。
0393デフォルトの名無しさん2006/02/10(金) 23:23:47
dmd 0.146

std.cstreamがlibphobos.aに入ってない?

main.o(.data+0x90): undefined reference to `_ModuleInfo_7cstream'
collect2: ld はステータス 1 で終了しました
--- errorlevel 1

私だけ?
0394デフォルトの名無しさん2006/02/10(金) 23:44:55
>>393
>Added module statements to all std.typeinfo modules.
>This may require recompiling library code.
とりあえず前バージョンでコンパイルしたコードは
再コンパイルした方がよさげだが。
0395デフォルトの名無しさん2006/02/10(金) 23:51:12
独立した簡単なサンプルも駄目でしたよ。
std.cstreamをimportすると駄目みたいですね。
0396デフォルトの名無しさん2006/02/10(金) 23:52:52
すっごい初心者的な質問なんだがいいか?
ファイルパスにある「"」を消したいんだが
replace(toString(lpCmdLine),'"',"");//ちなみにwindowsAPIなのでlpComLineはchar *ファイル名が入ってると思ってくれ
じゃなんかcharはchar[]に変換できないので通らないのでうまくいかない。
0397デフォルトの名無しさん2006/02/10(金) 23:59:49
replace(toString(lpCmdLine),"\"","")
これで済む話ならヌッ殺す
0398デフォルトの名無しさん2006/02/11(土) 00:03:08
replace(toString(lpCmdLine),`"`,"")
0399デフォルトの名無しさん2006/02/11(土) 00:17:37
できた…サンクス
0400デフォルトの名無しさん2006/02/11(土) 06:42:30
>>399
まずは落ち着け系のバグかよ.
0401デフォルトの名無しさん2006/02/11(土) 09:44:17
断じてバグではない。

単なるポカミスだ。
0402デフォルトの名無しさん2006/02/11(土) 23:32:42
質問質問。プログラミング言語 Dのクラスのページより
>GC管理下にあるオブジェクトへの参照をメンバとして持つオブジェクトのデストラクタを
> ガベージコレクタが呼び出すときには、それらの参照は既に無効です。
> これはつまり、 デストラクタからはメンバオブジェクトを参照できないことを意味しています。
> この規則は、 autoオブジェクトや DeleteExpression で削除されるオブジェクトには当てはまりません。

これは「autoオブジェクト」「DeleteExpression で削除されるオブジェクト」、
「それ以外(GC)」と使われ方によって、クラスのデストラクタ書き方を考えないとダメってことですか?
デストラクタからはメンバオブジェクトを参照できないって・・・。
0403デフォルトの名無しさん2006/02/11(土) 23:33:38
クラスのデストラクタの書き方
0404デフォルトの名無しさん2006/02/11(土) 23:39:16
>>402
そりゃそういうルールにしないと循環参照のオブジェクトを殺せないからな。
とりあえずデストラクタでは常にメンバ変数は無効化されていると考えるのが妥当じゃないの
0405デフォルトの名無しさん2006/02/11(土) 23:46:47
たとえば、あるクラスのメンバオブジェクトで、リソースの解放などを行わなければならない場合は、
クラスのデストラクタから、メンバオブジェクトのリソースを解放するようなコードを書いてはいけない、と。
0406デフォルトの名無しさん2006/02/11(土) 23:48:18
>>404
たとえば、DBを扱うクラスで、メンバにDBの接続を持っている場合、
デストラクタでclose()するなんてことは考えたらダメってことですか。
場所によってはautoで使いたいのですが、
そのクラス自体が別のクラスのメンバにいることがあるので
その場合はautoではないのです・・。
0407デフォルトの名無しさん2006/02/11(土) 23:52:19
使いにくそう…
0408デフォルトの名無しさん2006/02/11(土) 23:58:24
メンバにアクセスできないデストラクタでいったい何をするの?
0409デフォルトの名無しさん2006/02/12(日) 00:03:49
>>408
オブジェクトの参照にアクセスできないだけだろ。

>>405
>たとえば、あるクラスのメンバオブジェクトで、リソースの解放などを行わなければならない場合は、
そのリソースを保持しているオブジェクト自身が解放すればいいだけだろ
0410デフォルトの名無しさん2006/02/12(日) 00:16:30
>>406
>デストラクタでclose()するなんてことは考えたらダメってことですか。

そのDBがDのオブジェクトで表現されていないなら、好きにcloseすればいい。

Dのオブジェクトで表現されている場合、ダメだ。
しかし、その場合、そのオブジェクトのデストラクタで大抵closeされるだろう。


ということで特に問題はないな。
04114062006/02/12(日) 00:35:14
>>410
ハンドル(ID)やGC外のポインタならOKってことですね。
動的配列や連想配列もGC管理だと思うので、NGですよね。
どうもです。
0412デフォルトの名無しさん2006/02/12(日) 00:49:23
みんなデバッガなに使ってる?
俺はVCを使っているんだがDクラスのメンバが見れなくて困ってる。
0413デフォルトの名無しさん2006/02/16(木) 08:57:52
DMD 0.147
0414デフォルトの名無しさん2006/02/16(木) 10:20:55
dmdってデバッガにもなるのか。
0415デフォルトの名無しさん2006/02/16(木) 11:47:05
-run switch changed so that the source file to compile must appear immediately after it.

どう変化したのがまったくわからないんだが・・・・・・
このchange logやっぱりだめぽ
0416デフォルトの名無しさん2006/02/16(木) 11:53:45
>>415
dmd source.d -run args...
が
dmd -run source.d args...
に変更されたってだけ。
0417デフォルトの名無しさん2006/02/16(木) 23:59:32
>390,391の件の対策だな。
0418デフォルトの名無しさん2006/02/17(金) 08:33:07
下のプログラムのteacher.command(student)はvoid Teacher.command(Female)
が呼ばれると思ったらvoid Teacher.command(Student)が呼ばれました。
これって正常なんですか?

int main()
{
  Teacher teacher = new Teacher;
  Student student = new Female;
  teacher.command(student);

  return 0;
}

class Teacher
{
  void command(Student s);
  void command(Female s);
}

class Student;
class Male : Student;
class Female : Student;
0419デフォルトの名無しさん2006/02/17(金) 08:47:09
そりゃstudentはStudent型だしな
0420デフォルトの名無しさん2006/02/17(金) 09:16:59
でもstudentの実行時型はFemaleなんですけど。
javaではどうなんですか?
0421デフォルトの名無しさん2006/02/17(金) 09:33:08
実行時でもstudentはStudent型だ罠。
0422デフォルトの名無しさん2006/02/17(金) 09:38:49
student.classinfo.nameは"Female"でした。
これは確かにStudent型でもありますが。

Teacherはstudentの型に応じてcommandの内容変えたいのです。
0423デフォルトの名無しさん2006/02/17(金) 09:44:15
class Student{
 abstract void command(Teacher);
}

のくだりじゃ嫌か?
0424デフォルトの名無しさん2006/02/17(金) 10:04:03
それだと
class Rookie : Teacher;
class Expert : Teacher;
とかが現れて
class Student
{
  abstract void command(Rookie);
  abstract void command(Expert);
}
としたい場合、堂々巡りですね。
0425デフォルトの名無しさん2006/02/17(金) 10:07:29
FemaleのcommandからTeacherのcommandを呼べば?
0426デフォルトの名無しさん2006/02/17(金) 10:09:06
んじゃclassinfoでも使うか適当に定数返す関数でも作っとけ。
0427デフォルトの名無しさん2006/02/17(金) 10:09:42
そんなに複数クラスに使い分けたいならStateパターン使ったほうが幸せだと思うが。
0428デフォルトの名無しさん2006/02/17(金) 10:17:24
どうもjavaだと最初のソースのteacher.command(student)で
void Teacher.command(Female) が呼ばれるらしいのですけど、
C++とかだとどうなんでしょうね。
0429デフォルトの名無しさん2006/02/17(金) 10:25:17
>>428
本当か?
javaでもC++でもStudent版が呼ばれるはずだが。
04304282006/02/17(金) 10:28:54
こちらの記事のソースを見たのですが。
ttp://www.techscore.com/tech/DesignPattern/Visitor.html
0431デフォルトの名無しさん2006/02/17(金) 10:38:50
いやまあまずは自分で試そうな

public class main{
public static void main(String[] args){
Teacher t = new Teacher();
Student s = new Female();

t.command(s);
}
}
class Teacher{
public static void command(Student s){ System.out.println("student"); }
public static void command(Female s){ System.out.println("female"); }
}
class Student{
}
class Female extends Student{
}
0432デフォルトの名無しさん2006/02/17(金) 10:42:43
どう実行しても"Student"が返ってきます、本当にありがとうございました。

>>430
っていうか、そこにSuzukiHomeをHomeクラスへダウンキャストしてから突っ込んでも、
visit(SuzukiHome)が呼ばれるなんて一言も書かれて無いように見えるが。
0433デフォルトの名無しさん2006/02/17(金) 10:44:52
>>430
・・・この記事何やってるの?
04344282006/02/17(金) 10:53:50
このVisitorのサンプルだと、SuzukiHome.accept(Teacher teacher)
中のteacher.visit(this)ではRookieTeacher.visit(SuzukiHome)が
呼ばれないと意味がないように思うのですが。

間違ってます?
0435デフォルトの名無しさん2006/02/17(金) 10:56:57
ちょ、おま……。
public void accept(Teacher teacher){
 teacher.visit(this);
}

teacher.visit(this);

visit(this);

this

お分かり?
0436デフォルトの名無しさん2006/02/17(金) 10:57:24
>>434
Teacherにvisit(TanakaHome)やvisit(SuzukiHome)を作り忘れている。
SuzukiHomeにタイプミスがあるし、一度も試して無いんだろうな。
04374282006/02/17(金) 11:06:41
>>436
僕もそこは気が付きました。
けど、SuzukiHomeはHomeを継承しているから
RookieTeacher.visit(Home studentHome)でstudentHomeの実行時型から
判断してRookieTeacher.visit(SuzukiHome)をうまく呼んでくれるのが
標準なのかな思ったわけです。

つまり、Dのバグかな?と考えたのです。
0438デフォルトの名無しさん2006/02/17(金) 11:09:49
>>437
thisの型はそのクラスの型だから。
#継承元のメソッドを呼び出すにはcastする。
0439デフォルトの名無しさん2006/02/17(金) 13:16:33
ところで、Dって将来的には標準化の予定あるのかな。
0440デフォルトの名無しさん2006/02/17(金) 13:29:52
>>439
C++は13年ぐらいかかったんでしたっけ?
Dなら足枷が無いぶんコンパクトに決まるように思えるけど。
0441デフォルトの名無しさん2006/02/17(金) 15:48:14
DWTがdmd 0.146でコンパイルできなくなった修正
http://dsource.org/forums/viewtopic.php?t=1312&sid=9f81a9046761dd73ff6a298d67f697c4

Change dwt.internal.win32.wintypes.d line 1673 from:
Code:
{ BITS & 0xF0; BITS |= (val & 0x0F); }

to:
Code:
{ BITS &= 0xF0; BITS |= (val & 0x0F); }


そのうちコミットされると思うけど
0442デフォルトの名無しさん2006/02/17(金) 16:18:57
DWTっていつになったらLinuxで使えるようになるのかな?
0443デフォルトの名無しさん2006/02/17(金) 17:20:26
俺がDWTをLinuxで使いたいと思ったときか、
俺以外の誰かがDWTをLinuxで使いたいと思ったときに
コードが公開されれば使えるようになる
0444デフォルトの名無しさん2006/02/17(金) 17:49:44
std.reclsって
ttp://www.digitalmars.com/d/phobos/std_recls.html
とだいぶ変わってるのか?
FileSearchは定義されてないとか出てくるんだが。
0445デフォルトの名無しさん2006/02/17(金) 18:04:28
>>444
たまにライブラリの方がこけてる場合がありますよ。
0446デフォルトの名無しさん2006/02/17(金) 23:17:34
>>444
dmdにマニュアルついているyo

0447デフォルトの名無しさん2006/02/18(土) 01:24:48
dmd/html/d/phobos/std_recls.html

も古い罠。
04484462006/02/18(土) 03:25:00
>>447
DDOCでソースからドキュメントを作るの!


またしても勘だけど。
0449デフォルトの名無しさん2006/02/18(土) 04:50:13
>>448

recls.d は DDOC 形式じゃないのでは?
0450デフォルトの名無しさん2006/02/18(土) 09:31:04
EclipseのD言語用pluginを入れたが.dファイルを開くとエラー
がでて開けない。
downloadしたzipファイルを展開してできるpluginsフォルダを
eclipseのpluginsフォルダにcopyしたのに。

なぜ?
0451デフォルトの名無しさん2006/02/18(土) 11:01:11
>>450
何でも自分の環境で動かなくなったから開発をやめたとか…
0452デフォルトの名無しさん2006/02/18(土) 11:46:04
ありゃ(笑)。
0453デフォルトの名無しさん2006/02/18(土) 13:54:21
DGrammerおもろー
0454デフォルトの名無しさん2006/02/18(土) 14:37:46
CGIでコンパイルさせて使えるようにしてるのか?
#!を無視とか何に使うんだろ
0455デフォルトの名無しさん2006/02/19(日) 11:40:14
D 0.147でMatchExpressionsってのが追加されたけどLinux版のdmd0.147
だとセグメンテーション違反で使えないね。
0456デフォルトの名無しさん2006/02/19(日) 12:44:53
「バグ:メンバ関数の事前条件と事後条件が継承されません。」
と書いてあるけど仕様ではこれらは継承されるとのこと。

すると、下のBase.funcのような純粋仮想関数でも事前条件を書かないと
まずいのだろうか?

class Base
{
  abstract int func();
}

class Derived
{
  override int func()
    in
    {
        ...
    }
    body
    {
        ...
    }
}

「in 契約を持たない関数が継承階層の中にあると、 その関数をオーバー
ライドした関数の in 契約は何も効果を持たないことになります。」
と書いてあるけども。
0457デフォルトの名無しさん2006/02/20(月) 21:07:36
>>456
// i が 0 ならダメ
class A { int hoge(int i) { in { assert(i!=0); } body { return i; } }

// i が 0 ならダメ←(継承) || 条件なし
class B : A { int hoge(int i) { return i + 1; }

// i が 0 ならダメ←(継承) || 条件なし←(継承) || iが負の値だとダメ
class C : B { int hoge(int i) { in { assert(i>0); } body { return i; } }

というように、条件なしが継承されると、それ以後の派生では確かにinの意味がなくなるね。
abstractな場合は、確認した方が良さそうだけど、現時点では文法上、条件をつけることはできないかな。
0458デフォルトの名無しさん2006/02/23(木) 11:20:57
typedefとaliasは無くして欲しいと思うが、どうだろう。
C++では無意味な別名のせいで、元の型を探し出すのに時間が取られることが多かったので。

Dでは型ごとのサイズが仕様で決まっているから、サイズ依存の部分を書き替えるためのtypedefは必要無いわけだ。
しばらくJavaを使っていたが、型の別名機能が無くても何の問題もなかった。
0459デフォルトの名無しさん2006/02/23(木) 11:32:17
>>458
C++だとstlなどのtemplateを使った物の扱いが面倒なのと長い名前空間から短い部分へのマップにtypedef使うからしょうがない。
本当に意味のない別名つけてるのはそのコード書いた奴殴ってでも修正させないとだめ。
0460デフォルトの名無しさん2006/02/23(木) 13:36:28
 alias int Hoge;
 Hoge func1(){...}
 void func2(Hoge hoge){...}
とやっとくと管理に貢献すると思う。値チェックが減らせるわけではなく、
単純にヒューマンエラーを減らすためのものに過ぎんけど。
元の型を探させないためにalias使うんじゃないのかなぁと思ってたけど違うの?
0461デフォルトの名無しさん2006/02/23(木) 17:38:13
>>458
aliasの廃止には賛成 (下に理由を書いてみた) 。
typedefは>>460のような使い方が出来るので判断を保留。

>>459
C++のことはよく分からんのだけど、
Templateは型名の部分をコンパイル時にプリプロセッサが
コード中で使われた型に合わせて書き換えてくれるのでは
なかったっけ? (typedefは使われているのかな?)
名前空間の問題は、型名のみで済むようusingすれば解消するのでは。
04624612006/02/23(木) 17:39:46
>>460
aliasだと単に別名を定義するだけなので、
「int hoo = func1(); func2(hoo);」
のように書いてもコンパイラは撥ねてくれないはず。
ヒューマンエラー対策に使うとしたら、typedefの方かな。

ttp://www.kmonos.net/alang/d/declaration.html

> 元の型を探させないためにalias使う
元の型以前に、データ構造は把握しておきたいかもね。
元の型を調べて辿るのも、その方法の一つということでは。
0463デフォルトの名無しさん2006/02/23(木) 17:40:19
>>461
private{
  import std.string;
  import std.regexp;
}
alias std.string.find find;
alias std.string.split split;
04644612006/02/23(木) 17:41:09
例えばshortは16bitとは限らないし、floatは32bitとは限らない。
(C/C++の仕様に書かれていない)
gint16やGLfloatといった型を使えば、元の型とは無関係に
どの環境でコンパイルしても常にbit数が一定になるから、
これらの型を使用する限りはbit数を気にする必要は無いと。
(>>458の「サイズ依存」の話ね)

Dでは変数のbit数が仕様で決まっているため、
このようなプリミティブ型のデータ構造を保証するための
aliasは必要無い。
一方でクラス型はコードが一定である以上データ構造も一定だから、
そもそも環境依存を気にする必要は無い。
04654612006/02/23(木) 17:42:21
そうなるとDでのaliasの用途は単にプログラマの利便性
(タイプ量を減らしたい, 型名を自分の美的感覚にあわせたい, etc...)
のみになるわけだが、
こうした目先の利点は、他者にとっての可読性を損ねてまでも
求める価値があるものなのだろうか、という話。

// ここに書いたところでaliasが廃止されるわけではないが (w
04664632006/02/23(木) 17:45:31
class test(T){
}

alias test!(char[]) t;

int main(){
  t=new t;
}
0467デフォルトの名無しさん2006/02/23(木) 18:09:57
>>466
つまり、構文短縮ですね。
0468デフォルトの名無しさん2006/02/24(金) 00:05:35
>>466
これを繰り重ねると見事にスパゲ(ry
0469デフォルトの名無しさん2006/02/25(土) 20:24:48
// gdc -o hoge hoge.d -lstdc++

// recls を使っていることには特に意味はない
version = recls;
version (recls) {
import std.recls;
}

void main()
{
version (recls) {
// version 内で auto class を作ると落ちる。外なら動く。
Search search_list = new Search(".", "*",
RECLS_FLAG.RECLS_F_FILES);
}

/* ... */

version (recls) {
foreach(Entry entry; search_list) {
printf("%.*s\n", entry.Path());
}
}
}

なんで?
0470デフォルトの名無しさん2006/02/25(土) 20:28:04
auto なしでコピペしてしまった・・・。

auto Search search_list = new Search(".", "*",

こっち

0471デフォルトの名無しさん2006/02/26(日) 01:24:49
バグじゃないですか?
報告した方がよさそうですね。
0472デフォルトの名無しさん2006/02/26(日) 09:24:25
バグですね。
とりあえず問題再現の最小コードはこんな感じですかね。
どうやらversionのスコープの終了でautoが削除されているのが原因っぽい
void main(){
    version(all){auto Object o=new Object;}
    o.print();
}
04734692006/02/26(日) 10:13:17
>>471

まかせますた。
04744712006/02/26(日) 10:57:42
今送ってみたけどリストにでてこない。
直にでるわけではないのか?
0475デフォルトの名無しさん2006/02/26(日) 11:01:44
>>474

投稿されてますよ。
0476デフォルトの名無しさん2006/02/26(日) 11:02:30
>>474
リストに出るのが遅れることがある。
俺はうっかり二重投稿したことあるorz
04774692006/02/26(日) 11:11:57
>>474
報告ありがと。
0478デフォルトの名無しさん2006/02/26(日) 11:22:30

DMD 0.148

New/Changed Features

* Removed MatchExpressions.
* foreach loops can now implicitly determine the types in the ForeachTypelist.
* IfStatements can now have an optional variable implicitly declared and assigned the value of the Expression.
* Removed bit basic type.
* Added bool basic type.
* Added BitArray.
* Added On Scope Statements.
0479デフォルトの名無しさん2006/02/26(日) 11:28:41
>>478
MatchExpressionが速攻で削除かw
迷走してるなー
0480デフォルトの名無しさん2006/02/26(日) 11:36:27
BitArrayなんて用意するくらいなら配列への演算を早く実装してくれよ。
それが実装されたらBitArrayの価値なんて0だから
0481デフォルトの名無しさん2006/02/26(日) 11:52:16
bit ---> bool

やはり違和感があったから。
0482デフォルトの名無しさん2006/02/26(日) 12:00:21
* foreach loops can now implicitly determine the types in the ForeachTypelist.
* IfStatements can now have an optional variable implicitly declared and assigned the value of the Expression.

は今のところはできるけど将来はなくなる可能性が高いということ?
0483デフォルトの名無しさん2006/02/26(日) 14:35:12
あいたたたwww
ここにきて超基本的な組み込み型が変更かよ
個人的には今のboolの方が嬉しいが
bit1桁はあんまり使わないから代わりにBitArrayってことかぁ
まあ確かになー
on_scope_exit on_scope_failre on_scope_success の構文が異質な気がするが
例外処理がシンプルに書けるのかね
まだ俺には使う状況がよくわからんけども
とにかく大荒れですな
0484デフォルトの名無しさん2006/02/26(日) 16:58:05
>>483
alias bool bitがobject.dで定義されているから
コードそのものは殆ど変わらないのが救いだな
0485デフォルトの名無しさん2006/02/26(日) 18:44:48
ちょっとこれは、、、Walterタソ酔っぱらってるのか?と思うような、、、
0486デフォルトの名無しさん2006/02/26(日) 18:48:46
例外安全なプログラミング
ttp://www.digitalmars.com/d/exception-safe.html

ざっと読んだ感じでは、on_scope構文は、テクニックなしに例外安全なコードを書くための仕組みらしいが。
0487デフォルトの名無しさん2006/02/26(日) 19:40:53
>>486
悪くはないけど、処理が分かりにくくなりそうだなぁ…
0488デフォルトの名無しさん2006/02/26(日) 20:14:10
class Test
{
  synchronized void f1() {...}
  synchronized void f2() {...}
}

Test obj = new Test;

とした場合、
「obj.f1()があるスレッドで実行されていればobj.f2()は
 他のスレッドで実行されることはできない。」
という理解で正しいでしょうか?
マルチスレッドは扱ったことがなくてjavaの解説文を参考にしたのですが。
0489デフォルトの名無しさん2006/02/26(日) 21:57:30
>>488
javaではそうだね。Dではどうなんだろ?
0490デフォルトの名無しさん2006/02/26(日) 22:16:14
ver.1 になる日が更に遠のいた気がす……
0491デフォルトの名無しさん2006/02/26(日) 22:49:16
//Dでも同じようになるみたいですね。
import std.thread;

class Hoge {
synchronized void f1() { while(1) { printf("f1()\n"); /* 長い処理を仮定 */ } return; }
synchronized void f2() { printf("f2()\n"); return; }
}

class Test1 : Thread {
Hoge myHoge;
override int run() { for(int i=0;i<100000000;i++) { } // とりあえず適当に遅延
myHoge.f1(); return 0; }
}

class Test2 : Thread {
Hoge myHoge;
override int run() { while(1) { myHoge.f2(); } return 0;}
}

int main() {
Test1 t1 = new Test1();
Test2 t2 = new Test2();
t1.myHoge = t2.myHoge = new Hoge();

t2.start();
t1.start();
t1.wait(1000 * 10); // 10秒間待つ
return 0;
}
0492デフォルトの名無しさん2006/02/26(日) 22:51:11
結果:
f2() // Test1.run()から、f1()までの遅延時間
f2()
f2()
f1() // いったんf1()にはいると
f1()
f1()
f1()
f1()
...
f1()
f1() // f2は一切実行されていない
0493デフォルトの名無しさん2006/02/26(日) 23:28:12
>>492
ありがとうございます。
threadに関してはDMの説明が少ないので仕様が判りづらいですね。
0494デフォルトの名無しさん2006/02/27(月) 04:54:10
DのthreadってJavaでいうところのwaitがないけど、どうやって使うの?
pauseがあるけどロックを持ったままスレッドが停止しちゃうしなあ。
synchronized (Expression) Statementの意味も全く判らないし。

詳しい方教えて下さい。
0495デフォルトの名無しさん2006/02/27(月) 08:31:36
>>494
waitは、指定秒数待ち?
std.Threadにないので、WindowsならSleep()、Linuxならnanosleep(2)でいいと思う。
0496デフォルトの名無しさん2006/02/27(月) 08:35:58
linuxのThreadは、pthreadだから、pthreadのwaitがあるかも。
0497デフォルトの名無しさん2006/02/27(月) 17:21:04
いや、java.lang.Object#wait() とか java.lang.Object#notify() とかの事だと思う。

java.lang.Thread では wait なんて名前のメソッドは宣言されてないから(Object からの継承メソッドならあるけど)
0498デフォルトの名無しさん2006/02/27(月) 18:08:07
>>497
IDE使っていてスレッドインスタンスにwaitあるやんとか言ってはまったことある(w
0499デフォルトの名無しさん2006/02/27(月) 18:33:10
>>497
synchronizedの中でオーナーを放棄してpauseしたいということですか。
synchronizedの中でロック解除する方法はないようです。(あったら僕にも教えてください!!)
スレッドについての質問になってしまうのですが、
synchronizedから出てからpauseするのでは問題あるパターンってあります?
Dのstd.Threadは、Threadがpauseしているかをチェックする方法がないので、
そのあたりが関わってます?
0500デフォルトの名無しさん2006/02/27(月) 19:22:10
>>494
synchronized (Expression) Statement

たとえば、

synchronized (obj) { // このクリティカルセクションの間は、
obj.writeToFile(filename);
} // ほかのスレッドで、objを使えない
0501デフォルトの名無しさん2006/02/28(火) 15:08:40
インスタンスのshallow copyって、自前で書かなきゃいけないの?
0502デフォルトの名無しさん2006/02/28(火) 19:12:02
自前ですね。

配列なら.dupがありますけども。
構造体は値扱いなので=でできると思います。
0503デフォルトの名無しさん2006/02/28(火) 19:38:36
Dの設計思想から言えば、言語側で面倒見てもいいぐらいの機能ではあるかな。
配列に習って、newobj = obj.dup;
とか。

GCあるから楽だとは思うけど。
0504デフォルトの名無しさん2006/02/28(火) 20:57:10
こういうときは力技でコピーだ。
どうみても反則に近い気もするけど

Object copyObj(Object o){
    return cast(Object)(cast(void*)o)[0..o.classinfo.init.length].dup.ptr;
}
0505デフォルトの名無しさん2006/02/28(火) 21:47:19
それって、クラスのメンバにGC管理のポインタがある場合、片方の参照が外れたときやばそう。
05065042006/03/01(水) 10:19:35
それは問題ない。
保守的なGCだからdupで複製した中身も確認する。

が、複製側のデストラクタが呼び出されないのと、
モニタ(synchronizedで使う奴)を共有してしまうという問題点がある。

上記二点の問題を解決してみた。

extern(C)Object _d_newclass(ClassInfo);
Object copyObj(Object o){
    auto p = _d_newclass(o.classinfo);
    auto osize = Object.classinfo.init.length;
    auto csize = o.classinfo.init.length;
    (cast(void*)p)[osize..csize] = (cast(void*)o)[osize..csize];
    return p;
}
0507デフォルトの名無しさん2006/03/02(木) 00:33:36
>>506
なるほど。
メモリだけGCに確保させておいて、コンストラクタを飛ばして、
自前でメンバを(静的初期値でなく、コピー元の値で)初期化してやるのね。
0508デフォルトの名無しさん2006/03/04(土) 15:35:33
ListやVectorを使いたいと思うのですがMinTLとDTLというのがあるようです。
どちらが標準なのでしょうか?
0509デフォルトの名無しさん2006/03/04(土) 15:50:33
Indigoってのもあるようですね。
0510デフォルトの名無しさん2006/03/04(土) 16:39:18
DTLってWin版しか見当たらない。
0511デフォルトの名無しさん2006/03/04(土) 17:24:04
v0.148でphobosをmakeしたら、
bitarray.dのmakeルールがなかったので入れました。
それでコンパイルは通って、unittestも通ったのですが、
実行すると_D6gcbits6GCBits3setFkZvでアクセス違反が発生して落ちます。
{
(cast(bit *)(data + 1))[i] = 1;
//data[1 + (i >> BITS_SHIFT)] |= (1 << (i & BITS_MASK));
}
↑このあたり。
これは、v0.148でbitがboolに変わったことと関係があるのでしょうか?

0512デフォルトの名無しさん2006/03/04(土) 17:40:20
>>511
bitだと通りませんよ。boolに変えれば通るかと。
敢えてphobosに入れてないってことは使わない方が無難な気がしますね。
05135112006/03/04(土) 17:44:37
>>512
bitでもコンパイルは通っていましたが、実行時にアクセス違反で落ちていました。
どこかにaliasがあるとか?
結局、cast(bit *)の行をコメントアウトして、コメントアウトされている行を有効にして
コンパイルすると動くようにはなりました。
これでいいのは、よくわかりません。不安。

>>敢えてphobosに入れてないってことは使わない方が無難な気がしますね。
phobosは、毎回コンパイルできるように作られていないということでしょう?
makeファイルが更新されていないのでそんな気もしますが。
0514デフォルトの名無しさん2006/03/04(土) 18:03:47
D言語の入門サイトがない気がするのは俺だけですか?
0515デフォルトの名無しさん2006/03/04(土) 19:15:51
言語仕様が固まってなく、コンパイラもバグだらけな現状
入門サイトも糞もないと思うが。
DigitalMarsのサイト見て勉強しろ。
それができないのであれば、おまえにはまだDは早い。
N-88 BASICでもいじってあそんでなさい。
0516デフォルトの名無しさん2006/03/04(土) 19:21:03
>>515
D言語は出来るんですが、新しく入ってくる人の方を考えて・・・
0517デフォルトの名無しさん2006/03/04(土) 19:29:35
>>516
頑張って書いてください。
0518デフォルトの名無しさん2006/03/04(土) 19:33:13
>>515の頭二行に同意。
つか>>1の本家和訳くらいで大体十分じゃね?
本当の入門者向けの言語じゃないのは明らかだし。
0519デフォルトの名無しさん2006/03/04(土) 20:06:34
>D を必要としない人は?
>最初に学ぶプログラミング言語として。 Basic か Java が初心者には向いています。 D は、中級〜上級者プログラマが二番目に修得する言語として優れています。

本家でもこう書いてるしな
0520デフォルトの名無しさん2006/03/04(土) 21:18:02
一応、WisdomにD言語入門って記事があるぞ。
もっともあれもC言語の理解が前提とはなってるけど。
0521デフォルトの名無しさん2006/03/04(土) 21:34:58
>>520
あれは古すぎるだろ
0522デフォルトの名無しさん2006/03/04(土) 23:50:30
C++のSTLかJavaのフレームワークをとにかく決めてもらいたい。
05235222006/03/04(土) 23:51:36
C++のSTLかJavaのフレームワークにあたるものをとにかく決めてもらいたい。

の間違い。
0524デフォルトの名無しさん2006/03/04(土) 23:56:38
>>522-523
同意。
クラス型を処理するメソッド (あるいは関数) は
Object型を受け取るようにすれば書けるけれど、
プリミティブ型は暗黙のボクシングが必要になってパフォーマンスが落ちるよね。
だからプリミティブ型のみテンプレートを使い、
クラス型はObject型を受け取る関数で書くのが良いと思った。
(Java5.0のように型を制限できればなおいい)
0525デフォルトの名無しさん2006/03/05(日) 00:22:13
boxerってパフォーマンス悪いのかな?
0526デフォルトの名無しさん2006/03/05(日) 12:19:02
配列に新しいデータを追加すると毎回コピーが働くのでパフォーマンスが悪い。
それを防ぐ方法が紹介されているけど、それを暗黙にやってくれるクラスを提
供するか言語レベルで実装して欲しい。
0527デフォルトの名無しさん2006/03/05(日) 12:47:55
>>515
初心者が使うような領域には、それ程バグは多くないと思う。
CやC++でプログラムの学習を始めるよりはDで始めた方がいい。
ただ入門者用にまとめた資料が少ないことと、中核の仕様まで
も頻繁に変更される可能性があることを考えると初心者にDは
合わないかもしれない。
0528デフォルトの名無しさん2006/03/05(日) 13:08:20
>>526
毎回コピーが発生されるって、どこの話し?
普通に追加する際に内部で確保したバッファのサイズに達するまでコピーは発生しないけど
0529デフォルトの名無しさん2006/03/05(日) 14:01:35
外部変数を宣言する方法ってないの?
05305262006/03/05(日) 14:04:06
リサイズの話とごっちゃになってました。
配列にデータを詰めるときに毎回リサイズして詰めていかず、大きくリサイズ
して詰め終わってから実質のサイズにリサイズし直すって奴です。

配列の~結合でバッファが不足したときにバッファを再確保する際の確保容量
を指定したいということです。
0531デフォルトの名無しさん2006/03/05(日) 14:19:43
もっと直接言えば一通りのデータ構造型は用意して欲しいと言うことですね。
Vector List等。
0532デフォルトの名無しさん2006/03/05(日) 14:26:35
>>531
言語レベルで?
ライブラリの不足は結構言われてるけど。
0533デフォルトの名無しさん2006/03/05(日) 14:55:38
データ構造自体はライブラリでいいですよ。
ただライブラリがないのなら、Dの配列の機能を強化して欲しいってことですね。
せめてデータの追加は欲しい。
いちいち自前でリサイズしてからってのが使いづらい。
~はあくまで配列の結合でしかありませんから。
0534デフォルトの名無しさん2006/03/05(日) 15:05:44
~=で追加していけばいいんじゃないの?
0535デフォルトの名無しさん2006/03/05(日) 15:39:52
>>534
~を使って配列にデータを追加するならBoxArrayを使うか

Data[] base;
Data  newData;

Data[] temp = new Data[1];
temp[0] = newData;

base ~= temp;

のように値を配列にしてからでないといけないのでは?
0536デフォルトの名無しさん2006/03/05(日) 15:47:36
>>535
Data[] base;
Data newData;

base~=newData;
0537デフォルトの名無しさん2006/03/05(日) 15:51:34
配列をlengthでリサイズしても、前回のリサイズで確保したバッファを
越えなければ配列のコピーは起こりません。
つまり、リサイズ時にバッファを確保するサイズなりアルゴリズムなり
をカスタマイズできればいいことになるかと。
0538デフォルトの名無しさん2006/03/06(月) 18:27:00
よし、ちょっと妄想膨らませてみた

uint resizeArray(uint now){
  return cast(uint)(now*1.2+2);
}
…
Data[] base;
base.fpresize = &resizeArray;


……暗黙のテンプレート実体化まだー?
0539デフォルトの名無しさん2006/03/06(月) 20:06:09
gdcのupdateまだー?
0540デフォルトの名無しさん2006/03/07(火) 14:52:54
Object o;
o.print();

こんなコードを実行すると"Error: ぬるぽ"って表示されないかなー
0541デフォルトの名無しさん2006/03/07(火) 16:27:32
            ,..-─‐-..、
            /.: : : : : : : .ヽ
          R: : : :. : pq: :i}
           |:.i} : : : :_{: :.レ′
          ノr┴-<」: :j|
        /:r仁ニ= ノ:.ノ|!           _
          /:/ = /: :/ }!        |〕)  ガッ
       {;ハ__,イ: :f  |       /´
       /     }rヘ ├--r─y/
     /     r'‐-| ├-┴〆    _, 、_ '⌒ ☆
      仁二ニ_‐-イ  | |      ∩`Д´)
      | l i  厂  ̄ニニ¬      ノ  ⊂ノ >>540
     ,ゝ、 \ \   __厂`ヽ    (__ ̄) )
     / /\_i⌒ト、_   ノrr- }     し'し′
   └-' ̄. |  |_二二._」」__ノ

"Error: ぬるぽ(__LINE__)"さらに行番号が出れば言うことなし
0542デフォルトの名無しさん2006/03/08(水) 00:50:57
GCのminimizeの実装が空だからか
一度大きなメモリを使うとずーと持ちっぱなしになるんだけど
ここいつ実装されそうなのか知っています?される予定がない?
0543デフォルトの名無しさん2006/03/08(水) 09:14:20
>>538
dmd0.149でキタ━━━━(゚∀゚)━━━━!!!!
0544デフォルトの名無しさん2006/03/08(水) 09:18:05
以前 template 周りでごたごたしている間に D 言語への興味を失ってたけど、
最近リファレンス読み返してみたら、また魅力的に思えてきた。
0545デフォルトの名無しさん2006/03/08(水) 09:26:34
おぉ。タイムリーなことに、興味を失った原因のひとつだった
暗黙のテンプレート関数実体化サポートされたのか。
うわ、いいかも。 D 言語。
0546デフォルトの名無しさん2006/03/08(水) 09:28:42
キタコレ。よしC#始めようかと思ってたがD言語もう一度やろっと。
0547デフォルトの名無しさん2006/03/08(水) 09:45:11
template fold(T,U,Fn){
    U fold(T array,U init,Fn fn){
        //foreach(v;array) にするとdmdが落ちる つД`)
        foreach(U v;array)init = fn(init,v);
        return init;
    }
}
template array(T){T[]array(T[]x...){return x.dup;}}
void main(){
    int sum = fold(array!(int)(2,3,4),0,function int(int x,int y){return x+y;});
    printf("%d\n",sum);
}
おお、なかなか良い感じに動くな
0548デフォルトの名無しさん2006/03/08(水) 09:47:49
D 0.149
Mar 7, 2006

New/Changed Features

* Changed on_scope_exit to scope(exit)
* Changed on_scope_success to scope(success)
* Changed on_scope_failure to scope(failure)
* Changed IfStatement to allow: (auto v = expression), and (type v = expression) forms.
* & | ^ &= |= ^= ! && || ?: are now only operators allowed on bools
* opSliceAssign now overloads assignment to a slice.
* Added std.c.fenv.
* Added limited support for implicit function template instantiation.
0549デフォルトの名無しさん2006/03/08(水) 10:15:53
これはもしやジェネリックな展開ですか?
0550デフォルトの名無しさん2006/03/08(水) 13:08:21
キタ━━━━(゚∀゚)━━━━!!!!
0551デフォルトの名無しさん2006/03/08(水) 14:18:25
> & | ^ &= |= ^= ! && || ?: are now only operators allowed on bools
これってまさか整数同士のビット演算が禁止されたってこと?
0552デフォルトの名無しさん2006/03/08(水) 14:28:56
>>551
bool同士の整数演算(+ - * / など)が禁止されたってことのように読めるが。
0553デフォルトの名無しさん2006/03/08(水) 14:30:26
>>551
>>552の解釈で正しい。(コンパイラに適当なソース食わせれば分る)
05545512006/03/08(水) 14:31:24
なるほど、thanks
0555デフォルトの名無しさん2006/03/08(水) 20:18:27
つ、つ、ついに暗黙的なテンプレートのインスタンス化キタ━━━━━━(゚∀゚)━━━━━━ !!!!

条件
1.テンプレートが「関数テンプレート」であること。
2.特殊化してたらダメ
3.暗黙の推論に使用*されない*テンプレート引数はデフォルト値をもてる

関数テンプレートとは、
template Hoge(T) {
T Hoge(T t) { return -t; }
}
テンプレートのメンバが一つだけで、テンプレートと同じ名前で、関数である場合。
0556デフォルトの名無しさん2006/03/08(水) 21:58:23
配列を第一引数に持つ関数とtemplate関数の組み合わせはかなり強力だなー。
template max(T){
    T max(T[]a){
        T max=a[0];
        foreach(inout T val;a)
            if(val > max)max = val;
        return max;
    }
}
int main(){
    const int[]x=[2,3,4,5,6];
    printf("%d\n",x.max());
    return 0;
}
色々と組み方の幅が広がりそう
0557デフォルトの名無しさん2006/03/09(木) 00:56:46
便乗

template opAdd(T){
  T opAdd(T a,T b){
    T c=a.dup;
    for(uint i=0;i<array!(uint)(c.length,b.length).max();i++)
      if(b.length>i&&c.length>i)c[i]+=b[i];
      else if(b.length>i)c~=b[i];
    return c;
  }
}

writef("%s\n",x.opAdd(x));
0558デフォルトの名無しさん2006/03/09(木) 01:01:07
スマソ、センスの無い>>557は忘れてくり
template opAdd(T){
  T opAdd(T a,T b){
    T c=a.dup;
    c.length=array!(uint)(c.length,b.length).max();
    for(uint i=0;i<c.length;i++)
      if(b.length>i)c[i]+=b[i];
    return c;
  }
}
0559デフォルトの名無しさん2006/03/09(木) 01:19:43
>>558
template opAdd(T){
 T[] opAdd(T[] a, T[] b) {
  if( a.length < b.length )
   {auto t=a; a=b; b=t;} //swap
  auto c = a.dup;
  foreach(uint i,T bi; b) c[i]+=bi;
  return c;
 }
}
とか。でもさすがにx+xとは書けないのか…
0560デフォルトの名無しさん2006/03/09(木) 01:26:42
autoなT[]て返していいの?
0561デフォルトの名無しさん2006/03/09(木) 01:48:27
このautoはC++流の作法に従う、という意味のautoではなく
型推論でcの型を決めてください、というautoになるはず。
0562デフォルトの名無しさん2006/03/09(木) 01:55:42
クラスの場合の特例じゃなかったっけ。実装は確認してないけど。

 > クラス参照に対する暗黙の型推論は、 たとえauto記憶
 > クラスが使用されていたとしても、auto宣言にはなりません:
マニュアル和訳からの引用。
0563デフォルトの名無しさん2006/03/09(木) 02:35:50
>>562
その箇所は
auto x = ...; //暗黙型推論してねという意味。
auto Class x = new Class; //スコープ終わりに~this呼べという意味。似て非なるもの
auto x = new Class; //暗黙型推論してねという意味。「↑の意味ではないよ」
と言ってるだけ。>>561が正しい。
0564デフォルトの名無しさん2006/03/09(木) 03:45:34
メンバ関数テンプレートって可能?
0565デフォルトの名無しさん2006/03/09(木) 04:50:25
>>563
ほんとだ、そうなった。

staticのほうはstaticになった。
auto int x = 5;とかやるとauto扱いになった。
クラスに限らずautoにはならんのか。
0566デフォルトの名無しさん2006/03/09(木) 10:29:31
autoが多義で使いどころがかぶってるのはやだな。
新しいキーワード入れてくれないのかな。
0567デフォルトの名無しさん2006/03/09(木) 12:39:17
ほとんど使われてないautoを別の意味で使うというのは
いいアイディアなんだけどな
0568デフォルトの名無しさん2006/03/09(木) 12:57:55
組み込みのdupとかsortとか(゚�听)イラネ
全部template関数で代用できる

private import std.c.stdlib;
template dup(T){T[]dup(T[]array){
        T[]x;x~=array;
        return x;
}}
template sort(T){T[]sort(T[]array){
        static extern(C)int cmp(void*a,void*b){return typeid(T).compare(a,b);}
        qsort(array.ptr,array.length,T.sizeof,&cmp);
        return array;
}}
void main() {
    char[]r="Hello World";
    printf=r.dup().sort();
}
0569デフォルトの名無しさん2006/03/09(木) 13:01:00
>>567
C/C++のautoはほとんど使われてないから
次期C++で型推論の意味で使うようにするのは問題ないと思うけど、
DのautoはRAIIと型推論,両方の意味で頻繁に使いそう。
0570デフォルトの名無しさん2006/03/09(木) 17:06:39
>auto
複数の意味を同じワードに割り当てるのは、C/C++系の悪しき習慣。
別の言葉に割り当てるべきだろ。
constとか、staticにどれだけ悩まされたか。
0571デフォルトの名無しさん2006/03/09(木) 17:34:54
最近C++を始めた学生なんですがD言語って実際どうなんですか?
もしD言語が標準になったりしたらC++の書籍にかけた金が全部無駄
になるんですが。。。
0572デフォルトの名無しさん2006/03/09(木) 17:37:07
Dが標準になったって無駄にはならん。


Dが標準になるにしても、いくら早くても5年以上は掛かるだろうし。
0573デフォルトの名無しさん2006/03/09(木) 17:49:22
>>571
まだ、広まるには10年くらいかかるから安心して
0574デフォルトの名無しさん2006/03/09(木) 20:53:57
え、広まるの? これ

言語仕様が確定して、標準化されるのはいったいいつになるやら
0575デフォルトの名無しさん2006/03/09(木) 21:31:01
まだまだ趣味言語だよな。
0576デフォルトの名無しさん2006/03/09(木) 21:34:19
まあ適当に遊ぶには結構楽しい。
0577デフォルトの名無しさん2006/03/09(木) 21:56:34
>>576
C++をベターCとして使う人みたいな感覚かもしれないけど
お気楽オブジェクト生成〜な言語としてネイティブコード吐くjavaみたいな位置づけなんだよね。

できたらちゃんと標準として確率してほしいけど、1960年代生まれの言語たちのその後を見てると
まだまだ生まれたてのほやほやってかんじだしね。
0578デフォルトの名無しさん2006/03/10(金) 01:09:16
Dを使うべき場面ってどんな事があるかな?
0579デフォルトの名無しさん2006/03/10(金) 01:10:29
正直、使いたい時かと。
0580デフォルトの名無しさん2006/03/10(金) 01:19:16
Dかあ、大分前に使ったけどやめちゃった・・・。
前に使ったとき、
不正アクセスで落ちてもどこで落ちたのかわかんなかったんだけど・・・どうしてる?
あと、デバッガは何使えば良かったんだろ
0581デフォルトの名無しさん2006/03/10(金) 01:25:43
Visual Studioかwindbg以外にいいのあるかい?
0582デフォルトの名無しさん2006/03/10(金) 01:47:01
>>578
perl、rubyマンドクセって時

>>580
インスタンスに存在しないmethodを呼び出すとセグフォする(この表現が正しいかは不明。インスタンスが存在しない場合でもキャストでも)
#デバッガはgdbで十分
0583デフォルトの名無しさん2006/03/10(金) 21:33:15
盛り上がってきた
0584デフォルトの名無しさん2006/03/10(金) 21:52:11
C++やってた人間にはヘッダーファイルが必要ないDが輝いて見える。
C++のヘッダーファイルにはインスタンスを置かないとかウザイ規則が多過ぎ。
0585デフォルトの名無しさん2006/03/10(金) 22:05:42
なんの規則ですか?
0586デフォルトの名無しさん2006/03/10(金) 22:26:14
規則ではないけど実質的には規則といっていいもの。
あるヘッダーファイルで他のヘッダーファイルで宣言された型を使う
とその型の実装ファイルが変更されただけで、そのヘッダーファイル
の実装ファイルもコンパイルし直さないといけない。
だから他のヘッダーで宣言された型を使う場合はポインタで扱う。

#include "******.hpp" // Tempが宣言されているヘッダーファイル
class Temp;
class X { Temp* member; }

わざわざ上のようにしないといけない。
0587デフォルトの名無しさん2006/03/10(金) 22:28:54
ヘッダーファイルと実装ファイルに別けること自体退屈だしめんどくさい。
多重にincludeされると駄目っていう問題もうっとうしかったりする。
0588デフォルトの名無しさん2006/03/10(金) 23:38:32
とてもじゃないけど美しくないし、合理的でない
0589デフォルトの名無しさん2006/03/10(金) 23:53:36
>>586
>class Temp;
この行いらんだろ

>>587-588
・・・・
ゆとり世代?
0590デフォルトの名無しさん2006/03/10(金) 23:55:32
C++に美しさを求めてはいけないと思う。
求めるのはパワーと安定感。
ウザさも安定してるからね。
0591デフォルトの名無しさん2006/03/11(土) 00:07:22
>>589
>>586の例だったら、要らないのは#includeの方だと思うが
0592デフォルトの名無しさん2006/03/11(土) 00:10:20
#include "****.hpp"
がいらないのでした。
0593デフォルトの名無しさん2006/03/11(土) 01:05:40
>>555
これはもしかして、もしかするかも知れんね
テンプレートが強力になるとライブラリもゴバっと増えるし
さっさと1.0にして普及に移って欲しい
0594デフォルトの名無しさん2006/03/11(土) 03:24:37
先生、ムカデ難しすぎます><
0595デフォルトの名無しさん2006/03/11(土) 09:23:55
>>589
頭が古い団塊世代?
0596デフォルトの名無しさん2006/03/11(土) 11:46:02
556 :デフォルトの名無しさん :2006/03/08(水) 21:58:23
配列を第一引数に持つ関数とtemplate関数の組み合わせはかなり強力だなー。

引数とインスタンス(配列)の構文が逆転してるみたいだけど,
この辺のコードはどの辺の仕様でそうなるの?
0597デフォルトの名無しさん2006/03/11(土) 12:04:42
>>596
getterとsetterの代わり
class Test{
char[] test="test";
}
が
class Test{
char[] _test="test";
char[] test(){
  return _test;
}
void test(char[] val){
  _test=val;
}
}
とできるって事。
0598デフォルトの名無しさん2006/03/11(土) 12:39:15
>>596
リファレンスには未だに書かれてないけど、昔から
 配列.kansuu( ... )
は
 kansuu( 配列, ... )
として処理されるようになってるぽ。
0599デフォルトの名無しさん2006/03/11(土) 12:41:29
anObject.method(arg1,arg2)は
method(anObject,arg1,arg2)にはならないの?

thisポインタの型でmangleしてるとかじゃないんだ。
0600デフォルトの名無しさん2006/03/11(土) 13:12:21
>>599
ただのシンタックスシュガーだったはず。
0601デフォルトの名無しさん2006/03/11(土) 13:18:25
>>595
あたりwwwwwww orz
0602デフォルトの名無しさん2006/03/11(土) 14:22:44
そうか。熟年離婚に気をつけろよ。
0603デフォルトの名無しさん2006/03/11(土) 14:49:35
まだ言語比較の Implicit Function Template Instantiation が No のままなんだね。
0604デフォルトの名無しさん2006/03/11(土) 15:31:26
toStringってvoid opConv(out char[] o)の方が良い気ガス
0605デフォルトの名無しさん2006/03/11(土) 21:29:16
>>598
ありが�d
0606デフォルトの名無しさん2006/03/11(土) 21:31:39
>>604
戻り値が文字列じゃない時点で良くないよ
0607デフォルトの名無しさん2006/03/11(土) 21:36:28
>>606
conv(char[])Test
0608デフォルトの名無しさん2006/03/12(日) 18:32:29
英文を一部しか理解できてないが、akideの作者さんが
考えの末、完全にプログラミングから手を引くみたい。
0609デフォルトの名無しさん2006/03/12(日) 20:13:54
          ,,.-―――- .、
         /         丶、
       r'"   _,,......_       \
       l  ,.ィr‐ァ-.、 `ヽ、      ヽ、  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        〉" / /ト、 ミヽュ、ヽ、     i  |
        // l! /|l|ヾヽヽヽヽ `ヽ、    |< とんだ茶番ですね・・・・・・
      レ! ! :l! lr=, `ヾ,rf==ミ ヽ \  ノ  |
      |!| l、 |' i::;;!   l !: ;リ|ト、ヽ ヽ く   \___________
        |ハゞ;! `´,   `~´ ;! | |l ヽ ヾミ;、
         |l ト、ゝ、 ー   ,,.ィ | |トl ヾ、 ヽ
       ハ'; \ト` ーr‐ ",./''^!ノl l!\、!ヾヽ、
      "  `  ,レ((y'´  ,.イ' \
        ,rク´,.ィ~;V^ヽr'´   ,.==\
          / < "ノく: ミヽ  ,:;'"    ヽ
0610デフォルトの名無しさん2006/03/12(日) 20:42:42
>>609
何のキャラ?
0611デフォルトの名無しさん2006/03/12(日) 21:31:56
>>607
その程度のことに、新しい構文と予約語を導入するのは格好良くないな。
0612デフォルトの名無しさん2006/03/12(日) 22:26:55
>>611
関数の戻り値オーバーロードを追加して明示的に呼び出すときにも使うとか…
#でも普通にその関数を呼び出すときに衝突する罠
0613デフォルトの名無しさん2006/03/12(日) 22:28:07
くだらねぇ
厨独特のにおいがぷんぷんするよw
0614デフォルトの名無しさん2006/03/15(水) 23:03:18
>>610
http://anime.2ch.net/test/read.cgi/anime2/1100827414/
0615http://www.vector.co.jp/soft/win95/util/se072729.html2006/03/18(土) 21:04:28
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

そういや64bitにネイティブ対応している2chブラウザてありましたっけ?



0616デフォルトの名無しさん2006/03/18(土) 23:29:29
春だなぁ、全部のスレに書き込んでる馬鹿が居るらしい。
0617デフォルトの名無しさん2006/03/19(日) 00:19:12
806 名前:仕様書無しさん [] :2006/03/19(日) 00:04:44
ttp://www.tiobe.com/index.htm?tiobe_index
言語のランキングはこうらしいぞ

ただ人気のある言語が生き残る言語ではないだろうがな。
7年前の1位はVBなわけで、そいつらは今仕事ないわけで。

0618デフォルトの名無しさん2006/03/19(日) 02:12:57
Lispとか素のPascalとかがVB.NETの上に居るのが納得できんw
Adaの↑↑↑↑↑すげえ、何があった一体!?
0619デフォルトの名無しさん2006/03/19(日) 02:24:34
Lispは研究用に相当使われてるだろ。素のPascalは教育用。
0620デフォルトの名無しさん2006/03/19(日) 02:25:25
教育用はPythonに移ったと思ったけど、まだ需要あるのか?<Pascal
0621デフォルトの名無しさん2006/03/19(日) 02:34:16
>>620
大学教授の中には定年になるまで同じ授業を繰り返す人もいるんだよ。
0622デフォルトの名無しさん2006/03/19(日) 11:53:11
>>617
D想像以上にランキング上位じゃね?
Rubyより上って・・・
目指せ20以内
0623デフォルトの名無しさん2006/03/19(日) 12:47:09
上位抑えていてホッとしたぜ。Dも上がってくるといいな。

むしろRubyは、欧米コミュニティのランキングに入っているだけで凄い気が。
さすがにHSPは無いみたいだな。
0624デフォルトの名無しさん2006/03/19(日) 17:43:54
DMD 0.150
0625デフォルトの名無しさん2006/03/19(日) 20:35:26
Dはとにかくみんなが期待してるんだよ。
だから人気はある。
ただ実用性がないだけ
0626デフォルトの名無しさん2006/03/19(日) 20:59:48
言語仕様という面では、それなりのパワーはあると思う。
ライブラリは語るまでもないレベルだけど。
0627デフォルトの名無しさん2006/03/19(日) 21:18:23
ライブラリが無いのはしゃーないところだな。
Javaでいう
javaパッケージに相当するPhobosと
javaxパッケージに相当するDeimosといった感じで
標準ライブラリを増量していってもらいたい。
0628デフォルトの名無しさん2006/03/19(日) 21:33:39
ライブラリ不足はD.NETですべて解決。
0629デフォルトの名無しさん2006/03/19(日) 23:15:32
やはり既成のライブラリに食いつくのが懸命で、選択肢は.NETのみとなるわけだな。
CのABIをサポートしているメリットとしてはそこだな。
0630デフォルトの名無しさん2006/03/19(日) 23:31:08
ならC#で良いんじゃね?
0631デフォルトの名無しさん2006/03/20(月) 00:37:20
このループは何週目ですか?
0632デフォルトの名無しさん2006/03/20(月) 01:00:30
awk w。
0633デフォルトの名無しさん2006/03/20(月) 01:20:00
変な質問なんだけど、ウォルターってデジタルマーズの社長なんか?
0634デフォルトの名無しさん2006/03/20(月) 07:49:24
なんかGNUかどっかと協力すればいいんじゃね?
0635デフォルトの名無しさん2006/03/20(月) 08:54:03
GNUと協力したらライセンスが妙な事になりそうだなぁ・・・
0636デフォルトの名無しさん2006/03/20(月) 14:20:38
D 0.150

New/Changed Features

* Implicit converstion of reals and imaginaries to complex is no longer allowed per Don Clugston's suggestion.
* Moved string.h functions from std.string to std.c.string.
* Now supports covariant interface method returns.
0637デフォルトの名無しさん2006/03/20(月) 20:02:41
Apache >>>>>>>>>>>>>>>>. FSF
0638デフォルトの名無しさん2006/03/21(火) 01:15:14
Dのレキサにscopeが追加されたのが原因かで
DWTのコンパイルが通らなくなってるっぽいんだが・・。
0639デフォルトの名無しさん2006/03/21(火) 15:05:53
痴漢して一時しのぎしかなさそうですな
0640デフォルトの名無しさん2006/03/22(水) 10:04:27
GDCも更新してくれんか喃
0641デフォルトの名無しさん2006/03/24(金) 10:22:21
DMD 0.150 で

import std.math;
import std.stdio;

void main(char[][] args) {
writef("%f\n", PI);
printf("%f\n", PI);
}

を実行すると

3.141593
-88796093704934495491652487811874763193712640.000000

に、なるのはうちだけ?ちなみに linux
06426412006/03/24(金) 10:39:06
はっ!real のままわたしてるのか・・・
0643デフォルトの名無しさん2006/03/26(日) 16:10:31
ゲームはC#という時代がきそうだな
http://www.famitsu.com/game/news/2006/03/26/103,1143302781,50589,0,0.html
0644デフォルトの名無しさん2006/03/26(日) 16:34:29
絶対にない。ありえない
0645デフォルトの名無しさん2006/03/26(日) 16:59:44
そうとも言い切れないがDでも同様の開発環境を整えることは十分に可能であることは否定できない
0646デフォルトの名無しさん2006/03/26(日) 17:27:54
Dじゃライブラリが揃わないから無理
0647デフォルトの名無しさん2006/03/26(日) 18:25:11
全体でないけど普通にC#でゲーム作成してる。
すべてをC#でって事はないだろうけどC#便利
0648デフォルトの名無しさん2006/03/26(日) 18:54:07
C#に全く勢いがないのでC#ユーザーが増えるのは歓迎だ
もっとがんばって宣伝しなよ
0649デフォルトの名無しさん2006/03/26(日) 19:00:35
バカなコード書いてたら dmd\src\dmd フォルダのソース内のアサーションに引っかかった。
そのバカなコードは当然直すつもりだが、
アサーションに引っかかったことは本家に報告すべきなんかな?

↓再現コード

template Foo()
{ static this(){} }

void main()
{ mixin Foo; }


出力:
Assertion failure: 'ad' on line 730 in file 'func.c'

abnormal program termination
0650デフォルトの名無しさん2006/03/26(日) 22:02:38
書いたのがどんなバカなコードでもエラーメッセージで返すのが
コンパイラの正常動作なんで、内部エラーとかassertionが出たら
本家に報告すべき。れっつごー。
0651デフォルトの名無しさん2006/03/28(火) 06:17:54
import std.string;
と書くであろうところを
import string;
と書いてあるソースを見かけます。
下のままではコンパイルを通らないですが、上のように直すと通ります。
これはどういうことなんでしょうか?
0652デフォルトの名無しさん2006/03/28(火) 08:51:28
どうもこうも上の書き方は古くて使えません.
現在のDMDでは上で書くことになってるからです.
0653デフォルトの名無しさん2006/03/28(火) 10:55:01
>>652
import string; // 古い
import std.string; // 現在
0654デフォルトの名無しさん2006/03/28(火) 21:18:17
D言語の成分解析結果 :

D言語の62%は明太子で出来ています。
D言語の21%は毒電波で出来ています。
D言語の6%は知恵で出来ています。
D言語の4%は華麗さで出来ています。
D言語の3%は勢いで出来ています。
D言語の1%は成功の鍵で出来ています。
D言語の1%は欲望で出来ています。
D言語の1%は大人の都合で出来ています。
D言語の1%は白い何かで出来ています。
0655デフォルトの名無しさん2006/03/28(火) 21:25:08
ム板にまで伝染しやがったか。
0656デフォルトの名無しさん2006/03/28(火) 22:46:36
これは本当に面白みがないよな
06576522006/03/29(水) 01:12:03
しまった.間違ってる(^^;
訂正ども.
0658デフォルトの名無しさん2006/03/31(金) 00:04:52
誰一人として悪くはない。
この企画は…構造自体が不幸を孕んでいたのだ。

戦犯はいない。
理解できない、根源から違った存在がいただけだ。
誰にとっても。

本当なら決して出会うことのなかった、才能も、経験も、熱意も、人脈も、
何もかも違う人々に関わってしまった事自体がお互いに不幸だった。
つまり…関わった時点で無残な結末が予定されていたのだ。

今はもう…その不幸を呪い、やがて忘れらる時を待つしかない。
0659デフォルトの名無しさん2006/03/31(金) 00:07:26
>>658
2chに帰れ
0660デフォルトの名無しさん2006/03/31(金) 00:14:12
規格そのものはかなり洗練されてきてるだけに
今のこの盛り下がりは悲しいもんだな
0661デフォルトの名無しさん2006/03/31(金) 00:20:05
>>658
IGPXのことか?
0662デフォルトの名無しさん2006/03/31(金) 01:15:35
もうちょっと開発スピードが速ければね
この盛り下がりは
いつまでたっても状況が変わらないことに飽きてしまった
というのが実際のところだろう
0663デフォルトの名無しさん2006/03/32(土) 04:03:39
もっと実務で使えるようになって欲しい。
0664デフォルトの名無しさん2006/03/32(土) 04:04:20
それはいつの時代になるんだろうな・・・
0665デフォルトの名無しさん2006/03/32(土) 04:20:17
実務は言語仕様より高品質のライブラリに依存するからね。
Javaなら標準で強力だし、MS製品ならMS自家製ActiveXが強力。
言語仕様はこれでいく、もう変わらないとならないとDも拡充させられないのかも。
0666デフォルトの名無しさん2006/03/32(土) 06:21:01
>>665
仕様が固まらないと
ライブラリも作れないしね
0667デフォルトの名無しさん2006/03/32(土) 06:32:32
>>665
つ extern(C++)の対応
0668デフォルトの名無しさん2006/03/32(土) 07:53:16
D言語っていつのまにか、引数にデフォルト引数を取れるようになってたんだな・・・
0669デフォルトの名無しさん2006/03/32(土) 08:16:58
>>667
そんな対応するの!?
0670デフォルトの名無しさん2006/03/32(土) 10:52:43
>>677
対応しない
0671デフォルトの名無しさん2006/03/32(土) 11:16:00
>>677
そんな環境依存なもの、個別にやってたらきりが無いだろ。
0672デフォルトの名無しさん2006/03/32(土) 11:28:08
>>677
周りの声に惑わされるな。お前ならやれる。
0673デフォルトの名無しさん2006/03/32(土) 11:32:36
>>677に期待。
0674デフォルトの名無しさん2006/03/32(土) 11:38:36
>>677
やる気があるだけでも評価した。
0675デフォルトの名無しさん2006/03/32(土) 14:00:19
未来レス厨発生しました
0676デフォルトの名無しさん2006/03/32(土) 14:01:26
未来レス厨発生しました
0677デフォルトの名無しさん2006/03/32(土) 14:02:00
未来レス厨発生しました
0678デフォルトの名無しさん2006/03/32(土) 14:07:08
つまんね
0679デフォルトの名無しさん2006/03/32(土) 14:18:33
未来レス厨自体がつまらないことに気付け
0680デフォルトの名無しさん2006/03/32(土) 14:20:38
つまんね
0681デフォルトの名無しさん2006/03/32(土) 16:15:09
どこにでも空気読めない香具師っているよね
0682デフォルトの名無しさん2006/03/32(土) 17:15:47
未来レス厨ウザイ
0683デフォルトの名無しさん2006/04/02(日) 01:49:54
GCを動かないようにする方法ってないんですか?
0684デフォルトの名無しさん2006/04/02(日) 05:24:12
>>683
std.gc.disable()だったような。
0685デフォルトの名無しさん2006/04/03(月) 17:56:39
>>622
rubyより下になりしたよ。
0686デフォルトの名無しさん2006/04/03(月) 18:29:14
D 0.151
Apr 2, 2006

New/Changed Features

* Changed the hash type from uint to hash_t. This will make 64 bit implementations better.
0687デフォルトの名無しさん2006/04/03(月) 19:24:55
* Fixed D/35845
http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D/35845
http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D/36013
連想配列壊れるバグがひとつ直ったぽいのでこれは嬉しい
0688デフォルトの名無しさん2006/04/04(火) 08:55:10
poseidon-v0.20 キタコレ
0689デフォルトの名無しさん2006/04/04(火) 08:56:14
同時に DMD 0.152 もキテタコレ
0690デフォルトの名無しさん2006/04/04(火) 09:14:56
>>688
なにそれ?
0691デフォルトの名無しさん2006/04/04(火) 09:39:06
>>690
http://dsource.org/projects/poseidon
0692デフォルトの名無しさん2006/04/04(火) 11:20:20
Poseidon、日本語入力すると落ちる?
0693デフォルトの名無しさん2006/04/04(火) 12:25:52
落ちた。
0.12は大丈夫だったのに。
0694デフォルトの名無しさん2006/04/04(火) 14:46:05
メニュー日本語になるんだけどなあ。
進化したんだか退化したんだか。
0695デフォルトの名無しさん2006/04/04(火) 23:56:41
vimで事足りる気がする。

それよりmakeがdに対応してくれないかなぁ。
毎回.SUFFIXESを書くのが面倒だ。
0696デフォルトの名無しさん2006/04/08(土) 11:12:13
過疎りだしたな。
0697デフォルトの名無しさん2006/04/08(土) 12:34:37
なあに、話題があればどこからともなく湧いてくるさ
0698デフォルトの名無しさん2006/04/08(土) 14:05:36
キリスト教のカソリックとカトリックって同じ?
0699デフォルトの名無しさん2006/04/08(土) 14:24:17
D言語を学ぼうと思うんだがC言語を理解してから学んだ方がいい?
アセンブラは大丈夫です
0700デフォルトの名無しさん2006/04/08(土) 14:28:02
入門者向けの情報が充実してないから
ぶっちゃけ、C言語の経験もないようじゃ勉強のしようがないんじゃかな・・・
ここにいるひとはみんなC++やjavaの経験あると思うし

とりあえずC言語の知識は絶対に無駄にならないので学んでおくといい
0701デフォルトの名無しさん2006/04/08(土) 14:50:47
C言語の配列、ポインタ回りの構文は腐ってるので、いきなりDでもいいと思う。
問題はゼロからの入門ができるDサイトが無いことだが…。
0702デフォルトの名無しさん2006/04/08(土) 14:53:57
それはD言語が1になってからだな
0703デフォルトの名無しさん2006/04/08(土) 14:56:50
初心者用となると,まずはやっぱJavaじゃね?
0704デフォルトの名無しさん2006/04/08(土) 15:00:00
D言語って文法とか予約語とかメソッドの命名規則とかもJavaと似ているし。
Javaを最初にやるのも悪くは無いな。
0705デフォルトの名無しさん2006/04/08(土) 16:21:16
>>704
javaからやってみます
初心者でもできるD言語の本とかないでしょうか?
0706デフォルトの名無しさん2006/04/08(土) 16:46:06
一応出てはいるけど・・・・・・だいぶ前のdmdを元にしてるからいまいちな気がしないでもない

D言語パーフェクトガイド
ttp://www.gihyo.co.jp/books/4-7741-2208-4

一応言っとくと、別にパーフェクトではない
0707デフォルトの名無しさん2006/04/08(土) 18:26:09
アセンブラが分かってるなら C でいいんじゃないだろうか。
文法が汚いのが嫌なら PASCAL もいいかも。
コンパイラの教科書読んですぐ D も愉快かも。
0708デフォルトの名無しさん2006/04/08(土) 20:26:57
つまり、今からD言語の入門サイトを作って日々更新していけば
D v1.0と同時に本書いて印税生活です。
0709デフォルトの名無しさん2006/04/08(土) 21:32:54
>>708
もし本当にできるならやって、D言語に貢献してほしい
0710デフォルトの名無しさん2006/04/08(土) 21:58:01
>>699-709
流石だ。お前らならできる
0711デフォルトの名無しさん2006/04/08(土) 21:59:24
共著でいい?
0712デフォルトの名無しさん2006/04/08(土) 22:16:34
K.INABA氏のD Memoの改訂版を6割ぐらい書いて放置してあるな、、、
ハードディスクの肥やしになりそうだ。
0713デフォルトの名無しさん2006/04/08(土) 23:01:11
>>712
公開キボン

マジメな話、6割できてるならwikiとかに置いとけば誰かメンテしてくれるのでは
0714デフォルトの名無しさん2006/04/09(日) 00:52:37
今の日本のD言語界に足りないのは、インストールから環境構築までの情報だと思う。
言語自体の話は偉大な先人たちのサイトがあるし、C++に比べても簡単な言語だから、
今の状態でもそれなりに大丈夫。
本家サイトの日本語訳サイトもあるしね。
むしろ、どうやってデバッグしたらいいかとか、Makefileをどのように書くかとか
そのへんのまとまった情報があれば、初心者にもとっつきやすくなると思う。
ちゃんと使える統合開発環境がない今、D言語をやってみたいと思う人にとって
そこが一番のネックなのでは?
0715デフォルトの名無しさん2006/04/09(日) 01:50:27
インストールって解凍するだけだし
環境構築ってパス通すだけじゃん…
0716デフォルトの名無しさん2006/04/09(日) 01:59:13
実際に足りてないものは
コード断片の蓄積だろうな。

なんのサンプルを探すにしても
他言語(Cとか)のコードを訳すことになる
現状から、コードサンプルにD言語が
使われるようになる時代へ進むことが
できればよいね。
0717デフォルトの名無しさん2006/04/09(日) 02:00:18
Blogで淡々と書いたユーティリティ関数、はまった所、(解消した)疑問点をつづっていって蓄積していくといいかも。
0718デフォルトの名無しさん2006/04/09(日) 02:13:17

漏れも716に一票。

デバッグやMakefileなんてD限定の知識ちゃうし。

D言語で一番困る事は、少し前のコードが簡単にコンパイル不能になること。
こまめに変更点読んでないと追従できないのは初心者にはつらい。

0719デフォルトの名無しさん2006/04/09(日) 02:34:12
1.0じゃないのに手を出す初心者なんてただの既知ですよ
0720デフォルトの名無しさん2006/04/09(日) 02:35:28
いつになったら1.0出ますか?
0721デフォルトの名無しさん2006/04/09(日) 02:39:37
CもC++もまともな規格が出来る前から一般化してるわけだが。
0722デフォルトの名無しさん2006/04/09(日) 02:47:46
未だに「準拠レベルがうんぬん」ってのが宣伝になるレベルじゃん<C/C++
SQLとかも未だに92が業界基準だからなぁ
0723デフォルトの名無しさん2006/04/09(日) 02:50:52
>>714
統合開発環境って……
お前のような低能はおとなしくVBでも使ってろ
0724デフォルトの名無しさん2006/04/09(日) 02:52:23
ANSI規格化と言語仕様の模索中を同じレベルで比較するのはいかがなものかとw
0725デフォルトの名無しさん2006/04/09(日) 03:06:41
時代が違うおかげで
競合相手の数が違うので、
比較できる話にはならない。
0726デフォルトの名無しさん2006/04/09(日) 03:07:15
IDEはそれほどバカにしたものでもないと思うんだが

と釣ってみるてすつ
0727デフォルトの名無しさん2006/04/09(日) 03:10:51

めずらしくもりあがってるなー
0728デフォルトの名無しさん2006/04/09(日) 03:11:36
>724

誰もANSIなんて言ってない
0729デフォルトの名無しさん2006/04/09(日) 03:47:44
ANSIは721に対することじゃね?
システム毎に独自にCコンパイラを積んでて
実用で使われててもコンパイラ毎に互換性がなくて
後から標準化が策定されたという経緯を説明してるのでは。
0730デフォルトの名無しさん2006/04/09(日) 04:03:21
>>729
728はお馬鹿チャンなので勘弁してあげてください
0731デフォルトの名無しさん2006/04/09(日) 04:05:32
というか>>728がどういう解釈をしたのか分からんのだけど。
0732デフォルトの名無しさん2006/04/09(日) 04:18:32
ANSIとかISOとかIEEEとかJISという単語を知らない不勉強な方なんでしょ
0733デフォルトの名無しさん2006/04/09(日) 04:29:09

700 あたりからまとめ。

1. IDEがないと環境設定とデバッグとMakeが困る。
2. サンプルコードの蓄積が大事。
3. v1.0と同時に本書いて印税生活。
4. >>699-709流石だ。お前らならできる。
5. やっぱJava さいこー。
0734デフォルトの名無しさん2006/04/09(日) 04:43:33

1. VBをどうぞ。
2. 大事だな。
3. 普通に働いた方がきっと儲かる。
4. 天才!お前ならできる。
5. C#の方が近くないか?
0735デフォルトの名無しさん2006/04/09(日) 07:11:31
C++よりD言語の方が優秀なのかと思ってたんだけど、C++のが上なのね?
0736デフォルトの名無しさん2006/04/09(日) 07:22:10
>>735
当たり前だ。C++の開発に掛かった人手、時間、議論の多さを考えれば当然。
D言語なぞ、好き勝手に拡張しているだけじゃないか。
0737デフォルトの名無しさん2006/04/09(日) 07:24:25
じゃあC++使うのやめるか
0738デフォルトの名無しさん2006/04/09(日) 10:00:59
めんどくさいからD言語はありとあらゆるプログラミング言語の中で
最も駄目で最下位の言語ということにしておこう。
C#やJavaやC++はあまりにも上位過ぎて恐れ多くて使う気になれない

駄目人間の私にはDがぴったりだ
0739デフォルトの名無しさん2006/04/09(日) 10:22:40
個人的に、Dには「整理されたC++」を望んでいたんだが
方向性が定まりきっているのかと思ったらそうでもないからなあ。

整理されたC++を「D」、その上を目指すのを「D++」と分けてほしい。
そうすればみんなDに手を出しやすいと思うよ
0740デフォルトの名無しさん2006/04/09(日) 10:30:38
コンパイラが最適化しやすいことを前提に可能な限りOOするのが目標だろうし
金儲けしなきゃいけない事情とかで、言語仕様を規格団体に預けられる状態に至っていない
0741デフォルトの名無しさん2006/04/09(日) 13:12:59
>>735
そういうこと
0742デフォルトの名無しさん2006/04/09(日) 13:18:14
つ Java > 整理されたC++
0743デフォルトの名無しさん2006/04/09(日) 13:26:41
春はどのスレ逝ってもこんな展開ばっかりだな。
0744デフォルトの名無しさん2006/04/09(日) 13:31:20
Dはさぁ、、いまの言語使用を全て捨てて、
Javaのネイティブ版って事にしとけばいいんじゃない?
複数の目標を追うのはやっぱ厳しいよ。
言語に関する部分はSunに研究してもらってその成果をDのネイティブコンパイラにフィードバックすればいいじゃん。

どの道ライブラリがそろってきてあれこれ継承しているうちにJava並に重くなるから。
0745デフォルトの名無しさん2006/04/09(日) 13:34:50
つ Java < 整理されたC++
0746デフォルトの名無しさん2006/04/09(日) 13:35:50
>>744
それをネイティブな英語で言えたら考えてやってもいいよ。
0747デフォルトの名無しさん2006/04/09(日) 13:38:07
>>746
D is Ass.
0748デフォルトの名無しさん2006/04/09(日) 13:39:13
747 is Ass.
0749デフォルトの名無しさん2006/04/09(日) 14:00:47
D 0.153
0750デフォルトの名無しさん2006/04/09(日) 14:17:51
>>744
gcjと被る
0751デフォルトの名無しさん2006/04/09(日) 14:35:10
 Java > 整理されたC++
0752デフォルトの名無しさん2006/04/09(日) 14:40:18
本来あるべき姿
D>C#>Java
D>C++
D>ECMAScript/Ruby
Haskell>>>>>>>>>>>>>>>>>>>>>D
0753デフォルトの名無しさん2006/04/09(日) 14:41:10
>>751
つ Java < 整理されたC++
0754デフォルトの名無しさん2006/04/09(日) 14:47:08
pow(Java, 2) > pow(整理されたC++, 2)
0755デフォルトの名無しさん2006/04/09(日) 14:49:12
>>753-754
つまりJavaはC++よりも絶対値の大きい負数ですね。
0756デフォルトの名無しさん2006/04/09(日) 14:50:54
整理されたC++ != D
0757デフォルトの名無しさん2006/04/09(日) 15:07:17
↑正解
0758デフォルトの名無しさん2006/04/09(日) 15:28:27
D 0.153
Apr 7, 2006

New/Changed Features

* Changed parameter types for std.date.MakeDate and std.date.MakeTime so they won't overflow.
* Changed arraycat per suggestion D.announce/3400 .
* Added -nofloat compiler switch to suppress generation of __fltused reference by library code (Windows only).
* dmd for Linux now adds --gc-sections switch to the link step to enable smart linking.
* Nested functions now are placed in their own distinct code sections to facilitate smart linking.
0759デフォルトの名無しさん2006/04/09(日) 15:52:34
ダウンロードできないしannounceも流れてないのでミスじゃないかなあ>0.153
0760デフォルトの名無しさん2006/04/09(日) 17:07:32
dwtつかえねー
0761デフォルトの名無しさん2006/04/09(日) 17:29:35
流れを読まないで質問。
あるモジュール(B)でprivate importしたモジュール(A)にある宣言の一部をそのモジュールの外に伝播させる…
つまり、そのモジュール(B)をimportしたモジュール(C)に公開するような方法ってありませんか?
module A;
typedef void* Hoge;

module B;
private import A;

module C;
import B;
// ここでHogeがimportされて欲しい。

今、LuaをDからObjectiveに使えるようにしようと試みているのですが、
どうしてもコールバックの関係で一部の宣言を見えるようにする必要が出ていまして、
しかしAの全体をimportしてしまうのはちょっとな、という状況です。
再定義やalias Hoge Hoge;では競合していると怒られてしまいました。
Aの必要な部分だけ別のモジュールに追い出すしかないですかね…
0762デフォルトの名無しさん2006/04/09(日) 18:09:29
>>761

module B;
private import A;

alias A.Hoge Hoge;

0763デフォルトの名無しさん2006/04/09(日) 18:16:34
>>760
"scope"を置換する
0764デフォルトの名無しさん2006/04/09(日) 18:34:20
>>760じゃないが、置換しても通らないっぽくないか?
0765デフォルトの名無しさん2006/04/09(日) 19:01:18
前方参照が解決できないとか怒られた。
0.149では大丈夫。
0766デフォルトの名無しさん2006/04/09(日) 19:13:03
>>762
なるほど、ありがとうございます。
aliasを貼りなおすにはモジュールを明示してやればよかったのですね。

しかし、761のコードではConflictは再現しませんねorz
原因の切り分けを間違えておりました。申し訳ありませんが質問を訂正させてください。
競合のエラーが出るのはさらにもう一つモジュールがあって、
それとBが相互にimportしている場合でした。
module A; typedef void* Hoge;
module B1; private import A, B2; Hoge hoge; // B1内でHogeを使用
module B2; private import A, B1; alias A.Hoge Hoge; // B2にHogeを取り込み
module C; import B2;
また、761の例でCからAをimportした場合にも同じ状況になりますね。
A.d(1): typedef A.Hoge conflicts with B2.Hoge at B2.d(1)
となるとB1でHogeを使用するときにモジュール名を明示してやる必要があると…
名前変えてalias貼ったほうが早いですか…
0767デフォルトの名無しさん2006/04/09(日) 19:48:33
>>764
ああ、今試したらdwt自体のコンパイルがダメだった。
作ってあるlibを使う分にはokだった。
TVectorがエラーになっているけど、templateかmoduleが何か変わった?
0768デフォルトの名無しさん2006/04/09(日) 22:11:29
作ってあるlib使えるって事はつまり、
1,dmd古いのにしてlibのコンパイルを通す。
2,dmd新しくする。
3,scopeを適当な名前と置き換える
で、イケるって事かな。
0769デフォルトの名無しさん2006/04/09(日) 23:57:48
>>768
俺の場合は、
1. コンパイルが通らなかったのでscopeを_scopeへ置き換えてコンパイルした(0.148か9あたり?)
2. dmdを新しくした(v0.151)
3. 普通に使えていた

ただ、テンプレートの扱いが変わっていたりするなら危なかったりする?
どう変わったのか分からないですが、今のバージョンでコンパイルできるように直したほうがよさげ。
少しの修正なら。

こんなことが多発するから、開発停止するライブラリプロジェクトが多いのかな。
0770デフォルトの名無しさん2006/04/10(月) 01:05:53
周辺ライブラリの開発が軒並み停止していったら
Walterも考えを改めるのかのう
0771デフォルトの名無しさん2006/04/10(月) 01:21:50
え?海外で支持されてるの?
日本と同じで嗜好は好きだが期待してねぇって人ばっかかと思ってた
0772デフォルトの名無しさん2006/04/10(月) 02:02:32
ああ
C#が俺を呼んでいる
0773デフォルトの名無しさん2006/04/10(月) 02:15:23
そもそもD言語でなければ実現できない、
まぁそこまで行かなくても、C++でもJavaでもなく、
D言語だからこそ簡単に実装できる、って処理が
無いからなぁ。
寧ろ苦労の方が多いんじゃ意味無いし。
0774デフォルトの名無しさん2006/04/10(月) 07:51:44
>>773
やばいとこついてる
0775デフォルトの名無しさん2006/04/10(月) 10:11:36
じゃあアスペクト指向を
0776デフォルトの名無しさん2006/04/10(月) 13:55:43
>>773
とりあえず、自分自身のC++への不満を書いてみるよ。

クラス型変数がデフォルトで (参照ではなく) 値であり
スタックに置かれるため、オブジェクトを関数内で生成して
返す場合などに、オブジェクトがコピーされる。
そのためいちいちコピーコンストラクタと代入演算子を書く必要がある。
// 他の人がどういう使い方をするか分からないので、
// 使われないかもしれない関数を書く必要があると。

リソースを管理するクラス等、コピー不可能なオブジェクトは
ヒープに作成してポインタ返しすることになる。
値を返す場合とポインタを返す場合が混在するので、
どうもコードがすっきりしない。

ガベージコレクションが無いので、Exceptional C++に書いてあるように
例外安全にするための努力が多く必要になる。
(可能か不可能かの問題ではなく、目的の処理以外に手間がかかる)

一番の不満は、このあたりかな。
(慣れで無意識に回避してはいるけど、出来ればこういう手間は省きたい)

最後に、JavaだとネイティブAPIを使えない (JNIに隔離されている) し、
C#もJavaも速度の問題があるので、C++の代わりにはならないかと。
0777デフォルトの名無しさん2006/04/10(月) 14:05:59
>>773
Dでどうなっているのか知らないで書くのだけど、
後置インクリメント (or デクリメント) は
前置ので実装するのが定石だから、

const ClassName operator ++(int ignored) {
ClassName temp(*this);
++(*this);
return temp;
}

↑こういうコードは自動生成してもらいたい。
(前置形式のみの定義で済ませたい)
0778デフォルトの名無しさん2006/04/10(月) 16:36:29
なんか痛々しいレスだな
0779デフォルトの名無しさん2006/04/10(月) 17:08:02
>>777

Dにはプリインクリメントの演算子のオーバーロードは存在しない。
07807772006/04/10(月) 17:25:21
>>778
通りすがりに見て、面白そうな話をしていたので、
ついレスしてしまった。
規格が固まったらすぐにDを覚えようと思っているので、
勘弁しておくれ。

>>779
レスさんくす。
後置のみだと常に返り値の一時オブジェクトを
生成することになって気軽に使えない気がするけど、
Dでは書式は後置で効果は前置、というのが普通なのかな?
少し自分で調べてみます。
0781デフォルトの名無しさん2006/04/10(月) 17:35:09
>780
Dでは++hogeは(hoge+=1)と同値。
0782デフォルトの名無しさん2006/04/10(月) 17:35:58
D言語の場合

++xってぶっちゃけ(x+=1)と意味的に一緒だよね。
だから前置インクリメントは暗黙的に(x+=1)として扱うよ。

という方式(ついでに --xは(x-=1)として扱う)。

そういうわけでDでは+=の演算子を定義すれば自動で前置も定義したことになる。

なので前置の演算子はオーバーロード出来ない。
0783デフォルトの名無しさん2006/04/10(月) 17:38:44

>780

>後置のみだと常に返り値の一時オブジェクトを
>生成することになって気軽に使えない気がするけど、
>Dでは書式は後置で効果は前置、というのが普通なのかな?

まるで見当違い。

0784デフォルトの名無しさん2006/04/10(月) 18:01:15
>>777
20点
0785デフォルトの名無しさん2006/04/10(月) 18:31:02
>>782
ま、文句はないんだけど、イテレータを作るときに、
iter += 1;
とかできてしまうのが気持ち悪い。
0786デフォルトの名無しさん2006/04/10(月) 18:42:15
単行*がオーバーロード出来ないからイテレータの話はDには無意味。
0787デフォルトの名無しさん2006/04/10(月) 18:44:51
不自由な言語なんですね。
0788デフォルトの名無しさん2006/04/10(月) 18:58:33
>>786
いわゆるSTLのイテレータしか前提にないの?
0789デフォルトの名無しさん2006/04/10(月) 19:07:52
>785

前置の記述ができないのではなく。演算子のオーバーロードの扱いが += 1だというはなし。
07907862006/04/10(月) 19:11:03
>>788
あーそういう前提を持って書いてたな。俺
別にSTLと完全に同じインターフェイスにしなくても問題ないのか。

そういうことも考えると>>785みたいなのは確かに少し嫌な感じだなぁ。
+=が可能だとそのイテレータがランダムアクセスできると勘違いしそうだし。
0791777=7802006/04/10(月) 20:24:48
>>781-782
なるほど、分かりやすいです。

>>784
コメントについてであればいいのですが、
コードについての話であれば
どのあたりがまずいのか指摘していただけると助かります。
(微妙にスレ違い気味ではありますが…)
0792デフォルトの名無しさん2006/04/10(月) 21:35:48
void main(char[][] args)
{
int matrix[10][10];
for (int i = 0; i < 10; i++)
matrix[i][] = i;
}

を DMD v0.151 でコンパイルすると

Internal error: ../ztc/type.c 308

0.151 より前のDMD/GDCだとコンパイルできる。
0793デフォルトの名無しさん2006/04/10(月) 22:28:58
使って覚えたタイプのC++な人が、自信満々に頓珍漢な事書いてると、
なんかアレだなぁ・・・・・


痛々しい。

あえて釣られるのも面白いけど、なんか読んでて痛々しい。
0794デフォルトの名無しさん2006/04/10(月) 22:49:00
>>793
どこがどう頓珍漢なのか指摘してやれば面白いと思うのだが、
内容を書かずにいると、どちらが頓珍漢なのか分からない。
使いながら覚えたのではない人の教養を、見せてみれ。
0795デフォルトの名無しさん2006/04/10(月) 22:57:15
アフリカではよくあること
0796デフォルトの名無しさん2006/04/11(火) 15:05:05

0.153 正式リリース。

そして >792 の内部エラーもなおってた。
07977602006/04/12(水) 02:05:45
0.153でdwtが不完全ながらもコンパイルできたんで報告しとく。
1.scopeを置換する。
これは既出。

2.「このステートメントは実行されない」というウォーニングを修正する。
「テンプレートが解決できない」というエラーメッセージの方を注目してしまいがちだが、
実はこれは偽者で、その上の「このステートメントは実行されない」というウォーニングを
修正すれば消える。
具体的には、return nullとかをコメントアウトする。

3.リリースビルドの-inlineを取り除く。
インライン展開するようにすると、エラーがいっぱい出る。

インライン展開ありでビルドできれば完璧なんだが、俺の力じゃちょっと無理そう。
0798769 2006/04/12(水) 16:51:51
>>797
エラーが原因でテンプレート云々出ることは知っていたけど、
警告が原因ででるとは知らなかった・・。というか、最近そうなった?

とりあえず、socpeを置換して、コンパイルオプション「-w」を削ったら、-inlineはついたままでいけた。

1. さまざまなscopeを_scopeへ置換
2. make-dwt-lib.batのbuildについていている「-w」引数を削る

>>dmd v0.153
07997602006/04/12(水) 20:33:25
おおっ、そのやり方のほうが簡単でいいね
0800デフォルトの名無しさん2006/04/13(木) 03:26:47
D 0.154
Apr 11, 2006

New/Changed Features

* Numeric suffix 'l' now deprecated, use 'L' instead.
* Floating point suffix 'I' now deprecated, use 'i' instead.

Bugs Fixed

* Removed --gc_sections, it causes exception handling to fail.
0801デフォルトの名無しさん2006/04/13(木) 17:37:14
見分けづらいよってことか
0802デフォルトの名無しさん2006/04/13(木) 20:08:16
まあプログラマなら
I l 1 とか O 0 の区別がしやすいフォント使うはずだが
0803デフォルトの名無しさん2006/04/13(木) 20:26:19
MSゴシックですが何か?
0804デフォルトの名無しさん2006/04/13(木) 22:16:36
IDEの欠点は太字適用で等幅が崩れることだな
もちろん崩れないのもあるが
0805デフォルトの名無しさん2006/04/14(金) 17:56:06
関数が渡された配列を書き換えたら呼び出し側が渡した配列も書き変わるんだが仕様か?
0806デフォルトの名無しさん2006/04/14(金) 18:12:45
>>805
配列は参照渡しなので仕様です。
0807デフォルトの名無しさん2006/04/14(金) 18:38:22
>>805
つ.dup
0808デフォルトの名無しさん2006/04/14(金) 19:29:51
>>806-807
ありがと、dupで解決した。
0809デフォルトの名無しさん2006/04/15(土) 13:21:29
警告付き(-w)でphobosがコンパイルできない件について
それと他の所がエラーになってると釣られてテンプレートもエラーになる件に付いて
0810デフォルトの名無しさん2006/04/15(土) 15:01:08
警告はWalterたんが嫌いだと言って、もともと無かったものだから、
軽視されて後回しになっているんじゃないかなと邪推してみる。
0811デフォルトの名無しさん2006/04/16(日) 22:31:18
linux版のdmdが作る実行ファイルはサイズが大き過ぎるのですけど
gdcの方も一緒ですか?使った方教えてください。
0812デフォルトの名無しさん2006/04/17(月) 00:23:21
>>811
-L--strip-all
0813デフォルトの名無しさん2006/04/18(火) 20:56:25
poseidon 0.21 リリース
日本語入力すると落ちるのは直ったっぽい。

www.dsource.org が内部サーバーエラーになってて辿れんのでリンク針
ttp://svn.dsource.org/projects/poseidon/downloads/bin/win32/poseidon_v0.21-bin.rar
セットアップ版
ttp://svn.dsource.org/projects/poseidon/downloads/bin/win32/setup-v0.21.exe
0814デフォルトの名無しさん2006/04/18(火) 21:55:53
gdc 0.18まだー?
0815デフォルトの名無しさん2006/04/18(火) 23:00:24
DStress
ttp://dstress.kuehne.cn/www/dstress.html
からGDC-0.18.1ってのにリンクが貼ってあるけど、これは何だろ?
0816デフォルトの名無しさん2006/04/19(水) 01:04:08
gdcって更新するには毎回gccのコンパイルが必要なわけですか?
0817デフォルトの名無しさん2006/04/19(水) 14:34:11
>>815
http://www.puremagic.com/~braddr/d/gdc/
0818デフォルトの名無しさん2006/04/21(金) 17:36:38
改めて言語仕様を見るとD言語ってやっぱいいなぁ.
文字列周りがちょっと鬱陶しいけど.
0819デフォルトの名無しさん2006/04/22(土) 01:13:26
文字列まわりだけは丸投げしてる感があるよな。
「Unicodeはやるが、他は任せた!」的な
0820デフォルトの名無しさん2006/04/22(土) 15:34:27
D言語ってたいした能力も無いくせに自分にはC++より良い言語を作る能力が
あると勘違いした房が作ってるオナニー言語だろ?
C++の欠点を見つけただけでC++の良いところもみずに
C++の全てを超えてしまったような勘違いをしてるんだろ。
相対性理論にちょこちょこっと何か付け加えて「アインシュタインを超えた!」
とか言ってるアホ研究者と同じだ
0821デフォルトの名無しさん2006/04/22(土) 16:04:29
↑あまりに的外れすぎてワロタwww
0822デフォルトの名無しさん2006/04/22(土) 16:26:58
だって言語仕様の不備に対して糾弾してるとかじゃないから。
貶す論拠がレッテル張りと思い込みと宗教観だけだから。
0823デフォルトの名無しさん2006/04/22(土) 16:28:22
べっ、別にD言語のことなんか好きじゃないんだからぁ
0824デフォルトの名無しさん2006/04/22(土) 17:10:32
D言語のことなんか心配してるわけじゃないんだからね!
0825デフォルトの名無しさん2006/04/22(土) 18:05:16
Dのことを心配する、C++タンであった・・・
0826デフォルトの名無しさん2006/04/22(土) 18:39:19
>>820

> C++の欠点を見つけただけでC++の良いところもみずに
> C++の全てを超えてしまったような勘違いをしてるんだろ。

Dのよいところを見ずにけなしている時点でお前はお前が軽蔑する存在以下だな。


> 相対性理論にちょこちょこっと何か付け加えて「アインシュタインを超えた!」
> とか言ってるアホ研究者と同じだ

おまえは相対性理論が何かも理解しないで「アインシュタインなんかたいしたことない」
と吹聴するうつけ者だな。
0827デフォルトの名無しさん2006/04/22(土) 18:46:46
C/C++には確かに問題が多々あるが、それを補って余りあるだけの過去の資源がある
それに問題があるとはいえ、ちゃんとした知識のある者にとっては使い勝手の良い言語であることに変わりはない

そこにこんなDなんてのが出てきても誰も使わんだろ
0828デフォルトの名無しさん2006/04/22(土) 19:00:43
実際のとこ、ライブラリの恩恵の有無はCとDの絶望的な隔たり。
0829デフォルトの名無しさん2006/04/22(土) 19:00:57
>827
これから過去の資源を積み上げていけばよい。
馬車があるからといって蒸気機関車の存在価値を否定する類の人間かい?
0830デフォルトの名無しさん2006/04/22(土) 19:14:09
とどのつまり言語仕様が固まらないのが悪い。
0831デフォルトの名無しさん2006/04/22(土) 19:20:19
>>827
Dは言語として目指す場所は決まりつつあるけど完成まではまだ道半ば。
どんな言語もできたばっかりの時点でライブラリが少ないのはあたりまえ。
だからといって新興の言語が発展しない理由にはならない。

PerlやPythonがあるからってRubyが誰にも使われてないか?
PerlにはCPANという膨大な資産があるわけだがRubyは誰にも使われてないか?

C/C++とD,排他なのではなくそれぞれが好きなものを好きなように
適材適所で利用すればいいんでないの?
0832デフォルトの名無しさん2006/04/22(土) 19:24:14
ここはすばらしい釣り堀ですね
0833デフォルトの名無しさん2006/04/22(土) 19:42:31
http://d.hatena.ne.jp/yaneurao/20060423#p1

>いま他人のプログラムをデバッグしている。時間がもったいないので目視のみだ。
>私の場合、小さなクラスならば、目視のみでほぼ100%デバッグできる。

「100%バグが取れた」と無邪気に確信でき、平気で吹聴できる辺りが痛杉。
0834デフォルトの名無しさん2006/04/22(土) 19:43:55
誤爆ですかい?
0835デフォルトの名無しさん2006/04/22(土) 19:52:40
ヲチ板にでも行けば?
0836デフォルトの名無しさん2006/04/22(土) 19:54:37
あと2、3年もしたらD言語が標準になっていたらいいな。
0837デフォルトの名無しさん2006/04/22(土) 21:01:27
>>831
ガンガレ。
ライブラリが充実してないのは当たり前だからokで、新興の言語は発展しない理由はアナタの中には無いのでノープロです。

俺はライブラリが充実して、新興の言語じゃなくなったころに使います。よろしく。
0838デフォルトの名無しさん2006/04/22(土) 22:11:01
なんでDってこんなにアンチが多いの
0839デフォルトの名無しさん2006/04/22(土) 22:13:31
や、どの言語にも居ると思うが。
0840デフォルトの名無しさん2006/04/22(土) 22:44:25
そうか、じゃあ俺もアンチになろう
D言語でオナニーしました、俺はアインシュタインを超えた
0841デフォルトの名無しさん2006/04/23(日) 11:41:33
D言語でFrameworkっぽいの構想してるけどなにか?
0842デフォルトの名無しさん2006/04/23(日) 11:51:37
>>841
いきなりそーゆうのが出てくると閉じた世界になっちゃうから、
まずは、glibとX11とGtkをD言語で書き直してよ。
それから、参戦するから。
0843デフォルトの名無しさん2006/04/23(日) 12:03:20
>>842
その3つを使ったことないけどX11だけは勉強しようかな・・・
0844デフォルトの名無しさん2006/04/23(日) 12:21:38
>>842
わかった俺が書き直すまで待ってろ




千年ほど
0845デフォルトの名無しさん2006/04/23(日) 13:28:23
個人的にはQtを頼む
0846デフォルトの名無しさん2006/04/23(日) 13:31:23
>>845
Trolltechを説得しろ。
0847デフォルトの名無しさん2006/04/23(日) 13:33:44
そういえばQtってGPL版があるんだっけか
0848デフォルトの名無しさん2006/04/23(日) 13:40:52
Visual Studioもただで使えるしC♯の方がいいのに
なんでまだD言語なんてシェアウェア厨のオナニー言語にアインシュタインを超えてるの
MONOでネイティブコードも作れるのになんで欠陥だらけのガベコレを使ってるんだ
お前らのやっていることの意味がわからない
0849デフォルトの名無しさん2006/04/23(日) 13:51:50
>>838
アンチが多いんじゃなくて煽りにマジレスするからつきまとわれるんだと思うな。
0850デフォルトの名無しさん2006/04/23(日) 13:53:02
他に話題が全く流れないんだから、そりゃ煽りにも食いついてしまうわな
0851デフォルトの名無しさん2006/04/23(日) 14:05:40
>>848
日本語でOK
0852デフォルトの名無しさん2006/04/23(日) 15:10:21
だれかBoostを頼む
0853デフォルトの名無しさん2006/04/23(日) 15:12:23
>>851
日本語読解できる?
0854デフォルトの名無しさん2006/04/23(日) 15:16:03
とりあえずDが1.0になる頃にはgdcにも頑張ってもらって色んなプラットフォームでDが使えるようになることを望む・・・
0855デフォルトの名無しさん2006/04/23(日) 17:29:57
>>853
日本語記述できないの?
0856デフォルトの名無しさん2006/04/23(日) 17:50:06
>>855
スレタイ読める?
0857デフォルトの名無しさん2006/04/23(日) 17:56:46
なんでまだD言語なんてシェアウェア厨のオナニー言語にアインシュタインを超えてるの
0858デフォルトの名無しさん2006/04/23(日) 18:03:19
D言語 <- 車輪の再発明が大好きな、生産性のない人たちに大人気の言語
0859デフォルトの名無しさん2006/04/23(日) 18:11:20
なんでまだD言語なんてシェアウェア厨のオナニー言語にアインシュタインを超えて
欠陥ガベコレが車輪好きの生産性がない大人気なの
0860デフォルトの名無しさん2006/04/23(日) 18:36:10
エスパー翻訳キボンヌ
0861デフォルトの名無しさん2006/04/23(日) 18:46:25
つーか、Dはプログラマーのおもちゃだろ。現時点では。
0862デフォルトの名無しさん2006/04/23(日) 20:48:13
>>861
その通り。現時点ではDは言語デザインについて語り合ったり
hackするのが好きな人のみがいじるべきもの。

そこにスキルないくせに「ただ新しい物好き」や
他人に「俺はこんなのも知ってるんだぜ」と自慢したがる奴や、
現状を知らないで開発中のものに完成度を求める
ライブラリ厨やIDE厨が駆除してもしてもわいてくるからウザイ。
そんな奴らにはまだDは早い。
大人しく枯れてきているC/C++,Javaを触っててDに近づくな。

Dはまだまだ言語デザインが変わることもありうる不安定なものだから
ライブラリの充実はまだまだ先の話しだし、
自作したアプリがコンパイラのバージョンが上がったとたんにSyntax errorになることなんて
日常茶飯事なんだから。
0863デフォルトの名無しさん2006/04/23(日) 20:50:16
>852
Boost::spiritが無理くさいのははなはだ残念だ
MPLも大半アウトっぽいな
0864デフォルトの名無しさん2006/04/23(日) 20:53:50
Boostあったらいいなあとは思うが,Boostの何が必要なんだろ
0865デフォルトの名無しさん2006/04/23(日) 20:56:27
アレゲさが。
0866デフォルトの名無しさん2006/04/23(日) 21:32:00
>>862
ワロタ
>言語デザインについて語り合ったりhackする
なら、今だったら普通Haskell選ぶだろ
中途半端なDで何を語るの?
0867デフォルトの名無しさん2006/04/23(日) 21:35:04
Dのクラスにつける属性で、dynamicっての考えてみた。

これつけると静的束縛から動的束縛になるってのはどう?
0868デフォルトの名無しさん2006/04/23(日) 21:42:05
そのクラスをどう使うかという問題が出てくるんじゃないかな。
0869デフォルトの名無しさん2006/04/23(日) 21:42:11
>867
そういったことは本家に投げればいいんでないかい?
0870デフォルトの名無しさん2006/04/23(日) 21:43:05
それより関数の引数と戻り値が1対1を表すfixedが欲しい。
fixed char[] test(char[] a){
  char[] r;
  foreach(char c;a){
    r~=a~",";
  }
  return r;
}

pragma(msg, test("test"));
0871デフォルトの名無しさん2006/04/23(日) 21:45:50
>>868
メソッドが存在してなくても呼び出しが可能にしたいときとか
0872デフォルトの名無しさん2006/04/23(日) 21:46:52
stringは未来永劫追加されないの?
0873デフォルトの名無しさん2006/04/23(日) 21:48:45
>>872
自分で定義すればおk
0874デフォルトの名無しさん2006/04/23(日) 21:51:08
opAssignの対応予定無しってどういうこと?
0875デフォルトの名無しさん2006/04/23(日) 22:07:04
>>866
なら、なんで君はDのスレにいるの?
君はDに何を求めてこのスレに寄生してるの?
そもそもDとHaskellの目指す方向性が全然違うから比べるのがおかしくね?
そこらへんを理解できてない時点で君にはまだはやんじゃね?
多分君が求めているものはDにはないし君にはまだ早すぎるからからさっさとこのスレから消えれば?
0876デフォルトの名無しさん2006/04/23(日) 22:11:07
fixedを追加すれば自動キャッシュ化もできる?
fixed char[] test(char[] a){
  char[] r;
  foreach(char c;a){
    r~=a~",";
  }
  return r;
}
↓
char[] test(char[] a){
  char[][char[]] r;
  if(!(a in r)){
    foreach(char c;a){
      r[a]~=a~",";
    }
  }
  return r[a];
}
そういえば!inって無いんだっけか…
0877デフォルトの名無しさん2006/04/23(日) 22:15:57
>>870
template test(char[]a,int i=0){
    static if (i == a.length)
        const char[]test = "";
    else
        const char[]test = a~","~ .test!(a,i+1) ;
}

pragma(msg, test!("test")); 
0878デフォルトの名無しさん2006/04/23(日) 22:19:27
 ____________
 |    危 険 !.    |
 |               .|
 ! 釣り針の投げ合い中 !
  ̄ ̄ ̄ ̄ ̄TT ̄ ̄ ̄ ̄ ̄ ̄
0879デフォルトの名無しさん2006/04/23(日) 22:22:30
>>875
Dは実用性重視で設計されてんだから、Dで言語デザインを語ろうというのは
ちょっと違うような気がする。
0880デフォルトの名無しさん2006/04/23(日) 22:30:59
実用性重視で、ライブラリやIDEが整ってなくて全然実用にならないなら
存在自体無意味じゃね
ってことで
C++ >>>>>>> (越えられない壁)>>>>>>>>>>>> D

0881デフォルトの名無しさん2006/04/23(日) 22:38:47
>>875
ひがみっぽいなー。
Haskellは一例。
中途半端なDで言語デザインについて何を語るのか興味があっただけ。
で、何?
何を語ってくれるの?
0882デフォルトの名無しさん2006/04/23(日) 22:40:50
>>879-880
862と875に書いてあるけどそう思うんだったらなんでこのスレにいるんだろ
0883デフォルトの名無しさん2006/04/23(日) 22:43:44
>>881 一例といいつつ全然適切な例でない件w
0884デフォルトの名無しさん2006/04/23(日) 22:49:21
 /l、
(゚、 。 7 ハァ? Haskellが一例? 全然例になっとらんぞヴォケナス
 l、 ~ヽ
 じしf_, )ノ
0885デフォルトの名無しさん2006/04/23(日) 22:49:54
このスレは、どうでもいいことに限ってよく伸びるなw
0886デフォルトの名無しさん2006/04/23(日) 22:53:05
春から夏にかけては害虫が多いからしょうがないw
0887デフォルトの名無しさん2006/04/23(日) 23:02:23
>>880
かなり勘違いしてるようだけど実用性重視ってのはDの目指す方向性であって現時点で達成しているものではないぞ。

即仕事に使える、アプリ/ミドルウェアを開発するってなら既存の枯れているもの使いなさい。
地雷を踏んでも楽しめてディスカッションできてDに興味ある人だけがいじる方がいい。
862にはそのように書かれてるけど880には読解できなかったみたいだなw
0888デフォルトの名無しさん2006/04/23(日) 23:08:28
>>実用性重視ってのはDの目指す方向性であって現時点で達成しているものではない
これをダメダメと言う
0889デフォルトの名無しさん2006/04/23(日) 23:11:48
>>885
おお、伸びてるなーと思ったさ、思ったともorz
0890デフォルトの名無しさん2006/04/23(日) 23:20:22
>>879
なして?アカデミックに新しいパラダイムシフトがない言語については言語デザインについて語ることはないってこと?

実用性を向上させるために
つぎはぎで仕様を拡張された部分を可読性をあげたり一貫性をもたせるように変更したり
言語レベルでサポートされてなかったけどよく使われる機能を取り入れたり
逆にバグを埋め込みやすいバッドノウハウを代換えを用意して削ったり
C/C++を土台にいろいろあると思うぞ
0891デフォルトの名無しさん2006/04/23(日) 23:26:22
>>887
とりあえず888はあきらめとけ
どんなに噛み砕いて優しく解釈してあげても
奴の頭には1行分のバッファサイズしかアロケートできないから
理解できないんだ。 かわいそうな人間だからながしてやれw
0892デフォルトの名無しさん2006/04/23(日) 23:28:02
鶏よりバッファサイズ小さそうだなw
0893デフォルトの名無しさん2006/04/23(日) 23:33:52
害虫に頼らないとスレ一つ伸びない状況が悲しい
0894デフォルトの名無しさん2006/04/23(日) 23:37:49
レスが自演だらけなのも悲しい
08958182006/04/23(日) 23:39:07
活気のために釣ってみたが予想以上の結果ですた(´・ω・`)
0896デフォルトの名無しさん2006/04/24(月) 00:25:15
こんな活気はいらん
あとID非表示板で数字コテなど無意味
08978182006/04/24(月) 00:44:38
>>895
だまれ偽者、俺が本物の818だ
08988972006/04/24(月) 00:54:36
今まで煽ってすまん
頭にひまわり咲いてたんだ
ところで連想配列の性的初期化ってどうやるんだ?
0899デフォルトの名無しさん2006/04/24(月) 01:47:57
性的な意味での配列の初期化
0900デフォルトの名無しさん2006/04/24(月) 01:49:56
質問です。
long l=1L;
printf("%02d,%lld\n", l, l.max);
このプログラムの挙動が
01,-4294967296
このようになるのですがどうしてですか。書式に問題がありですか?
09019002006/04/24(月) 01:56:54
自己解決です。どうやら書式に問題があったのですね。
最初の%dで32bitで解釈されたから次の%lldの挙動がおかしくなったみたいです。
何でだか分からんけどしょせんCのprintfってことですね。
0902デフォルトの名無しさん2006/04/24(月) 02:04:00
使い方間違って挙動おかしくしといて
所詮Cとはこれいかに
0903デフォルトの名無しさんNGNG
まあ確かにwritefを使えば型情報つきだし、
そういう意味ではprintfは所詮C、だよな。

>>901
Cの可変長引数には型情報を渡すメカニズムが無いから、
引数として何がどんなサイズのデータがスタックに詰まれたか
printfはフォーマット文字列でしか知る術が無いわけ。
で、そのフォーマット文字列を間違えて8byte積んであるところを
4byteしか取り出さなかったもんだから、後の引数がずれてしまいこうなる。

そして、ややスレ違いな説明スマソ
0904デフォルトの名無しさん2006/04/24(月) 07:04:01
なんでまだD言語なんてシェアウェア厨のオナニー言語にアインシュタインを超えてるの

ワタシニッポンゴウマイヨ
09059042006/04/24(月) 08:20:46
こんなことしてないで早く職探さなきゃいけないのに俺って最低の屑人間だ
0906デフォルトの名無しさん2006/04/24(月) 09:26:17
dwt新しくなってるからコンパイルしようとしたら、
'C:\Tool\D\dmd\bin\lib' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
……とか出て原因がよく分からん。

make-dwt-lib.batもmake-dwtextra-lib.batも同じエラー出る。
dmdをCドライブ直下に入れ直したりbin\libフォルダを作ったりしてみたけど駄目だった。
バージョンは0.154
何がマズいんだろうか。出来た奴居たら教えて欲しい。
0907デフォルトの名無しさん2006/04/24(月) 13:03:58
C:\Tool\D\dmd\bin\lib.exe
が無いって言われてるのになぜにフォルダ?

0908デフォルトの名無しさん2006/04/24(月) 13:27:05
>>906
特に問題なかった
build, libのパスが通ってないかsc.ini書き換えてないか
ぐらいしか原因が思いつかん
0909デフォルトの名無しさん2006/04/24(月) 13:56:01
>>907-908
俺馬鹿だーーーーー!
忘れて。ほんと忘れて。
>>907見て五秒くらい固まったよ。
0910デフォルトの名無しさん2006/04/24(月) 13:59:53
ああ、無事通った。サンクス。
0911デフォルトの名無しさん2006/04/24(月) 15:03:08
プログラミング言語 D と DWT
のhtml help必要だと思う?
0912デフォルトの名無しさん2006/04/24(月) 16:17:20
必要ないと思う
0913デフォルトの名無しさん2006/04/24(月) 19:10:01
まだphobosが把握できてなくて
ネットがない環境では使えないから
ポケットリファレンス的な印刷物が欲しいなあ.
0914デフォルトの名無しさん2006/04/24(月) 20:42:08
和訳をダウソロードして保存すれば充分じゃまいか
0915デフォルトの名無しさん2006/04/24(月) 21:03:30
DMDのパッケージに、ドキュメントも同梱されていることを知らないの?
0916デフォルトの名無しさん2006/04/24(月) 21:22:22
和訳の一括ダウンロードってあったんだ orz

ローカルで開くとstyle.cssへのリンクが切れてたから
/phobosと/techtipsにもコピーしてやって
整形されたものが見られるようになりました.

どうもです.
0917デフォルトの名無しさん2006/04/25(火) 19:19:38
こういう椰子がスレの質を下げるんだよな
09189172006/04/25(火) 20:04:34
特に俺みたいな包茎男がな
0919デフォルトの名無しさん2006/04/25(火) 22:04:44
↑偽者乙
0920デフォルトの名無しさん2006/04/25(火) 22:10:20
ID非表示板で本人だの偽者だの主張したって無意味
09219192006/04/25(火) 22:11:42
>>921
はあ?
お前頭大丈夫か?
0922デフォルトの名無しさん2006/04/25(火) 22:27:10
なんか頭おかしいのがいるね
粘着しても、君が望むものは何もありませんよ
さっさとこのスレから出て行ってくださいな
0923デフォルトの名無しさん2006/04/25(火) 22:38:12
突然の一人二役。釣れるには釣れるが
そもそもの住人数が少なすぎるD言語スレ。
0924デフォルトの名無しさん2006/04/25(火) 22:38:37
まったくだよな。
間抜けはほっといてDについて語るべ。

テンプレートで文字列リテラルをSJISに変換するようなの作れば
実行時での変換コストが無くなって(・∀・)イイ!!と思うんだがこの考えは浅はかかな?
0925デフォルトの名無しさん2006/04/25(火) 22:53:29
923-924
突然の一人二役。釣れるには釣れるが
そもそもの住人数が少なすぎるD言語スレ。
09269252006/04/25(火) 22:58:20
なんていってる場合じゃかった。
そろそろ包茎を水虫を治療しないと。
09279252006/04/25(火) 23:00:40
>>926
日本語おかしいぞ。
m9(^Д^)プギャー
さっきから俺に粘着しんてじゃーよ
0928デフォルトの名無しさん2006/04/25(火) 23:07:41
>>924
再帰処理だけで変換するのは大変そう
というかstatic else ifがないと無理か
09299282006/04/25(火) 23:13:36
>>924
Unicodeがあるから俺にはいらねー
09309282006/04/25(火) 23:15:49
>>929
死ね
0931デフォルトの名無しさん2006/04/25(火) 23:15:51
>>924
テーブル必須だからなあ。
0932デフォルトの名無しさん2006/04/25(火) 23:32:47
>>928
else static if が使えた。
(今は別の方法を使ってるけど)

目標はUTF8->SJISなんだが、UTF8の日本語は1文字3バイト使うからテーブル使うのは却下。
UNICODE->SJISの変換テーブルは実現できて文字リテラルにはもう対応した。

ttp://www.kmonos.net/alang/d/templates-revisited.html
を参考にしてシコシコ頑張ってる。
0933デフォルトの名無しさん2006/04/25(火) 23:33:15
なんでまだD言語なんてシェアウェア厨のオナニー言語にアインシュタインを超えてるの

ワタシニッポンゴウマイヨ
0934デフォルトの名無しさん2006/04/25(火) 23:44:30
しつけーよw
09359282006/04/25(火) 23:45:07
>>932
>else static if が使えた。
ああ、そうか、そうだよな。

というか「テンプレートで構文解析」なんて記事あったんだね。
知らなかった。勉強せねば。
0936デフォルトの名無しさん2006/04/26(水) 21:59:29
D言語でカーネルって作れますか?
GCが完全に抑止できて、glibに依存しないように出来るなら可能なきがするんで興味がわいています。
0937デフォルトの名無しさん2006/04/26(水) 23:14:19
linux dmd のバグ?

for (int i = 0; i < 20; ++i) writef("%X ", i);

[結果]0 1 2 3 4 5 6 7 8 9 : ; < = > ? 10 11 12 13

: ; < = > ? って何?
09389372006/04/26(水) 23:29:06
win版の方は正常でした。
これはバグか。
変なとこで悩まされた。
09399372006/04/26(水) 23:32:45
報告しにいったら既に報告されてました。
0940デフォルトの名無しさん2006/04/26(水) 23:45:48
win版なのに>>937と同じ出力になるんだが。
最新のdmdとdmcを落として上書きしなおしてもダメポ
0941デフォルトの名無しさん2006/04/26(水) 23:55:30
アスキーコードをそのまま吐いてるのか?
0942デフォルトの名無しさん2006/04/26(水) 23:55:39
=>:=;>>?とか:;:=<:?>とかになるわけか。
イカみたいだ。
09439372006/04/27(木) 00:14:03
うちのwin版は古いのだったかもしれません。
それは正常でした。
0944デフォルトの名無しさん2006/04/27(木) 03:52:45
またアサーションに引っかかっるようなコードを書いてしまった

//再現コード
void main()
{ char[] c = cast (char[])"" ~ "abcdf"w; }

//とか↓とか
//void main()
//{ char[] c = cast (char[])"" ~ "abcdf"d; }

出力:
Assertion failure: 'sz == es2->sz' on line 399 in file 'optimize.c'
0945デフォルトの名無しさん2006/04/27(木) 13:24:01
>>936
・作れる
・Cでできることは全てできる
・作りかけてる人もいる http://dkernel.kuehne.cn/PICOS2/
・GC自体Dで書かれたライブラリに過ぎないので制御したければいくらでも可能
0946デフォルトの名無しさん2006/04/27(木) 20:22:19
で、実績はその作りかけのみ…?
0947デフォルトの名無しさん2006/04/27(木) 22:04:04
まただ。

//再現コード
static this(){}
static this(){}
void main(){}

はコンパイラに叱られないのか。
コメントアウトの漏れでもう一つstatic thisが存在することに気づかずに
何でexeファイルの実行に失敗するのか悩んだ。
0948デフォルトの名無しさん2006/04/27(木) 22:44:04
んでもって今度は
Assertion failure: '0' on line 725 in file 'expression.c'
に引っかかった。
今回はスリムな再現コードを作れなくて原因はサパーリだが。

コンパイラがまだまだ完成には程遠いのか漏れのやってることが奇抜なのか。
0949デフォルトの名無しさん2006/04/28(金) 18:44:23
0.150
0950デフォルトの名無しさん2006/04/28(金) 18:45:46
0.15......0?
0951デフォルトの名無しさん2006/04/28(金) 18:45:57
ミスった
0.155
0952デフォルトの名無しさん2006/04/29(土) 14:11:26

0.156 な件
0953デフォルトの名無しさん2006/04/29(土) 14:52:44
0.155にデバッグ出力が残ってたそうで
0954デフォルトの名無しさん2006/04/29(土) 14:54:34
Walterさんは相変わらずうっかりさんだなw
0955デフォルトの名無しさん2006/04/29(土) 15:21:12
D 0.155(0.156)

New/Changed Features

* Added Microsoft windbg.exe Win32 debugger.
* Removed std.recls, instead use http://synesis.com.au/software/recls/.
* Incorporated Dave Fladebo's changes:
o std.regexp speedups.
o Fixed a bug in pauseHandler whereby the stackTop was being overwritten by subsequently
resumed threads causing a crash in gcx.mark(). (The fix was to just move sem_post(&flagSuspend);
to right before the sigsuspend loop).
o Moved linux semaphore declarations to std/c/linux/linux.d
o Changed void wait(uint milliseconds){} to be a timed wait function instead of just a stub for void wait() {}
on linux (it is comparable to the Win32 Thread method now). This is implemented with pthread mutexes
and conditions and the extra overhead to initialize phobos Threads does not result in slower executables
(Threads, GC and startup time are not effected).
o Changed the allThreads static array size to the same as Windows. This in conjunction w/ the stack size
change will allow the creation of more than 100 threads on linux for better compatibility w/ the Win32 version.
o Added optional stack size parameter to constructors. Since the stackBottom is static when the threads
are created and the stackTop is dynamic based on the stack pointer (or context for Win32), allowing the threads
to be created with a non-default stack size shouldn't interfere with the GC. This adds little overhead to either
the Win32 or Linux Thread implementations.
0956デフォルトの名無しさん2006/04/29(土) 15:23:54
で、結局D用のGUIライブラリはどれが標準なの?
0957デフォルトの名無しさん2006/04/29(土) 15:35:58
>>956
ない。
まだコンパイラも安定してない状況で求めるのが以下略
0958デフォルトの名無しさん2006/04/29(土) 16:36:44
DからCのiconvを使ってみたんですけどうまく動作しません。
どこがいけないんでしょう?

import std.string;

typedef void* iconv_t;

extern (C) iconv_t iconv_open(char* tocode, char* fromcode);

extern (C) size_t iconv(iconv_t cd, char** inbuf, size_t* inbytesleft, char** outbuf, size_t* outbytesleft);

extern (C) int iconv_close(iconv_t cd);

void main()
{
    char[] str = "テスト文字列";

    char* src = toStringz(str);
    size_t srcSize = 19;

    char* dst = new char[1024];
    size_t dstSize = 1024;
    for (size_t i = 0; i < dstSize; ++i) dst[i] = 0;

    iconv_t ic = iconv_open("EUC-JP", "UTF-8");
    iconv(ic, &src, &srcSize, &dst, &dstSize);
    iconv_close(ic);

    printf("%s\n", dst);
}
0959デフォルトの名無しさん2006/04/29(土) 19:56:36
どううまく動作しないのか症状が書かれてないから適切な回答ができない。
環境もわからない。
09609582006/04/29(土) 20:17:17
環境:linux
症状:dstが全く書き換えられていない。

どうもポインタのポインタの内容がCの関数側でおかしくなっているみたいですね。
これから詳しく調べてみます。
0961デフォルトの名無しさん2006/04/29(土) 20:37:30
ここは一つ、C、あるいはC++で記述してはどうか。
0962デフォルトの名無しさん2006/04/29(土) 20:39:45
>>958
iconv()の第4引数は変更されるらしいから、呼び出し前に退避させておかないといけないはず。

    iconv_t ic = iconv_open("EUC-JP", "UTF-8");
    iconv(ic, &src, &srcSize, &dst, &dstSize);
    iconv_close(ic);

    printf("%s\n", dst);

        ↓

    iconv_t ic = iconv_open("EUC-JP", "UTF-8");
    char* dst_buf = dst;
    iconv(ic, &src, &srcSize, &dst_buf, &dstSize);
    iconv_close(ic);

    printf("%s\n", dst);

こうだと思う。
09639582006/04/29(土) 21:02:57
>>962
あ、できました。ありがとうございます。
確かにCのサンプルコードもdstにあたるものを退避させてます。
0964デフォルトの名無しさん2006/04/29(土) 23:54:49
愛昆布
0965デフォルトの名無しさん2006/04/30(日) 14:46:26

http://www.dprogramming.com/~gregorr/gdc.php

The 'gdc-Ego' branch of GDC is a highly experimental branch of GDC with patches by Gregor Richards,
using the the DMD 0.156 frontend. Furthermore, it has fixes to several bugs that were in GDC 0.17 which
caused inconsistencies between DMD and GDC. It's experimental and has known bugs, but should allow
you to compile D software that is only compatible with the latest DMD.

http://www.dprogramming.com/~gregorr/GDC-d-Ego-0.156.1.tar.bz2
0966デフォルトの名無しさん2006/04/30(日) 15:24:07
GDCのgdc-EgoブランチはGregor Richardsのパッチを入れたGDCのとても実験的なブランチです。
DMD 0.156のフロントエンドを利用しています。
さらに、GDC0.17にあったDMDとGDCの間の矛盾を引き起こしていたいくつかのバグを修正しています。
実験的で存知のバグも存在していますが、最新のDMDとしか互換性がないD言語で書かれたソフトウェアをコンパイルできるべきです。
0967デフォルトの名無しさん2006/04/30(日) 19:47:32
The gdc-Ego branch of GDC is a very experimental branch of GDC that puts the patch of Gregor Richards.
The front end of DMD 0.156 is used.
In addition, the bug of shoes that want to cause the contradiction between DMD and GDC that exists in GDC0.17 is corrected.
The software written in only latest DMD and an incompatible D language should be able to be compiled though the bug of knowing exists experimentally, too.
0968デフォルトの名無しさん2006/04/30(日) 22:59:37
char[]ってchar*と違ってバイナリに何か仕込まれるんですか?
0969デフォルトの名無しさん2006/04/30(日) 23:12:57
Egoブランチをビルドしてみようとしたけどinteger_tで突っかかる。

Mac OS X 10.3.9

/usr/include/mach/ppc/vm_types.h:86: error: conflicting types for `typedef int integer_t'
../../gcc/d/dmd/mars.h:146: error: previous declaration as `typedef long long unsigned int integer_t'
0970デフォルトの名無しさん2006/04/30(日) 23:18:46
>>969

> Ran into some kind of error with "gcc/d/dmd/expression.c":
> {standard input}:26:FATAL:Symbol __ZN10IntegerExp1tE already defined.

Looks like it was a botched macro integration from upstream...

Will bugreport the "mars.h" header file from DMD to Bugzilla,
but here's the trivial patch needed for the gdc-Ego snapshot:

--- gcc/d/dmd/mars.h.orig Sat Apr 29 04:56:03 2006
+++ gcc/d/dmd/mars.h Sun Apr 30 00:45:13 2006
@@ -131,7 +131,6 @@

#ifdef __DMC__
typedef _Complex long double complex_t;
-#elif IN_GCC
#else
#ifndef IN_GCC
#include "complex_t.h"

It wasn't defining the "integer_t" type properly on __APPLE__
(integer_t is a system type, so it uses dmd_integer_t instead)

--anders

かな?
0971デフォルトの名無しさん2006/04/30(日) 23:36:51
>>970
それだ。コンパイルは通った
0972デフォルトの名無しさん2006/04/30(日) 23:48:54
>>966
直接関係ないのだが、DMD 0.156 ってもうでてたっけ?

>>968
char[]だと、ポインタだけじゃなくて配列の長さも管理されてる。
(なので32bitマシンだとchar[]は大抵8Byte)
0973デフォルトの名無しさん2006/05/01(月) 00:02:37
ちょっと、キョン!当然あたしたちのCD予約したわよね?
――えっ、まだしてないの?あんた、SOS団の一員としての自覚あるの?
――何、「曲のほうは?」って?それなら心配いらないわ!
なんったって、団長のあたしが保証するんだから間違いないわ!
一度聴いたら、ぜ〜〜ったい踊りたくなるんだから!
涼宮ハルヒの憂鬱ED「ハレ晴レユカイ」5月10日発売!
絶対買いなさい!!
0974デフォルトの名無しさん2006/05/01(月) 00:14:52
>>972

>>952-955
0975デフォルトの名無しさん2006/05/01(月) 01:02:38
どうでもいいがdelegateも8byteくらいの予感
0976デフォルトの名無しさん2006/05/01(月) 06:34:37
スタックと関数のポインタだから、そうなるだろうね。

実際は、当然ながら実装依存なわけだが。
0977デフォルトの名無しさん2006/05/01(月) 18:51:07
引数が何であっても入れることのできるdelegateってないかな?
0978デフォルトの名無しさん2006/05/01(月) 19:00:58
>977
呼び出しの際の扱いに苦労しないか、それ?
0979デフォルトの名無しさん2006/05/01(月) 19:08:33
>>978
適当にスタックにプッシュするだけでオーケーだよお兄さん。
0980デフォルトの名無しさん2006/05/01(月) 20:06:35
utf8→sjis変換テンプレートはすぐ出来たけどその後がダメポ。
変換テーブルをstatic ifにしようが巨大文字列リテラルの一部参照にしようが
static ifを上位ビットからの分木構造にしようが使い物にならない。
多分コンパイラの字句解析が時間を食ってるんだろう。
分木で別のモジュールをimportするようなものなら字句解析時間をごっそり削れると思うけど
漏れはモウダメポなんであとはこのスレの住人にまかせる。


変換テーブルを生成するために作ったもの
ttp://www.uploda.org/uporg378043.zip

変換テンプレートとstatic if変換テーブル
ttp://www.uploda.org/uporg378045.zip
(utf8形式のソースでコンパイルして
windowsのchcp932のコンソールで実行した環境しか試してないが)

テンプレート名もシンボル名も自由に変えてOK。
色々変更加えてOK。
0981デフォルトの名無しさん2006/05/01(月) 20:45:11
今、DでDOM実装してるんだがつくづくDらしくねえ・・・
0982デフォルトの名無しさん2006/05/01(月) 20:47:10
ttp://d.hatena.ne.jp/rinset/20060328
ttp://www.kmonos.net/alang/d/declaration.html

暗黙の型推論とRAIIのためにautoキーワードが使われているわけだけど,
何か両立させたくない理由あるのかな.
何もないなら普通に別のキーワードを使って可能にして欲しいんだけど.

type a = new C(); // 暗黙の型推論
auto C b = new C(); // RAII
auto type c = new C(); // 暗黙の型推論とRAII

こんな感じにすればいいだけなんじゃないのかと.
0983デフォルトの名無しさん2006/05/01(月) 20:50:38
>>559-570
なんか既出だったみたいですね
次スレ近づけてすまん
0984デフォルトの名無しさん2006/05/02(火) 07:34:39
>>957
dwtじゃないの?
0985デフォルトの名無しさん2006/05/02(火) 13:01:49
>>984
そういう話が出てたのは知ってるが、決定なの?
あ、俺は>>957じゃないが。
0986デフォルトの名無しさん2006/05/02(火) 13:20:43
デファクトスタンダード≠標準
0987デフォルトの名無しさん2006/05/02(火) 14:55:15
I believe that DWT is the best chance for D to get a comprehensive,
portable, top quality GUI given our limited resources.
だそうです。

http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D/32633
0988デフォルトの名無しさん2006/05/02(火) 14:59:44
SWTがイマイチだから試してないけどDWTもなあって感じだな。
特にTable廻りとか。
0989デフォルトの名無しさん2006/05/02(火) 18:49:04
dwtいいとおもうよ。dflに比べたらだけど。
Linux版ほしい。
>>988
そんなあなたのおすすめはなんでしょうか。
0990デフォルトの名無しさん2006/05/03(水) 20:39:44
新スレたてた。
http://pc8.2ch.net/test/read.cgi/tech/1146656260/l50
0991デフォルトの名無しさん2006/05/05(金) 01:19:12
>>985
ニュースグループで「とりあえず今はdwtがよさそうだし、もっと良いのができたら後から変更すればいい」みたいなことを
walterタソが言ってたような気がする。
digitalmars.D.dwtもあるし。
0992デフォルトの名無しさん2006/05/06(土) 14:53:38
ぬるぽ
0993デフォルトの名無しさん2006/05/06(土) 16:47:54
>>992
ガッ
>>990
おつりんこ
0994デフォルトの名無しさん2006/05/06(土) 18:18:20
次スレがあるんだから
もう、埋めようぜ
0995デフォルトの名無しさん2006/05/06(土) 18:18:58
http://pc8.2ch.net/test/read.cgi/tech/1146656260/
0996デフォルトの名無しさん2006/05/06(土) 18:19:59
http://pc8.2ch.net/test/read.cgi/tech/1146656260/
0997デフォルトの名無しさん2006/05/06(土) 18:20:34
http://pc8.2ch.net/test/read.cgi/tech/1146656260/
0998デフォルトの名無しさん2006/05/06(土) 18:21:05
http://pc8.2ch.net/test/read.cgi/tech/1146656260/
0999デフォルトの名無しさん2006/05/06(土) 18:24:47
1000
1000デフォルトの名無しさん2006/05/06(土) 18:26:13
1000
http://pc8.2ch.net/test/read.cgi/tech/1146656260/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。