5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

D言語 Part3

1 :デフォルトの名無しさん:04/03/12 14:18
C, C++, Java, C# などのいいところを取って、さらにいろいろ付け足したような新しい言語。

・実行形式はネイティブコード
・言語仕様のコンパクトさよりも利便性を追求
・Windows, Linux用のコンパイラがある
・制御可能なガーベッジコレクション
・便利な動的配列
・契約による設計
・標準ライブラリPhobos
・開発環境DIDE

・今のところv1.0未満につき、未実装・バグはまだだいぶある。
・Win32APIを利用できるので、Win32アプリは作成可能。

DigitalMars D言語公式
http://www.digitalmars.com/d/index.html

リファレンス(JP)
http://www.kmonos.net/alang/d/


過去スレと関連サイトは>>2-10

2 :デフォルトの名無しさん:04/03/12 14:20
過去スレ

D言語 (304)
http://f3.aaacafe.ne.jp/~null/cache/1073913528.html

D言語ドラフト一応読んだよ (Part 1)
http://pc2.2ch.net/tech/kako/1003/10036/1003674814.html

【良いとこ取り】D言語スレ【実用重視】(Part 2)
http://pc2.2ch.net/test/read.cgi/tech/1070169122/

関連スレ

D言語 vs Java
http://pc2.2ch.net/test/read.cgi/tech/1068829475/

3 :デフォルトの名無しさん:04/03/12 14:21
関連サイト

D言語研究 - Wiki
http://cgi.f17.aaacafe.ne.jp/~labamba/index.php

DedicateD - ネットワークなどの周辺ライブラリ
http://int19h.tamb.ru/

やねうらお - ゲーム用ライブラリ作成プロジェクト
http://www.sun-inet.or.jp/~yaneurao/dlang/

D Memo - それぞれの言語仕様の説明とサンプルがある。
http://www.kmonos.net/alang/etc/d.php

4 :デフォルトの名無しさん:04/03/12 14:31
Delphi!

5 :デフォルトの名無しさん:04/03/12 14:48
Delphi言語のことでしょ?

6 :デフォルトの名無しさん:04/03/12 14:58
これがリリースされたとして、
どういう分野で活躍が予想されるでしょう?
ご意見をおきかせください。

7 :デフォルトの名無しさん:04/03/12 15:10
>>6
過去スレ嫁

8 :1:04/03/12 15:57
今更ながら、前スレを>>1に書いておいた方が分かりやすかった鴨。
次スレからよろしこ。

前スレ
【良いとこ取り】D言語スレ【実用重視】(Part 2)
http://pc2.2ch.net/test/read.cgi/tech/1070169122/

9 :デフォルトの名無しさん:04/03/12 17:58
    
  /WW  
 (.,○∀・)  < ……ズヴァリ!
 く[ ⊂]      ここが新スレですな?
┏━━━━┓
┃      ┃


10 :デフォルトの名無しさん:04/03/12 18:54
>>7
ていうか>>1嫁と言った方が早いのではw

11 :デフォルトの名無しさん:04/03/12 21:42
>>1


12 :デフォルトの名無しさん:04/03/12 21:55
Delphi後継としてVCLを書き直したBorland Dが出たらなぁ(夢想)

13 :デフォルトの名無しさん:04/03/12 22:07
>>12
その前に委譲入れてよ

14 :デフォルトの名無しさん:04/03/13 12:33
Mixin! Minxin! Mixin!

15 :デフォルトの名無しさん:04/03/13 13:00
Minxin!!

16 :デフォルトの名無しさん:04/03/13 16:28
Mixinより委譲のほうが同じこと出来てより柔軟だぞー、と、物議をかもしてみるテスト

17 :デフォルトの名無しさん:04/03/13 16:59
>>16
委譲の特徴・メリットを熱く語って下さいおながいします。

18 :デフォルトの名無しさん:04/03/13 17:04
>>16
委譲をMixinで実装することも出来そうな気がするんだけど、どうよ?

19 :デフォルトの名無しさん:04/03/13 17:24
まず、委譲は、委譲される側が、そのことを考えて作られてなくてもOKってことだな。
Mixinだと、Rubyならクラスじゃなくモジュールにしないといけないし、C++だと菱形継承に気をつけないといけない。
それから、識別子が衝突しない、動的に移譲先を変えられる、集約が実現できる、など。
言語的にサポートされてるのがDelphiとUvaしか無いってのはマイナスだが、これは自分が他に知らないだけかも。

…こんなもんでいいか?
18がmixinの利点を熱く語ってくれることを期待

20 :デフォルトの名無しさん:04/03/14 00:01
>>http://pc2.2ch.net/test/read.cgi/tech/1070169122/992-993
バカとはなんだよう!
いいじゃねーか前置配列要素アクセス演算子。

だいたい今の宣言とアクセスの表記不一致の方が
よっぽど分かりにくいわ。

[y]*[x]int array;
(*array[y])[x] = ...

なんてアクセス、正気の沙汰とは思えんね。

int[x]*[y] array;
[x]*[y]array = ...

とどっちがスマートだよ。 えぇ?

21 :デフォルトの名無しさん:04/03/14 02:20
両方やだ。

22 :デフォルトの名無しさん:04/03/14 06:52
使うときにも、ポインタを後のほうに書くようにすりゃいいんだよ。
*だとまぎらわしいから^*にして
[y]^*[x]int array;
x = array[y]^*[x]

Cの設計者がこうすりゃよかったと後悔してたとか

23 :デフォルトの名無しさん:04/03/14 14:30
>>22
いっそのこと宣言を逆にしたら。
ついでに ^* も @ にしちゃえ。

 moge @int = a&;
 hoge [y]@[x]int;

 moge@ = hoge[y]@[x];


24 :デフォルトの名無しさん:04/03/14 16:14
>>22-23
> hoge [y]@[x]int;
> moge@ = hoge[y]@[x];

huga [x]@int;
huga[x]@ = hoge[y]@; //不正

最悪だろこれは。
Cの設計者は"Complex C"でも作ろうとしてたのか?
そんなCCやC++なんかより、やっぱりDですよこれからは。

25 :デフォルトの名無しさん:04/03/14 17:41
いや、>>23見易いと思うぞ。少なくとも素のC言語よりはずっといい。

@を^にして、変数名と型の間に":"入れたら、Pascalになってしまうのがアレだが

26 :デフォルトの名無しさん:04/03/14 18:04
//現状
int*[x] huga;
int[x]*[y] hoge;
*huga[x] = *hoge[y]; //不正

//後置
huga [x]@int;
hoge [y]@[x]int;
huga[x]@ = hoge[y]@; //不正

//前置
int*[x] huga;
int[x]*[y] hoge;
*[x]huga = *[y]hoge; //不正

同じ事だった。(´・ω・`)


27 :デフォルトの名無しさん:04/03/14 22:57
>>19
ありがとう
委譲が便利だと思っていたのを俺だけじゃなかったのね⊃д`;)

28 :デフォルトの名無しさん:04/03/14 23:10
C++に慣れた身としては違和感アリアリだが、宣言は後置の方がスマートだと思ったり。
例えば>>23を発展させればこんな風に書けるし。

 hoge : class( a ); // 宣言+オブジェクト生成(コンストラクタ実行)
 moge : [x]@class; // ポインタ配列の宣言
 moge[x] = a& // 配列アクセス(1)
 (moge + x) = b&; // 配列アクセス(2)
 moge[x] = new class( a ); // オブジェクトの動的生成
 moge[x]@ = a; // ポインタアクセス
 huga : [y]@[x]class( a ); // huga is array[y] of pointer to array[x] of class that initialize by a

あー、でも関数ポインタとかどう書くんだろ。

29 :デフォルトの名無しさん:04/03/15 00:17
上で語ってる委譲というのは
ttp://hp.vector.co.jp/authors/VA028375/delphi/delphipascal_oo_implements.html
このページで解説されてる委任のこと?

30 :デフォルトの名無しさん:04/03/15 00:20
前置に固執しているのは俺独りだな。

//前置
int[x]*[y] hoge;
[x]*[y]hoge = ...

//後置
hoge : [y]@[x]int;
hoge[y]@[x] = ...

要はひっくり返し方の話なんかね。

現状からの違和感から言うと、後置の方が自然だろうね。
もしかしたら、宣言の記述の仕方も直感にそぐうかも知れん。
オブジェクト指向的だからね。

31 :デフォルトの名無しさん:04/03/15 19:00
DでRichEditコントロール使ったことある人いますか?
IME変換中の波線、下線が変換確定後も消えません。
Cで同様のコードを書いてもこれは再現しないし、どうしたらいいのか
ほとほと困っています。

32 :デフォルトの名無しさん:04/03/15 21:31
前スレより落ちてちゃイクナイage

33 :デフォルトの名無しさん:04/03/15 22:02
>>31
ソース見せてくれたら考えなくもない

34 :31:04/03/15 23:12
http://up.isp.2ch.net/up/afab2563f7b1.zip

ソースと一応バイナリーもつけました。
ソースの一部はどこかのサンプルから一部流用しています。

35 :31:04/03/15 23:22
このアップローだめちゃくちゃ反応鈍いですね。すみません(汗

36 :デフォルトの名無しさん:04/03/16 02:45
>>31
原因はよくわからなかった

日本語入力後にCHARFORMAT2のdwEffectsとbUnderlineTypeがなぜか書き換えられるようなので
サブクラス化して阻止すれば回避できそう

37 :デフォルトの名無しさん:04/03/16 05:23
>>31
自分の発言を引用するのもアレだがどうぞ。
前に枠がツカネーって事で調べてみたんだが、これにも関係してるっぽい。
Win2kではこれで直った。


D言語ドラフト一応読んだよ
http://pc2.2ch.net/test/read.cgi/tech/1003674814/

676 名前: 671 投稿日: 03/10/13 02:32

原因がわかった。
とりあえずここを読んでくれ。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/win9x/verdiff_2awj.asp

んで、気になって調べてみたところ、DMDが吐くEXEのPE Optional Headerの
MajorOperatingSystemVersionが1.0、
Major/MinorSubsystemVersionが3.Aになってた。
バージョンが4以上だとタイトルバー持ってれば勝手に
WS_EX_WINDOWEDGEスタイルを付けるらしいんで
そこを両方とも4.0に変えてみたらちゃんと枠がつきました。

まぁぶっちゃけ、EXEファイルのA0の01を04、A8-AAの03 00 0Aを 04 00 00に変えれば枠が付く。
もしかしたら漏れの使ってるDMDのバージョンが古いだけかもしんね。スマソ。

38 :31:04/03/16 22:40
>>36-37
どうもありがとやんした。上げてもらったURLも参考になりました。
とりあえず解決です。

39 :デフォルトの名無しさん:04/03/21 01:00
D言語ブームはやっぱり終わったの?

40 :デフォルトの名無しさん:04/03/21 01:26
もうちっとだけ続くんじゃ

41 :デフォルトの名無しさん:04/03/21 02:38
むしろいつブームになんてなってたのかと

42 :デフォルトの名無しさん:04/03/21 04:06
だってなぁ。
追加して欲しい機能が追加されるのがいつになるか分からん状態の上、
コンパイラのバグが不安だし、仕様もころころ変わる状況だし...。
とりあえず欲しい機能の提案はし切ったから、
あとは完成までひたすら待つしかないじゃん。

43 :デフォルトの名無しさん:04/03/22 01:01
やることないならライブラリの移植でもしてろバカ

44 :デフォルトの名無しさん:04/03/22 01:20
ブームって、この板ローカルだろ?

45 :デフォルトの名無しさん:04/03/22 01:27
仕様がコロコロ変わる言語のライブラリ作ってもなぁ。

46 :デフォルトの名無しさん:04/03/22 17:26
>>42
いつか Microsoft が C# にパク・・・
いや、取り入れてくれるさ。

47 :デフォルトの名無しさん:04/03/22 17:28
D にあって、C#(2.0) に無いものって何があったっけ?

48 :デフォルトの名無しさん:04/03/22 17:45
センスの悪さ

49 :デフォルトの名無しさん:04/03/22 17:47
契約

50 :デフォルトの名無しさん:04/03/22 19:42
debugとかversion とかあるんかい、C#は

51 :デフォルトの名無しさん:04/03/22 20:11
>>50 そのあたりは、#ifdef でどうにでもなるっしょ。

52 :デフォルトの名無しさん:04/03/22 21:23
言語レベルでインラインアセンブラサポート

53 :デフォルトの名無しさん:04/03/22 21:25
>>51
debug 関係は属性でなんとかなるはず。

54 :デフォルトの名無しさん:04/03/22 23:12
Walter

55 :デフォルトの名無しさん:04/03/23 00:58
>>47
c#(2.0)ってネイティブコード吐けるのか

56 :デフォルトの名無しさん:04/03/23 01:16
>>55 ネイティブとマネージドの違いがあることは誰でも知ってる。

57 :デフォルトの名無しさん:04/03/23 10:40
つーかC#がネイティブ吐けたら最強なんだが。
Longhornになったらネイティブ並に速くなるのか??

58 :デフォルトの名無しさん:04/03/23 10:58
.NET ってのは要するに Wintel からの intel 外しが陰の目的なんだから、
いまの intel ネイティブコードはエミュレーションで走るようになって逆に
遅くなりそう。


59 :デフォルトの名無しさん:04/03/23 11:18
98年ぐらいはIntel>>MSぐらいだったのが
完全に出し抜かれた感じだね。今じゃMSが新しいバージョンを
リリースしてくれないことには、買い替え需要もないし。

で、intel ネイティブコードをエミュレーションってなんのこと?
バイナリトランスレーションとか呼ばれてるやつ?それと.NETに
どんな関係があるんだろ。説明しろ>58

60 :デフォルトの名無しさん:04/03/23 19:40
>>59
.netを拡張したヤシ(WinFX)が新しいネイティブAPIになるんでしょ確か。
んでwin32APIはエミュレーションになって遅くなると。

61 :デフォルトの名無しさん:04/03/23 22:15
>>58
>intel ネイティブコードはエミュレーションで走るように
これの説明になっとらんぞ

62 :デフォルトの名無しさん:04/03/23 23:01
Win32はエミュレーションになるとは限らないんじゃなかった?
CDCの記事でどっかのニュースサイトが書いてたはず。

63 :デフォルトの名無しさん:04/03/24 00:28
D Front End for GCC - Release 1b
http://home.earthlink.net/~dvdfrdmn/d/
もう知れ渡ってると思うけど、一応張っとく。

今、Solaris でコンパイル中。明日の朝出社したら実行ファイルができているはずだ。
これで、まともな GUIフロントエンドが完成したら、俺はもうDしか使わないぜ。

64 :デフォルトの名無しさん:04/03/24 00:31
へえ、こんなのあるんだ。これ正規のパッケージとして
取り込まれたらDの認知度も上がる?それともobjc程度の扱い?

65 :デフォルトの名無しさん:04/03/24 01:11
> D にあって、C#(2.0) に無いもの
あんまり挙がりませんな。C# 1.0 なら幾つもあるんだが。
やはりMSの開発速度には着いていけないのか……。

66 :デフォルトの名無しさん:04/03/24 01:13
C/C++直接コンパイル可能

67 :デフォルトの名無しさん:04/03/24 01:47
C# 2.0 の言語仕様についてまとまっているサイトきぼんぬ

68 :デフォルトの名無しさん:04/03/24 07:25
C# 2.0 Specification
http://download.microsoft.com/download/8/1/6/81682478-4018-48fe-9e5e-f87a44af3db9/SpecificationVer2.doc

69 :デフォルトの名無しさん:04/03/24 09:19
ワードもってないからワードパッドで読んでるんだけど
激しく読み難い。なんとか汁!>MS

70 :デフォルトの名無しさん:04/03/24 09:48
>>69
WORDを使ってもやっぱり読み難いから安心汁。

C# 2.0 Specification から拾ってみた。
- Generics (Javaと違って、 new T() も可能)
- Anonymous methods (この書き方ができる ⇒ button.Click += delegate { listBox.Items.Add(textBox.Text); };
- Iterator の実装で、"yield return" が使える。
- partial class (クラスを分割して定義できる)

71 :デフォルトの名無しさん:04/03/24 13:16
俺は、その言語の指標として、その言語の標準ライブラリが
いかに言語の能力を生かしユニークな作りになっているか
みることにしているので、それが無いDはまだ評価の段階にいたっていない感じ。

72 :71:04/03/24 13:19
Phobosってのがあるのね、しらんかった

73 :デフォルトの名無しさん:04/03/24 13:23
>>71
Dはひたすら中庸に逝って欲しいけどね。
C++ではなくC with class+GCを素直にやってくれればそれでいいよ。

74 :デフォルトの名無しさん:04/03/24 13:24
warota

75 :デフォルトの名無しさん:04/03/24 22:50
partial classはMixJuiceに対抗したのかな
それらに対してDはmixinで対抗

76 :デフォルトの名無しさん:04/03/25 00:58
Dのアプリを実行するのに、環境はいらないの?
JAVAではVM,C#では、.NETにあたるものは必要ないのですか?
ガーベジコレクションとかは、なにがやるのでしょうか?

77 :デフォルトの名無しさん:04/03/25 00:59
コンパイル時にガベージコレクションを実行するコードが挿入されるんじゃないかな(適当)

78 :デフォルトの名無しさん:04/03/25 01:29
>>76
一応OSが必要だねぇ

79 :デフォルトの名無しさん:04/03/25 11:21
Subject: Delegate and function unification
> Is this planned for 1.0 ? So we can intercahnge them etc ?

No, it'll be a 2.0 feature. It's conceptually simple, but there are a lot of
tricky details to get right.

うーん。。。

80 :sage:04/03/29 11:50
yamlは、やめると読んでしまいます。
いい発音の仕方を教えてください。



81 :デフォルトの名無しさん:04/03/29 11:55
>>80
イェイモー

82 :デフォルトの名無しさん:04/03/29 22:58
DIDE起動時に勝手にIEが開くんだけどなんとかなりませんか

83 :D 0.82:04/03/30 23:20
What's New for D 0.82
Mar 28, 2004
Bugs Fixed
- Some cases of forward referenced classes are now handled.
- Illegal recursive alias declarations now correctly diagnosed.
- Erroneous anonymous struct member offsets within unions fixed.
- Fixed problem with array initializers for consts.
- Fixed bug with intrinsics.
- Can now slice a void[].
- std.date: fixed dst calculation for zones with no dst.
- Fixed bug with nested delegate literals.
- Fixed overload inheritance bug with function aliases from base classes.
- Added files gnuc.h, mem.h, mem.c, port.h, enum.h, and enum.c to the \dmd\src\dmd.
- Fixed seg fault on forward reference to template.
- Fixed std.date.getUTCtime() for linux.

84 :デフォルトの名無しさん:04/04/01 00:37
hashをforeachするさい呼びだされるkeyの順番を制御できる?
構造体の配列をソートする際ソート順を制御できる?

85 :デフォルトの名無しさん:04/04/01 22:29
www.dsource.org

DWT A port of the SWT (Standard Widget Toolkit) GUI Library
完成が待たれます。

86 :sage:04/04/01 23:15
import std.string;
void main()
{
char[][char[]] hash;
hash["Data1"]="_Da1";
hash["data3"]=" da3";
hash["data2"]="_da2";
hash["data1"]=" da1";
hash["Bata1"]="_Ba1";
foreach(char[] key,char[] value;hash)
printf("%.*s %.*s\n", key, value);
printf("\n");
foreach(char[] key;sort(keys(hash)))
printf("%.*s %.*s\n", key, hash[key]);
}


87 :sage:04/04/01 23:16
char[][] keys(char[][char[]] hash){
char[][] array=new char[][hash.length];
int length=0;
foreach(char[] key,char[] value;hash)array[length++]=key;
return array;
}
char[][] sort(char[][] array)
{
char[][] array1=new char[][array.length];
int length=0;
foreach(int key,char[] value;array){
int i=0;
for(i=0;i<length;i++)
if(std.string.cmp(array[i],value) > 0) break;
for(int j=length-1;j>=i;j--)array1[j+1]=array1[j];
array1[i]=value;
length++;
}
return array1;
}


88 :デフォルトの名無しさん:04/04/02 00:30
>>85 できそうにもないけどな

89 :デフォルトの名無しさん:04/04/02 00:33
>>85
なんだそれ?
EclipseのSWTのD言語版?

90 :デフォルトの名無しさん:04/04/02 12:27
あのSWTのソースってどうよ、漏れは激しく読みづらい。
あれが限界なのか? もっと気合入れて作れないものかと。

91 :デフォルトの名無しさん:04/04/02 13:23
>>90
よみづらいって具体的には?

92 :デフォルトの名無しさん:04/04/02 22:28
DTLまだぁ?

93 :デフォルトの名無しさん:04/04/03 10:05
OTLまだぁ?

94 :デフォルトの名無しさん:04/04/03 11:33
_noまだぁ?

95 :デフォルトの名無しさん:04/04/03 13:19
orzまだぁ?

96 :デフォルトの名無しさん:04/04/03 15:14
module p1;
import std.c.stdio;
int main(){
float f1;
if(f1 == f1)
printf("f1 == f1");
return 0;
}

printfにいかないのは仕様だっけ?

97 :デフォルトの名無しさん:04/04/03 15:45
>>96
仕様みたいだね。

http://www.kmonos.net/alang/d/property.html
> 浮動小数点数型のプロパティ
>
>   .init  初期値 (NaN)

http://www.kmonos.net/alang/d/expression.html
> 等値式
>
> 浮動小数点数の場合は多少複雑です。-0 と +0 は等しいと判定されます。
> どちらか一方でも NaN であれば、 == も != も結果は false になります。
> それ以外の場合は、ビットパターンで比較されます。

98 :デフォルトの名無しさん:04/04/03 15:47
未初期化変数はNaN(Not a Number)で初期化され、
比較式にNaNが含まれる場合比較対象に関わらず偽となる。
だったかな? 仕様書確認せず記憶だけなのでフォローよろ。
まあしかし直感に反するフローなのは確かだな。

そいや===演算子でNaNと比較したらどうなるんだろ。
コンパイラ手元にないから確認できねえや。

99 :デフォルトの名無しさん:04/04/03 15:48
うむ。なぜだか知らないが時間的に前にフォローが入っているようだ。>>97thx

100 :デフォルトの名無しさん:04/04/03 16:14
「!=」でtrueになった……?

バグか バージョンが古いかどっちかか
落とし直しー

101 :100:04/04/03 16:14
sage忘れ……

102 :デフォルトの名無しさん:04/04/04 12:19
平衡木によるテンプレートコンテナクラス(std::setのようなもの)のDでの実装ってどっかにある?
なかったら自分でつくる(パクル)けど。

103 :デフォルトの名無しさん:04/04/04 12:27
>>102
void[value_type] では不満?

104 :102:04/04/04 12:46
>>103
不満だなぁ。それだとforeachとかで順序が指定できないよね。
begin, ++, endの操作(イテレータ)が欲しいわけ。
もし出来るんだったら教えてくらはい。現状先頭から順番に巡回できればいいです。
ちなみに配列に変換してソートするとかは無しね(;´Д`)

105 :102:04/04/04 12:50
なんか上の文章おかしいな。
foreachで呼び出される順序を指定できる仕組みが欲しい。
常に指定した順序で整列してて欲しい(頻繁に挿入〜巡回するので)。
ただそれだけです。

106 :デフォルトの名無しさん:04/04/05 00:49
[C++]void fuck(const string& str);
D言語でこの関数と等価な関数はどう書いたらいいのでしょうか・・・
[D]void fuck(char[] str);
これだとただのコピーになっちゃって;;

107 :デフォルトの名無しさん:04/04/05 02:39
inoutとか。

108 :86:04/04/05 04:03
>>84
import std.string;
void main()
{
char[][char[]] hash;
hash["Data1"]="_Da1";
hash["data3"]=" da3";
hash["data2"]="_da2";
hash["data1"]=" da1";
hash["Bata1"]="_Ba1";
foreach(char[] key,char[] value;hash)
printf("%.*s %.*s\n", key, value);
printf("\n");
foreach(char[] key;hash.keys.sort)
printf("%.*s %.*s\n", key, hash[key]);
}
これでできる。仕様ちゃんと読むべし。

109 :デフォルトの名無しさん:04/04/05 05:56
static int[char[]] h=["aa":1,"cc":2];

Error: cannot use array to initialize int[char[]]
とエラーになるのは仕様ですか?調子わる

110 :デフォルトの名無しさん:04/04/05 10:20
>>109
連想配列についての初期化の記述無いっぽいけど。出来ないんじゃ

111 :デフォルトの名無しさん:04/04/05 19:51
なんとかマガジンにやねうらお氏の紹介記事が載ってたな

112 :デフォルトの名無しさん:04/04/05 22:08
>>111
Software Design (ttp://www.gihyo.co.jp/magazines/SD/contents)
かな
まだ読んでないけど、どんな感じだった?

113 :デフォルトの名無しさん:04/04/05 22:31
自作のCライブラリでもDからそのまま使えるの?

114 :デフォルトの名無しさん:04/04/05 22:32
そのまま、というか、宣言してやれば。

115 :デフォルトの名無しさん:04/04/05 22:36
import c.mylib;って?

116 :デフォルトの名無しさん:04/04/05 22:37
>>115
そのmylib.dを書くのが面倒なんだよな。

117 :デフォルトの名無しさん:04/04/05 22:42
なるほどね。Cのソースをそのまま読める訳じゃないんだ。残念。

118 :デフォルトの名無しさん:04/04/05 22:54
要するに.hから.dに変換するツールがあれば無問題なわけだ。

119 :デフォルトの名無しさん:04/04/05 23:21
>>112
「なんとかマガジン」ってひとっつも当たってないところに笑った

俺もそれ立ち読みした。
ゲームを開発するときの言語を比較して、Dはそこそこ便利ですよ、
ただ、まだαですよ、最終的な判断は皆さんにおまかせします、
っていう内容だったような。当り障りの無い言語紹介かな。

120 :デフォルトの名無しさん:04/04/06 01:10
>>117-118
D言語用のswigがあったような気がする

121 :デフォルトの名無しさん:04/04/06 19:01
ドラフトの段階から乗り換える事を決めていた。
今のα仕様だけど、なかなか読んでて面白いね。
typedefとaliasのおかげでコードがすっきりしそう。


122 :デフォルトの名無しさん:04/04/06 20:58
split("aaa","c");

"aaa".split("c");
のようにも書ける仕様はどこに書いてありますか?

123 :デフォルトの名無しさん:04/04/06 21:03
>>122
上は関数で下はstringのメンバ関数でないかい?


124 :デフォルトの名無しさん:04/04/06 22:33
とりあえずやねうらおってのに萎えた

125 :デフォルトの名無しさん:04/04/06 22:40
そのやねうらお氏はいまC#にご執心のようだ。

126 :デフォルトの名無しさん:04/04/07 11:14
Javaよりこっちの方がいいな
まだリリース版出ないのかねぇ

127 :デフォルトの名無しさん:04/04/07 13:05
>>123
print(char[] a){
printf("%.*s",a);
}
"aaa".print();
と、第一引数のメンバ関数のように使えちゃうみたいなんだけど、なんでかなと。

128 :デフォルトの名無しさん:04/04/07 13:07
import std.stream;
void print(char[] s)
{
stdout.writeString(s);
}
int main()
{
"aaa".print();
return 0;
}
面白いけど使いそうにない

129 :128:04/04/07 13:10
このタイミングで重複とは_| ̄|○

130 :デフォルトの名無しさん:04/04/07 13:23
それってstringのメンバ関数とコンフリクトしたらどうなるんだ・・・

131 :デフォルトの名無しさん:04/04/07 13:23
>>127
>第一引数のメンバ関数のように使えちゃうみたい
仕様読んでる途中だからよーわからんけど、「みたい」」というか、そう最適化されるんでないの?
Dの配列はCと違って、サイズ情報などを保持するオブジェクトだから、第一引数に属するメソッドとしたほうが効率的かなと

import perl5; //あるのか知らんけど
char[] str = "諸行無常".u2s; //UTF-8からSJISへ

みたいに明示的にClass化しなくても、Moduleで簡単に骨太にできる。
コード上はClassっぽく扱っていても、実際はコンパイラが等価に書き換えるだけで実行時コストの削減に繋がる。


132 :修正:04/04/07 13:26
>>131
× 第一引数に属するメソッドとしたほうが効率的かなと
○ 第一引数に属するメソッドと見せかけたほうが効率的かなと


133 :131:04/04/07 13:33
サンプルの上と下とで言ってる事が逆だな俺w
ようは継承やインスタンス生成のコストを極力減らせる仕様なのでは?と。


134 :デフォルトの名無しさん:04/04/07 19:46
開発者推奨のコードスタイル、ハンガリアン記法のコメントにワロタ

135 :デフォルトの名無しさん:04/04/07 20:55
Dコンパイラ、専用のバグ報告場所作った方がいいと思う今日のこの頃。

136 :デフォルトの名無しさん:04/04/07 20:57
英語出来ないからあってもなぁ

137 :デフォルトの名無しさん:04/04/07 22:52
出来なかったらこのスレか別のDコミュニティに投げて代わりに訳して貰うとか。

138 :デフォルトの名無しさん:04/04/08 11:49
ver.0.82が最新なの?
ネットワークプログラミングは出きる?


139 :デフォルトの名無しさん:04/04/08 13:27
>>138
ココ見るとver.0.82が最新だーね。
http://www.digitalmars.com/d/changelog.html

ネットワークプログラミングってどの辺までを求めとるか分らんが、ソケットから書くのが苦痛でなきゃ
できるよん。実装例挙げるとこんなのとか。
http://user.ecc.u-tokyo.ac.jp/~s31552/wp/attohttpd/

140 :デフォルトの名無しさん:04/04/09 16:58
D言語のロゴが(゚Д゚)に見える

141 :デフォルトの名無しさん:04/04/09 23:23
ゴルァ言語

142 :デフォルトの名無しさん:04/04/10 08:25
言語のバグを見つけられるなんてすごいね
俺なんか自分のバグすら取るの大変

143 :デフォルトの名無しさん:04/04/10 11:15
>>139
ありがとう。乗り換えるべく勉強してみるよ。


144 :デフォルトの名無しさん:04/04/10 18:18
>>142
自分のバグですら取るのが大変なのに、言語のバグが原因だったりするから、
 現状では使い物にならない ⇒ 熱が冷めた
になったんだと思われ。

145 :デフォルトの名無しさん:04/04/10 20:30
D言語はもう熱が冷めたんですか?
ってかやねうらおさんですか?
同スレッドにあるとGCが発動してしまうバグ
これが何とかならないとD言語は使い物にならない
とか言ってましたけど
あれは直ったんですか?

146 :デフォルトの名無しさん:04/04/10 20:40
局所的に熱かっただけかと

147 :デフォルトの名無しさん:04/04/10 21:09
というか>>144の主語は誰のことだ

148 :デフォルトの名無しさん:04/04/10 21:15
>>145
>同スレッドにあるとGCが発動してしまうバグ
意味がわからない。
別スレッドでさえもnewしないようなスタイルは難しいから、
結果としてGCが走るのを抑えられない(gc.disableが未実装)
ってことかなー

149 :デフォルトの名無しさん:04/04/10 21:35
スレッド単位でGCが動いてしまうってことでは?
Linuxだったかな、見かけ上はスレッドだが、
負荷はプロセスと何ら変わらないってOSもあったり。

まだまだOS互換性が取れていないのでしょう。

150 :デフォルトの名無しさん:04/04/10 21:55
GCを制御するほど高度なプログラムなんて打ったことがないよ
どんなときに止める必要があるんだろう

151 :デフォルトの名無しさん:04/04/10 22:05
パフォーマンス最優先の時

152 :デフォルトの名無しさん:04/04/10 22:16
>>150
Dリファレンスの翻訳サイトのガベージコレクションの項に書いてあるよ。


153 :デフォルトの名無しさん:04/04/10 22:34
>>145
>D言語はもう熱が冷めたんですか?

彼はゲーム作成で飯を喰っている人間だから、
GC や Thread の持っている機能(というよりは、
それらが達成しようとしている目標)に
非常に魅力を感じているのであろう事は想像に難くない。

しかし、逆にそうであればこそ、
それらが内包しているダークサイド面も十分に承知しているのだろう。

・・・青い鳥症候群だな(通常の意味合いとは違うけど)。


154 :デフォルトの名無しさん:04/04/10 23:25
でもさまざまなゲームが作れてこそ
今の時代はプログラミング言語だよな

常にリアルタイムで画面を再描画しなくちゃいけないゲームや
またはパズルゲームなど
魅せ方が工夫できればできるほど
そして、それを楽に作れれば楽に作れるほど
有用なプログラミング言語と思われがち

155 :デフォルトの名無しさん:04/04/10 23:50
熱が冷めたというより、「まだβなのね」という意見なのでは?
0.82ならαというよりβだよね?


156 :デフォルトの名無しさん:04/04/10 23:52
モジュールをインポートするためにヘッダ作ってプロトタイプ書いて、、、って手間が省けるってだけでDマンセーなのは私だけでしょうか?
市販のC++ IDEとか使ったことないけど、自動でヘッダ作ってくれたりするんかな?

157 :デフォルトの名無しさん:04/04/11 00:01
>>156
C/C++が腐ってるだけで、Dに限らず他のほぼ全ての言語ではそんな必要は無い罠

158 :デフォルトの名無しさん:04/04/11 00:12
おいおい、他言語でもヘッダファイルは必要だぞ。
C/C++ではさらにインポートライブラリも必要だが。

159 :デフォルトの名無しさん:04/04/11 00:13
結局、楽に作れるかどうか?
資料は充実してるかどうか?

プログラム言語が流行るかどうかなんて
そういう単純なところだよね

160 :デフォルトの名無しさん:04/04/11 00:21
STL欲しい

161 :デフォルトの名無しさん:04/04/11 00:23
>>160
何か落ち込んでるのかと思った

最近OTL見すぎたかな

162 :デフォルトの名無しさん:04/04/11 00:26
>>161
最近はすぐ落ち込む人多いね
顔文字使う感覚なんだろうけど

163 :デフォルトの名無しさん:04/04/11 00:35
ネタだよなぁ

鬱だとかすぐ言われるよりはマシ

164 :デフォルトの名無しさん:04/04/11 00:37
>>152
ありがとう、読んで見たけどよくわからなかったよ

165 :デフォルトの名無しさん:04/04/11 00:52
>>156
その手間は全体からすると大した問題じゃないかもしれない。
漏れはまともなモジュール機構とプリプロセッサ排除の恩恵(?)で、
コンパイルが激速なのが嬉しい。
GCも付いてるしかなり楽できるんじゃないかと思う。

>>159
同意。言語の表現力で人気がでるなら、
最近の関数型言語(Haskell、Concurrent Clean)のスレが
ム板に溢れているはずだ。

166 :デフォルトの名無しさん:04/04/11 01:20
>>158
んー…Ada/Modulaあたりはモジュール化されてるとはいえヘッダ「ファイル」があったり、
Pascalは同じファイル内とはいえプロトタイプ宣言が必要だったりするけど、
JavaにしろC#にしろHaskellにしろ最近の言語は大抵はヘッダもプロトタイプ宣言も要らないよね


167 :デフォルトの名無しさん:04/04/11 01:28
>>164
FPSを常に30なり60なりに保つには、GCによるメモリ回収は切っておかないといけない。
その理由は、メモリ回収中はプログラムを完全に停止してしまうから。
だからゲームプレイ中はGCをスリープさせて、スコア画面中に手動でメモリを回収する必要が在る。


168 :デフォルトの名無しさん:04/04/11 01:53
>>167
MMORPGのような、シーン切り替えがいつ発生するか分からないようなのは
GCを呼び出すタイミングが難しいですね。
結局のところGC付きの言語ででpressureの大きいリソースを扱う場合は
Cacherを通して管理、巨大なバッファを確保したりする際は、
アロケーターでGCのスキャン対象外にして、自分でメモリー管理。
要するにC的なプログラミングをしなければならない。
と、やねうらお氏が言ってました。

ちょっとエロイ人に質問。
保守的GCってintやlong型に適当な値をつッこんだら
ポインタ値と勘違いされてその部分が解放されないってこと、あるの?

169 :デフォルトの名無しさん:04/04/11 02:15
>>168
言語の目的として
ポインタは使用しないこと

その理由として
int *i = new int;
int k = i;
とされてもGCは面倒見切れないから

この場合はポインタiがアドレスを放棄した時点でGCは回収にリストに入れます

170 :デフォルトの名無しさん:04/04/11 02:47
>>168
MMORPGは寧ろ頻繁にGCを動す思いますよ。
下手にリークメモリを貯めるとその分復帰に時間が掛かりますので。
チャット組のために一定時間ごとにこまめに動くんじゃないかな。


171 :デフォルトの名無しさん:04/04/11 02:55
その場合はGCじゃないだろ

172 :デフォルトの名無しさん:04/04/11 02:56
そういうゲームってGC動いてないんじゃない?
こまめに動くよりも自分で解放するほうが処理とかも楽そうだし

173 :デフォルトの名無しさん:04/04/11 03:13
>>167
よくそういうことがいわれるが、どのくらい止まるかってことには、
全然触れられないんだよな。

たとえば、1frame内で1msec以内なら(十分遅いけど、一応は)問題ないし、
逆に100msec止まってもらっては当然困る。

GCによるメモリ回収は短時間で終わるから、
ゲームには十分向いているなんて推測もできる。

実際どうなのよって話。

174 :デフォルトの名無しさん:04/04/11 03:15
例えば2Mの画像を破棄したとき
どうなる?

175 :デフォルトの名無しさん:04/04/11 03:17
>>174
deleteで破棄すれば強制回収という仕様があったような。

176 :デフォルトの名無しさん:04/04/11 04:54
どうでもいいけど
D言語でアナルオナニーしていいですか?

177 :デフォルトの名無しさん:04/04/11 07:11
>>176
どうやってするのかわからないので、実況しながらお願いします。

178 :デフォルトの名無しさん:04/04/11 07:36
D・V・D!!(ry

179 :デフォルトの名無しさん:04/04/11 09:48
>>173
>どのくらい止まるかってことには、全然触れられないんだよな。

GC がどのくらい止まるかは、そのアプリケーションの規模によって
大きく変わる。

もしもアプリケーションを拡張しているうちに、GC による
遅延の問題が発生し始めた場合、もう後戻りはできない。
小手先の最適化など何の役にも立たない致命的な欠陥なので、
結局はそのコードを全て捨て去り、結局全てリライトしなくては
ならなくなる。

プログラマにとってこれほど怖いものは無い。


180 :デフォルトの名無しさん:04/04/11 09:51
一部のみGCを使えればね

181 :デフォルトの名無しさん:04/04/11 09:51
>>179
そのためのversionやdebugなどなど
コンパイル時のパラメータによって出力が変わるようにしてるんじゃないかな?

182 :デフォルトの名無しさん:04/04/11 10:34
>>179
わかった
予測できないから、使えないってことね

それが、実験して得た結論なら別にどうこういわん

183 :デフォルトの名無しさん:04/04/11 10:43
>>182

>http://d.hatena.ne.jp/yaneurao/
>
>2004-04-10 いまどきのGC
>
>まあ、どのみちアプリケーションが肥大化してきたときに
>保守的なGCではどうしようもいかなくなる。
>保守的なGCが使われる限り、リアルタイム性が問題になる
>大規模なアプリは書けないんじゃないかとも思う。

是非、彼にもそう言ってやってくれ。


184 :デフォルトの名無しさん:04/04/11 13:06
おかしな話だ。D言語は中・大規模なソフトウェア開発のために作られてる。


185 :デフォルトの名無しさん:04/04/11 17:17
メモリリークと戦うか挙動不審なGCと戦うか、非常に悩むところだ・・・

186 :デフォルトの名無しさん:04/04/11 17:29
>>179
Incremental GC でも話にならないかね?

187 :デフォルトの名無しさん:04/04/11 17:33
大き目の共用体を含むクラスでも設けて、必要なくなったらdeleteで強制回収。
リアルタイム処理につかうメモリを全てそのクラスで扱えばいいような気が。

188 :デフォルトの名無しさん:04/04/11 17:40
>>168-169
DのGCはint型でもそこにポインタ値らしきものが入ってたら解放しないんじゃ?

189 :デフォルトの名無しさん:04/04/11 17:46
メインスレッドで毎回resumeAll呼び出しじゃだめ?

190 :デフォルトの名無しさん:04/04/11 17:57
>>186-187
そんなやり方は、皆が承知している。

で、その上で、D言語の Evangelist は
「保守的な GC が使われる限り、リアルタイム性が問題になる
大規模なアプリは書けないんじゃないかとも思う」
という判断を下した訳だ・・・

結局の所は個人の主観の問題、というか、
アプリケーション開発というものに対するポリシーの問題だよ。


191 :デフォルトの名無しさん:04/04/11 18:13
>>179
全部rewriteしなくてもいいだろうに。

192 :デフォルトの名無しさん:04/04/11 18:15
いや書けるでしょ。
その書き方は嫌だから無理ってのは意味不明。。。


193 :デフォルトの名無しさん:04/04/11 22:44
ABA Gamesさんとこのゲームはシューティングだからまさに
FPS維持が問題になるけどそんなに問題になってるようには見えないが、
GCまわりはどうなってるのかな?

194 :デフォルトの名無しさん:04/04/11 23:56
大量のメモリさえ確保できれば、DにGCだからという欠点はないよ。
DのGCにバグがあるのとは、また別の話 :-)


195 :デフォルトの名無しさん:04/04/12 00:08
つまりGC自体がバグだと言いたいのは良く解るんだが
そんな物はつけなくてもよろしいのでは?

196 :デフォルトの名無しさん:04/04/12 00:22
GCがあるほうが開発コストが安いからねぇ。


197 :やねうらお:04/04/12 02:59
>>193
ABAさんのゲームは、ゲーム中(リアルタイム性が必要とされる部分)では、
コーディング上のミスが無い限りは、newは1回も呼び出してないはずです。
(要するにGCは一切呼び出されないです。)

198 :デフォルトの名無しさん:04/04/12 04:13
その携帯のJAVAみたいな組み方はすげーな

199 :デフォルトの名無しさん:04/04/12 05:36
>>198
だって元々そういうJavaアプリをバリバリ書いてた人だもん。
↓下記参照。
http://d.hatena.ne.jp/ABA/20040326#p2

200 :デフォルトの名無しさん:04/04/12 19:13
やねうらおの言い訳 age
http://d.hatena.ne.jp/yaneurao/
>2004-04-13 いろいろ考え中


201 :200:04/04/12 19:14
アゲ間違え sage

202 :デフォルトの名無しさん:04/04/12 19:31
>>112
激しく遅レスですまぬ。
Software Designの記事を読んで思ったのだが、
ひょっとしてやねうらおは、C#の using を構文糖と気づいていないのか?

203 :デフォルトの名無しさん:04/04/12 20:39
リアルタイムで動かすならば
常に回収をすればいいわけか

204 :デフォルトの名無しさん:04/04/13 00:21
>>203
そうだね。
まったくしないか、気づかせないほど細かく回収するかのどっちかだ。


205 :デフォルトの名無しさん:04/04/13 00:36
>>200
Dで大規模プログラムの仕事なんて出すわけないじゃない
β仕様のβコンパイラで何を作れとw

茶碗をチンチン叩きながらマターリ待ちましょう


206 :やねうらお ◆.NZe9R3gKs :04/04/13 00:58
>>202
>ひょっとしてやねうらおは、C#の using を構文糖と気づいていないのか?

さすがにそんなことは..。

ildasmで見ればtry〜finallyでDispose呼び出すのと同じコードが
生成されていることは明らかなので。


207 :やねうらお ◆.NZe9R3gKs :04/04/13 01:03
>>205
> Dで大規模プログラムの仕事なんて出すわけないじゃない

私の原文が少し紛らわしかったかも知れませんが、
「GC付きの言語の大規模開発を経験してみたい」という趣旨で、
言語は、Dでも.NETでも何でも構いません。


208 :デフォルトの名無しさん:04/04/13 01:18
http://www.google.co.jp/search?q=%E5%B9%BC%E5%A5%B3%E3%81%AE%E3%82%A8%E3%82%AD%E3%82%B9&ie=UTF-8&oe=UTF-8&hl=ja&lr=

209 :デフォルトの名無しさん:04/04/13 01:56
カナダのバンクーバーで行われたお手玉世界選手権で、見事福島県いわき市に住む
神尾トメコ(82)が優勝した。決勝ではアメリカのビル・ランドルフ(26)と争った。
神尾は決勝でなんと11個のお手玉を操り、観客の度肝を抜いた。この大会で日本人が
優勝したのは初めてであり、神尾は「これも皆さんのおかげです。ありがとうございました。」
という謙虚な発言をした。この記録はギネスにも認定され、同時に2つの快挙を成し遂げた。

詳細 <福島県いわき市のお手玉11個に成功したスーパーおばあちゃんを称えるスレ>
http://tmp2.2ch.net/test/read.cgi/mog2/1076074534/l50

210 :デフォルトの名無しさん:04/04/13 02:44
良く解らんけどGCの使い道を強力に使えるゲームがある

エロゲー

211 :デフォルトの名無しさん:04/04/13 03:36
リアルタイムはどうでもいいものなら
GCは無茶苦茶強力な武器なんだよな言うまでもなく

212 :デフォルトの名無しさん:04/04/13 04:17
キッコータイマーとかいう
時計作ったけど
C言語に作り直したらメモリーリークしてびびった
メモリ50%使用の状態だったのに
一時間つけてたら90%とか40%も増えてた

GCは楽チンでえぇね(´∀`*)

213 :デフォルトの名無しさん:04/04/13 12:13
>>212
GC があってもリソース解放忘れは防げないので、ご注意を。

214 :デフォルトの名無しさん:04/04/13 19:33
曲線描画でpoligonだっけ?
なんかそんな感じの使っててメモリを解放し忘れてただけだったから平気w

215 :デフォルトの名無しさん:04/04/16 07:19
D言語しながらじゃがりこ食うのっていいよな

216 :デフォルトの名無しさん:04/04/16 23:00
Cはmallocとfreeを何度も繰り返すと、メモリのフラグメンテーションでも起きるのかね?
freeしたところが再度使わるのであれば、時計程度でメモリリークなんてしないよね


217 :デフォルトの名無しさん:04/04/17 01:18
まあ、そりゃmallocとfreeの実装によるだろう。
んでもとりあえず一般的だろうと思われるmallocとfreeの実装で、
毎回サイズの違うメモリをmalloc/freeしまくったら
メモリのフラグメンテーションがおきる可能性はかなりありそうだな。

それとメモリリークってのはmallocしたのをfreeしないことであって、
ちゃんとfreeしてるならそりゃ(フラグメンテーションが起こっていても)
メモリリークとはいわない気がするがどうか。

218 :デフォルトの名無しさん:04/04/17 08:55
処で、50%から90%に増えたのなら40%増ではなくて80%増だと思うのだが。

219 :デフォルトの名無しさん:04/04/17 09:03
>>214を無視しないで話を進めないでくれ・・・
つづりとか関数名を忘れたことは謝るから
PolyPolylineの第ニ引数のPOINT*を毎回mallocで作ってた癖に解放し忘れたわけ
だからメモリリークを起こしました

それだけです

220 :デフォルトの名無しさん:04/04/17 11:43
つまり>219は阿呆だったと。
大丈夫、あんたの場合は言語に関わらず同じような阿呆を繰り返すよ。

221 :デフォルトの名無しさん:04/04/17 11:47
>>218
この難解な謎解きは俺への挑戦か?
%を単位と取るか記号と取るかで表現が変わるけど
意味合い的にはどっちも間違いじゃないと思う

222 :デフォルトの名無しさん:04/04/17 12:34
>>221
> 意味合い的にはどっちも間違いじゃないと思う
よく混同して用いられるけど、正確には間違い。
前者はパーセントといわず、ポイントといいます。

つまり50%→90%は40ポイント増または80%増。

223 :デフォルトの名無しさん:04/04/17 14:32
>>220
メモリの解放はすべてGCに任してたわけですけど
それは阿呆なんでしょうか?
ならもうD言語はやめようと想います

少し移植が上手くいかなかっただけで文句言われたらなぁ
大体もう解決してるし過去の事をとやかく言う方がアホだろうね

224 :デフォルトの名無しさん:04/04/17 14:35
>>223
厨房に煽られたぐらいで止めるとか言うなら勝手にやめろ
大体バカ相手にしてるお前もバカだって事ぐらい解れ

225 :デフォルトの名無しさん:04/04/17 15:45
同感だな。2chから有用な情報を取り出したいなら、
情報選別能力と煽り耐性は鍛えておいた方がいいぞ。

226 :デフォルトの名無しさん:04/04/17 16:15
メモリ解放だけがプログラミングじゃない。
そんなところで躓く香具師はメモリ解放を他人任せにできても
どうせ他で躓く。

まぁ、そんな香具師でも躓きにくくなったのはいいことだな。

227 :デフォルトの名無しさん:04/04/17 16:28
>226
>まぁ、そんな香具師でも躓きにくくなったのはいいことだな。

問題が起こった時、その尻拭いをするのが別人だという
点を除いて、な・・・


228 :デフォルトの名無しさん:04/04/17 19:27
>>226
の意味が解らない
他人任せ=GCなのか
バグを取り除くのが他の人なのか

そこんところをはっきりしてくれ

229 :デフォルトの名無しさん:04/04/17 20:17
>>228
他人任せ=GCの意味に見えるよ。文脈的に。

ところで漏れは上のほうにあった保守的GCの性質、
つまりint型でも中にポインタ値らしきものがあったらそこは解放されないのか?
が気になる。
だとしたらさ、(int型の)static変数に偶然そういう値が代入されちゃって
その後不変だったらそこは解放されなくて、
しかもGCが辿るポインタのチェインの根元の方だと
(かつその先のポインタはそこからしか辿れない場合)
その先も解放されない、ていう、かなりいい加減なGCってことだよね。
しかもどっかの記事によるとbyte配列も4byte alignで辿るみたいだし、
偶然ポインタ値と一致する、なんて結構あり得るんだよね。
もちろん自分で色々試してみたんだけど、今いち確信できないんだよ。
ただやっぱりint型でもポインタ値突っ込むとそのポインタ値は100%
解放されない。ポインタ値を突っ込んだint変数をクリアしても、
解放されないことはあったけどね。
スタックかどっかに残ったままになってたのかね。
詳しい人いたら、情報よろしく頼むね。

230 :デフォルトの名無しさん:04/04/17 20:23
あぁそうそう最後にnewしたオブジェクトは、
fullCollectしても解放されなかった気がするな。
この辺の挙動もどういう理由か、わかればスッキリするよね。
分からなくても、別にいいんだけどさ。

231 :デフォルトの名無しさん:04/04/17 20:28
保守的GCが使えないってのは、良くある結論だと思うよ。
毎フレームfullCollectして1回のGCにかかる時間を減らせばいい、
なんて言ってた人いるけど、そうじゃないよね。
1回のGCでドコも解放されなければ、その時間は全て無駄だよね。
データ配列として10MBも確保してるような場合、
毎フレームスキャンするんだよ。正気の沙汰じゃない。
Dでリアルタイム性が重視されるコードを書くなら、
GCは走らせちゃだめなんだよ。大規模になればなるほどね。

232 :デフォルトの名無しさん:04/04/17 20:39
最後に一つ提言しとくよ。
Dの言語仕様はC++よりはまし。その程度のものなんだよね。
ラムダもクロージャもなければMixinもないし。
まぁin,out,unittestや組み込み配列は妙に便利なのは認めるけどさ。
世の中探せばもっと表現力があってライブラリーも(少なくともDより)
豊富な言語は、それなりにあるよ。その中には関数型言語が多いね。
でもC/C++からの低い学習曲線っていうその1点が、
Dの大きなアドバンテージなんだろうね。
C#でネイティブコードを吐けるようになれば、
Dのポジションは完全に失われちゃんだけどさ。

233 :デフォルトの名無しさん:04/04/17 21:01
Dのメリットは、旧式リンカの上で割と新しめの言語機能を…だと思うけどな。
C#にしてもJavaにしても、文法からしてランタイムがあって実行時にダイナミックなんちゃらができるの前提でしょ。
だからネイティブC#が出来ても同じだけのパフォーマンスは期待できないはず。
マネージドコードでポインタが追跡できてインクリメンタルGCが可能になる分、GCに限っては性能出るかも知れないけど。

そんなのに頼らない制約の中ではDは頑張ってる…というか、C#とかのリッチな気分でDのコード書くな。
Dは、C言語並みにガリガリのコーディングするつもりで使ってこそパラダイス。
DのGCは、C++が暗黙のコンストラクタ/デストラクタのせいでコンパイラは暗黙のtryとかいっぱい埋めこまねばならず
無駄に生成コードサイズが増えてしまったのを、スッキリさせるため程度に考えとけばいい。頼り切るものじゃない。
巨大なバッファが不要になったら明示的にdelete書くし、局所的にしか使わないオブジェクトにはauto付けまくる。
そもそも動的配列のコピーオンライトすらパフォーマンス目的で見送られた言語だ。


234 :デフォルトの名無しさん:04/04/17 21:35
C++の1/10のコストで9/10の表現ができるのがDということなので。
残りの1/10の表現とやらをCで埋め込めっつーことだね。


235 :デフォルトの名無しさん:04/04/17 22:03
言語仕様もコンパイラもライブラリもまだ成熟していないってのに
そうやって結論付ける意味はあるの?

>>220-228
何か職場で嫌な事でもあるの?
お兄さんが相談にのるよ?

236 :デフォルトの名無しさん:04/04/17 22:05
>>235
現時点での結論。そんなのなんだって言える事だろ。

237 :デフォルトの名無しさん:04/04/17 22:10
そうそう。クラスも使えるC言語程度の低レベル言語使ってるような気分でいれば、
C/C++のいちいち気に触る文法が細かいところで改善されててとても素敵。
贅沢なプログラミングがしたいならDはお薦めできない。

238 :デフォルトの名無しさん:04/04/17 22:18
>>236
だからそれが意味あるの?って聞いてるんだが

239 :デフォルトの名無しさん:04/04/17 22:24
自己満足だろ。まぁ日記。

240 :デフォルトの名無しさん:04/04/17 22:33
アホはどっちなんだか

241 :デフォルトの名無しさん:04/04/17 22:40
お前ら、なんだか上の議論が理解できない漏れみたいなアホめにコードで語ってください。

242 :デフォルトの名無しさん:04/04/17 22:55
D言語にはC++のSTLにあたるものは標準で付いてくるの?

243 :デフォルトの名無しさん:04/04/17 23:20
>>242
今portingしてるから待ってれ

244 :デフォルトの名無しさん:04/04/17 23:26
なんか少林サッカーみてたら
香ばしい流れになってる
でも読んでて楽しい

WindowsでGUIプログラムを作るとすると
D言語では色々不具合(変数名の重複)とか出てきたじゃん
あれ、なんとかしてほしいよなぁ

245 :デフォルトの名無しさん:04/04/17 23:34
>WindowsでGUIプログラムを作るとすると
>D言語では色々不具合(変数名の重複)とか出てきたじゃん

うちはふつーにできてるけど
もうちょっと詳しく話してみて

246 :デフォルトの名無しさん:04/04/18 00:39
>>245
触ったの結構前なんですみません
モジュールを追加してくと変数名や型の重複が目立ちますよね
以前win32apiを使いたい時に色々追加したらそうなっただけです

今はわからないです

247 :デフォルトの名無しさん:04/04/18 03:10
つまり、毎フレームfullCollectを使う人は
大きいメモリをmallocで確保しろと

248 :デフォルトの名無しさん:04/04/19 11:44
C++/CLI 触ってみた。
従来の C++ のコードと、マネージコードが混在していて楽しい。
テンプレートも使えるし。仕様が固まったら、かなり良いものになりそうだ。


249 :248:04/04/19 11:45
む、誤爆。スマン

250 :デフォルトの名無しさん:04/04/19 13:30
本当に誤爆なのか。
わざとだろ(w


251 :デフォルトの名無しさん:04/04/20 00:43
ttp://www.atari-soldiers.com/dide.html
DIDE(full package)のリンクが間違ってるっつーのはどういう事なんだ・・・・・・

×: ttp://www.atari-soldiers.com/dmd_full.zip
○: ttp://www.atari-soldiers.com/dide_full.zip

ガイシュツだったらごめん。

252 :デフォルトの名無しさん:04/04/20 00:49
DIDEでUTF-8でもSJISでも文字化けするのは仕様?
実行ファイル上では問題ないからエディタのせいだよね?


253 :デフォルトの名無しさん:04/04/20 11:51
CGI用のロックとかするにはどうするのがベストなんだろう?
OSによって、ロックファイル使えれば使って、使えなければループで回ってみたい
なコード書かなきゃだめかなぁ?
ライブラリにあるといいんだけどなぁ。



254 :デフォルトの名無しさん:04/04/20 22:27
ロックって安全は安全だけど、ロック解除直後から別ルーチンの処理開始までが、微妙に遅かった気がする。
まあそんなことはどうでもいいか。


255 :デフォルトの名無しさん:04/04/20 22:31
×別ルーチンの処理開始までが
○別プロセスのファイル処理開始までが


256 :デフォルトの名無しさん:04/04/22 05:03
ぜんぜんレスがなくて寂しいなぁ
どれ、D言語でDirectXでプログラムでゲームで遊んでみるか

257 :デフォルトの名無しさん:04/04/22 13:56
std.mmfileを使ってロックできるんじゃない?


258 :デフォルトの名無しさん:04/04/22 22:26
>>257
中身無いんですけど。

259 :デフォルトの名無しさん:04/04/23 14:26
>>258
次のバージョンあたりには、ついてくるんじゃ?
そのときついでに、プロセス間の同期もできるんだろうから、それ使えばきっとOK


260 :デフォルトの名無しさん:04/04/24 01:14
あるファイルで以下のように定義。
class Test{
 private: int test(){ return 3; }
 public: int test(int n){ return 4; }
}

別ファイルで
 Test a = new Test;
 printf("%d", a.test(3)); //アクセスできなくてコンパイルエラー。

あるファイルの定義順を変える。
class Test{
 public: int test(int n){ return 4; }
 private: int test(){ return 3; }
}

別ファイルで
 Test a = new Test;
 printf("%d", a.test()); //コンパイル、実行できる。



261 :デフォルトの名無しさん:04/04/24 02:06
オーバーロード時の属性関係のバグか。

262 :デフォルトの名無しさん:04/04/24 18:15
同じファイル内だとprivateが無視されるかんじだけど、バグ?

263 :デフォルトの名無しさん:04/04/24 18:24
同じファイル=モジュール間のものは互いに friend になる仕様

264 :デフォルトの名無しさん:04/04/24 19:54
モジュール内グローバル変数は自動でextrnになる仕様?
つまりC/C++と比べて宣言の仕方が逆になったということ?
Classの省略規則からしても逆なわけだから混乱するね

265 :253:04/04/24 22:21
とりあえず、mutex使ってロックするものを作ってみた。(WIN版だけ)
これで大丈夫?
HANDLE LockMutex(char[] name)
{
 HANDLE hMutex;
 /* ミューテックスのオープン */
 while((hMutex = OpenMutexA(MUTEX_ALL_ACCESS, FALSE, name))==null){
  hMutex = CreateMutexA(null, FALSE, name);
 }
 /* 所有権獲得まで待機 */
 WaitForSingleObject(hMutex, INFINITE);
 return hMutex;
}
void UnLockMutex(HANDLE hMutex)
{
 ReleaseMutex(hMutex);
 CloseHandle(hMutex);
}
で、思ったんだけど、synchronized(char[])で、プロセス間で同期できるといいなぁと。
クリティカルセクションは簡単に同期できるのに、プロセス間が簡単に同期できないって変でしょ。


266 :デフォルトの名無しさん:04/04/24 23:39
>>265
大丈夫かどうかはスレッド100個くらい作って指定時刻と同時にDoSチックに攻めればいい。


267 :デフォルトの名無しさん:04/04/24 23:57
C++になかった機能の
メンバ変数の静的な初期値を使ってみたんだけど……

class SomeClass {
static const double s_c = 0.0;
const static double c_s = 0.0;
double a = s_c; // OK
double b = c_s; // compile-error said "no-constant expression."
}

仕様? バグだとしたらとっくに露見していそうな感じするけど

268 :デフォルトの名無しさん:04/04/25 00:30
普通は先にstatic書くから、気づいてない確率が高い。
バグだろうけど、仕様としたほうがソースの可読性向上になるね。


269 :デフォルトの名無しさん:04/04/25 02:03
class hoge{
 int x;
}
class hogehoge: hoge{
 override int x;
}
とやって、
 hogehoge a = new hogehoge;
 a.x = 10;
 printf("%d\n", ((hoge)a).x);
とやったら、
10が表示されてほしいなぁ…


270 :デフォルトの名無しさん:04/04/25 02:05
ちがった間違えた。
class hoge{}
class hogehoge : hoge{}

class moge{
 hoge h;
}
class mogemoge: moge{
override hogehoge h;
}

こうだ。

271 :デフォルトの名無しさん:04/04/25 02:12
override なんかしなくてもできるような気がするのは気のせいか?

272 :デフォルトの名無しさん:04/04/25 02:31
基底クラスのメンバ変数と同名の派生クラスの変数を宣言すると、
基底クラスの関数が派生クラスの同名変数を変更してくれんのよ。
>>269と同じような話。ようは両者が区別される。

で、>>270みたいにして、
class hogehoge{
  . . .
 this(hogehoge hh){
  h = hh;
 }
  . . .
とやって、hogehogeのメンバ関数にアクセスするときにいちいちキャスト
せんでもすむようにしたいのよ。
あと、派生クラスでも使う基底クラスの変数を、明示的に宣言できると、見やすい。

273 :デフォルトの名無しさん:04/04/25 02:56
低級レベルと高級レベルを明確にレイヤー分けしたいのか。



274 :デフォルトの名無しさん:04/04/25 16:41
>>272
再利用性に掛けるから、便利そうに見えて実は大げさな処理に感じる。


275 :デフォルトの名無しさん:04/04/25 18:02
再利用って言うのはどうもいけ好かない
あんなの再利用できるのを選別してる間に新しいの書いたほうが有効だっつーの

276 :デフォルトの名無しさん:04/04/25 18:28
そうだな。再利用と言っても実際はコピペだし
新しいプロジェクトに合わせるために継ぎ接ぎだらけになって結局劣化するし。

277 :デフォルトの名無しさん:04/04/25 18:33
>>275,276
再利用の単位が大きすぎるとそうなる。
もっと基本的なものを作れ。

278 :デフォルトの名無しさん:04/04/25 19:07
>>277
表現が変だったが
C++でいう再利用ですが
たとえば文字列をフォーマットしたりとか
そういう単純な関数の再利用は俺も賛成派です

279 :デフォルトの名無しさん:04/04/25 19:23
再利用を目的とした機能の分割じゃなくて、
見通しや関係の理解しやすさからクラスわけしてる。
 hoge h;
 h = new hogehoge;
としちゃうと、hogehogeのメンバにアクセスするとき結局型決めうちになるから、
抽象化も型安全性もない。それだったら最初から、「hはhogehogeとして扱いますよ」宣言
をしておきたいんだ。

あれかな、override hogehogeは、override hogehogeを持つクラスを再利用するためじゃなくて、
継承もとのクラスをよく再利用するために欲しいと思うんだな。

280 :デフォルトの名無しさん:04/04/25 21:08
GC実装したカーネルってあるのかな?
まだ研究中とかでもいいんだけど、そこにDを売り込みたいね

281 :デフォルトの名無しさん:04/04/26 06:32
DのGCについて理解を深めてからもう一度コメントどうぞ

282 :デフォルトの名無しさん:04/04/26 12:40
>113>115>117>126>134>138>140>141>142>242>244>252>256>262>264>280

283 :デフォルトの名無しさん:04/04/26 18:39
2,3個自分のが入ってる

284 :デフォルトの名無しさん:04/04/27 00:27
DだろうがなんだろうがGCはGCだろ


285 :デフォルトの名無しさん:04/04/27 07:03
たとえばメモリ解放の手順がいろいろあるように
GCの手順もいろいろ、動作もいろいろ
同じとみるな

286 :デフォルトの名無しさん:04/04/27 08:12
”いろいろ”なんて言葉にしてみれば
大した事が無いなんて事が多いよ

287 :デフォルトの名無しさん:04/04/27 09:07
で、D言語を作っている人たちはD言語作ることからいったいどうやって
収益あげるつもりなのでしょうか。

288 :デフォルトの名無しさん:04/04/27 11:27
言語は元々金にならんとMatzやんも言ってたよ。

289 :デフォルトの名無しさん:04/04/27 12:23
dmcも金取ってるのはIDEだけだしな。

290 :デフォルトの名無しさん:04/04/27 14:16
>>287
流行ってきたら本書いて売る。

291 :デフォルトの名無しさん:04/04/27 14:30
delta modulation compiler

292 :デフォルトの名無しさん:04/04/27 20:16
DMD 0.86リリースage

293 :デフォルトの名無しさん:04/04/27 20:53
初めての織田信長より面白いネタがほしい

294 :デフォルトの名無しさん:04/04/28 19:54
>>290

いや、言語作らなくても本なら誰でも書けると思うんですが・・・

295 :デフォルトの名無しさん:04/04/28 21:11
>>294
D言語をつくることから、に対しての答えとしては正しいと思うが

296 :デフォルトの名無しさん:04/04/28 21:18
答えなんて無い
そんなバカな、プログラマーは思うでしょう
システム化された社会ならしょうがないでしょうね

297 :デフォルトの名無しさん:04/04/28 22:14
C#でネイティブコード作れないとか言ってるのがいるけど、C#は実行時はいつも
ネイティブコードにJITしてるので関係ないだろ?
おまけに、ngen使えば環境非依存性を犠牲に(どうせmonoとか使う奴いないだろ)
ネイティブコードに落とせるわけだし。

298 :デフォルトの名無しさん:04/04/28 22:45
>>297
ネイティブでしか書けないようなコードが書けるかどうかが問題なのであって
実際にネイティブかどうかなんてのは実はあまり関係ない


299 :デフォルトの名無しさん:04/04/28 23:12
>>297
スレ違いだがJITしてるにしろ変換できるにしろその変換分のオーバーヘッドが
最低でもかかってくるからパフォーマンスに影響するのがいただけない。
ついでにユーザーサイドから言えば余計なもの(.NET Runtime)入れなきゃい
けないのがめんどくさい。
まーMSはそれもOSに統合しちまうんだろうけどさ。

で、dmd0.86からstd.socketとstd.socketstreamが入れられたわけだが
これでjava厨の煽りが少なくなればいいね('A`)

#よくよく考えたら煽ってるのってVMマンセーが多いような…。


300 :デフォルトの名無しさん:04/04/29 01:29
>>299
.NETはVBの延長線上のものだから、企業が嫌でも好む。

まぁD言語はネイティブOOP最強の座は約束されてるようなもんだ。
それが実現できないのなら、あっさり廃れるだろうね。

301 :デフォルトの名無しさん:04/04/29 01:49
やっぱりVCLをDで書き直したBorland Dが欲しいんだよなぁ・・・。

302 :デフォルトの名無しさん:04/04/29 08:09
クロスプラットフォーム対応なDBuilderとか?



303 :デフォルトの名無しさん:04/04/29 09:14
Bolandにお願いするしか
署名つのるとか


304 :デフォルトの名無しさん:04/04/29 09:33
ネイティブってネガティブに似てる

305 :デフォルトの名無しさん:04/04/29 09:48
DはObjectPascalで出来ることは全て出来るのだろうか?

306 :デフォルトの名無しさん:04/04/29 09:57
コンパイラのソース公開まだ?

307 :305:04/04/29 09:58
出来上がる物の事じゃなくて、言語の仕様の事ですよ。

308 :デフォルトの名無しさん:04/04/29 13:46
>>305
細かいところはどーにでもなるけど、RTTI関連の仕様がすっぱり抜け落ちてるのでVCLは無理
Borlandだったら勝手に拡張するだろうけど


309 :デフォルトの名無しさん:04/04/29 14:05
そしてDMがそのチューンをすれば完璧と。


310 :デフォルトの名無しさん:04/04/29 14:14
暴がDMに出資でもしない限り無理。

311 :デフォルトの名無しさん:04/04/30 01:02
なんでいきなりver0.86なんだ?
change logにある
>Added casting ability to non-COM interfaces.
はてな?COMインターフェースって言語仕様に含まれてるの?
この文の意味を教えてくれ!

312 :デフォルトの名無しさん:04/04/30 18:01
>>311
http://www.digitalmars.com/d/class.html#interface
COM Interfaces
A variant on interfaces is the COM interface. A COM interface is designed to map directly onto a Windows COM object. Any COM object can be represented by a COM interface, and any D object with a COM interface can be used by external COM clients.

A COM interface is defined as one that derives from the interface std.c.windows.com.IUnknown. A COM interface differs from a regular D interface in that:

* It derives from the interface std.c.windows.com.IUnknown.
* It cannot be the argument of a DeleteExpression.
* References cannot be upcast to the enclosing class object, nor can
they be downcast to a derived interface. To accomplish this, an appropriate
QueryInterface() would have to be implemented for that interface in standard
COM fashion.

313 :デフォルトの名無しさん:04/05/02 01:21
class A{
 this(){
  b = new B;
 }
 ~this(){/*ここでresouce解放*/}
 B b;
}

class B{
 ~this(){/*ここでresouce解放*/}
}

int main(char[][]){
 A a = new A;
 return 0;
}

これって必ず、Bのデストラクタ→Aのデストラクタの順で呼ばれるって決まってるの?

Aの持つ所謂unmanaged resouceをデストラクタで解放する前にBのそれを解放しなきゃいけないんだけど
先にAのデストラクタが呼ばれちゃう。どうすればいいんでしょ?autoつけてもだめだし。
というかCOMなんですが。

314 :最凶VB厨房:04/05/02 02:55
import std.stream;
class A{
this()
{
b = new B;
}
~this()
{
delete this.b;
stdout.writeLine("Aがお亡くなりになりました");
}
B b;
}

class B{
~this()
{
stdout.writeLine("Bがお亡くなりになりました");
}
}

int main(char[][] arg)
{
auto A a = new A;
return 0;
}

315 :デフォルトの名無しさん:04/05/02 06:11
>>314はえろい

316 :最凶VB厨房:04/05/02 12:10
なんでやねん

317 :デフォルトの名無しさん:04/05/02 18:53
D の方向性には共感できるし、機能的にも面白いと思う。
メソッド名が lowerCamelCase でなければ C++ から乗り換えたのだがなあ…

318 :デフォルトの名無しさん:04/05/02 20:18
郷に入っては郷に従え。
そもそも乗り換えでなく両方できるようにすればいいじゃん。

319 :デフォルトの名無しさん:04/05/02 20:32
やる気だよな
何でもかんでも

320 :デフォルトの名無しさん:04/05/02 20:46
いやまあ仕事で使うとかならすんなり郷に従うんだけども

321 :デフォルトの名無しさん:04/05/02 22:18
getter, setterのこともあるから、メソッドの先頭が小文字ってのには賛成だな


322 :デフォルトの名無しさん:04/05/02 23:37
class Aaa {
 this(int x){}
}
class Bbb : Aaa{
}

コンパイルエラー。//constructor this (int x) does not match argument types ()

http://www.kmonos.net/alang/d/class.html#constructorsを参照するに、
Bbbにthis(){}が生成され、this(){ super(); }と挿入され、基底クラスにはthis()がないからエラー、か?

323 :デフォルトの名無しさん:04/05/02 23:39
そうだね。
このパターンなら、エラーにならない方がおかしい。

324 :ミナツキ サヤ ◆SAYAC2HJWE :04/05/02 23:49
324

325 :デフォルトの名無しさん:04/05/03 01:59
>>323
コンストラクタは基底クラス任せって、ありえないかなぁ?
必要な関数だけオーバーライドして使いたいのに。

326 :デフォルトの名無しさん:04/05/03 02:25
違う、this()がないのが悪い。
だがthis()はされたくない。
this(){ }かthis(){ assert(0); }とでもしておけと言うのか?

327 :デフォルトの名無しさん:04/05/03 02:30
class Aaa { 
  this(int x){} 

class Bbb : Aaa{ 
  int i = 3;
  this(){ super(i); }


void main(){
}

これじゃあかんの?


328 :デフォルトの名無しさん:04/05/03 02:44
C++ 伝統のイディオムで

class A {
private:
this();
}

だろ。
ファイル内すべて friend になる D だとリンクエラーまで
待たなきゃいけないケースが多そうだけど。

329 :デフォルトの名無しさん:04/05/03 02:48
どうでもいいけどデフォルト引数実装してないのかね?
0.86だとテンプレートデフォルト引数を実装とかあるけど

330 :デフォルトの名無しさん:04/05/03 03:44
>>328
====test1.d=========================
class Aaa { private this(){ } }
====test2.d=========================
import test1;
class Bbb : Aaa { }
===================================
dmd -c test2.dで、コンパイル通りません。
class Bbb : Aaa { this(){ } }でもコンパイル通りません。どうすりゃいいんだ。

====sub.d===========================
class Aaa {
 int x; int[] v;
 this(int x, int[] v){ this.x = x; this.v = v.dup; }
 abstract int get(int n);
}
class Bbb : Aaa {
 override int get(int n){ return x + v[n]; }
}
class Ccc : Aaa {
 override int get(int n){ return x * v[n]; }
}
====main.d===========================
import sub.d
int main(){
 Bbb b = new Bbb(3,5,7);
 Ccc c = new Ccc(2,8,8);
===================================
といったことをやるのに、そもそもnew Bbb(3,5,7)ができないんだが、どうすればいいんだ。ヴァー

331 :デフォルトの名無しさん:04/05/03 04:14
>>330
氏ね。

332 :デフォルトの名無しさん:04/05/03 04:19
>>330
「デフォルトコンストラクタの呼び出し禁止」イディオムはこの場合以下のように使う。

後者は意味不明。何の呼び出しを期待しているのかな?

class A {
public:
this(int a) {}
}

class B : public A {
public:
this(int a) { super(a); }
private:
this();
}

int main() {
A a = new B(0);
return 0;
}

333 :デフォルトの名無しさん:04/05/03 10:53
>>322
その例の class B みたく public: this(int a) があるときって
private: this() って必要だっけか?

334 :デフォルトの名無しさん:04/05/03 11:19
>>333
デフォルトコンストラクタがなければ、そもそも呼びようもないからね。

335 :デフォルトの名無しさん:04/05/03 17:10
ああ確かに>>332ではいらないな。
大本のレスでは、拡張コンストラクタもなくてエラーが出ていたようだけど

336 :デフォルトの名無しさん:04/05/04 16:42
結局は this(int x){ super(x); } か。 それを書かずとも
B b = new B(x); で基底の this(int x)を勝手に呼び出して欲しかったんだよ。
いちいち全部の派生で書くのはスマートじゃないと思ってさ。
これで黙っとくよ。 スレの浪費すまんかった。

337 :デフォルトの名無しさん:04/05/04 16:52
>>いちいち全部の派生で書くのはスマートじゃないと思ってさ。

オブジェクトの構築方法はクラスと密接に関わってるから
必要なものを全部書くべきなのが当たり前。

338 :デフォルトの名無しさん:04/05/04 16:58
単なるメソッドの追加なら
>>128とかに例があるけど・・・
これがバグか仕様かは不明

339 :デフォルトの名無しさん:04/05/05 01:32
x[] = y[] + z[]; は not implemented なんですか?

340 :デフォルトの名無しさん:04/05/05 02:41
x.length = y.length + z.length;
x[] = y[];
x[y.length..(y.length+zlength-1)] = z[];

でいいんでないかい?


341 :デフォルトの名無しさん:04/05/05 02:42
もとい。
x = y ~ z;

342 :デフォルトの名無しさん:04/05/05 09:40
配列の中身を加算するとかじゃないの?

343 :デフォルトの名無しさん:04/05/05 16:26
D言語いいなぁ。何よりポインタが削られてないのがいい。

344 :デフォルトの名無しさん:04/05/05 16:27
SQLで言うところのUNION?
要望出してみると面白いね

345 :デフォルトの名無しさん:04/05/05 16:37
D言語で数値演算ライブラリとか既にあるのでしょうか?
あったら紹介してください mOm

346 :デフォルトの名無しさん:04/05/05 17:20
>>345
std.math
ttp://p17.aaacafe.ne.jp/%7Elabamba/?std.math

ぐぐればあっさり見つかるぞなもし

347 :デフォルトの名無しさん:04/05/05 20:34
ん?これって標準の数学ライブラリなのでは?
Matrixライブラリとか、数値積分とか、超長周期乱数の生成とか・・・etc は?


348 :デフォルトの名無しさん:04/05/05 20:38
まず誰かD言語でOS造ってくれよ

349 :デフォルトの名無しさん:04/05/05 21:09
D言語はGCがあるからちょっと無理なのでは?


350 :デフォルトの名無しさん:04/05/05 21:21
DunixとかDinuxとか?

351 :デフォルトの名無しさん:04/05/05 21:26
DNU

352 :デフォルトの名無しさん:04/05/05 22:27
DQN

353 :デフォルトの名無しさん:04/05/05 22:29
>>352
うまい!ざぶとん1枚。

354 :デフォルトの名無しさん:04/05/05 22:32
自演・・・か

355 :デフォルトの名無しさん:04/05/05 22:50
>>352
うまい!ざぶとん1枚。

356 :デフォルトの名無しさん:04/05/06 11:52
>>347
とりあえずMersenne Twisterは移植されてるのでそれを使うよろし。
http://www.digitalmars.com/drn-bin/wwwnews?D/17878

357 :デフォルトの名無しさん:04/05/06 12:47
0.86から、debug { … } 文の説明から
>There is no else clause for a debug statement, as debug statements
> should add code, not subtract code.
の一文が消えてelseが付けられるようになっているみたいなんだけど、
ニュースグループでこの辺何か議論あったっけ?

358 :デフォルトの名無しさん:04/05/06 15:08
>>349
(゚Д゚)ハァ?

359 :デフォルトの名無しさん:04/05/06 16:57
>>358
(´ _ `)ゝハァ

360 :デフォルトの名無しさん:04/05/07 03:49
>>356
メルセンヌ素数の19937だろ?これは証明はよく知らないけど、アルゴリズムは頻繁に使わせてもらってる。
超長周期乱数だな。gslとか ublas をいちいちリンクするのも億劫なので自分でC++に
実装してみたけどきめて簡単。M系列知ってりゃわずか10分程度で誰でも実装できる。
だから作っていただいてもあんまりありがたくないかも?
勉強がてらC++のマトリックスライブラリでも移植してみよかな。express template の
実装方法知らないから所詮オナニーツールにしかならんけどね。

361 :デフォルトの名無しさん:04/05/07 03:52
Expression Template

362 :デフォルトの名無しさん:04/05/07 12:05
C++相談室にこんなアホが居る

http://pc5.2ch.net/test/read.cgi/tech/1082047479/728

D言語はC++もできなかったマヌケがやる言語だとよ。

363 :デフォルトの名無しさん:04/05/07 12:09
>362
スルーできんお前もアホ

364 :デフォルトの名無しさん:04/05/07 12:12
>>363
それをスルーできんお前は糞

365 :デフォルトの名無しさん:04/05/07 12:14
>>362
言ってる事は当たってるだけに痛い・・・・・

366 :デフォルトの名無しさん:04/05/07 12:23
C++さんざん書いてきたがやっぱり生産性が高いとはいいがたい。
余計なことをオートでやってくれてかつC++にあったわずらわしく不必要な
仕様を整理する目的でDがあるんだろ?
ガベコレもどきの機能をboost使えなんてが正常な状況か?

367 :デフォルトの名無しさん:04/05/07 12:32
>>366
C++標準化委員会はわずらわしく不必要な仕様を整理するか
互換性を重視するかで、互換性を取った。

D言語が互換性をほぼ無視して整理する方を取ったんだろ。
そりゃすっきりして当たり前。でもC++にはCという強力で豊富
なライブラリがあったが、D言語は1からのスタートだろ。Java
とかC#とか新言語目白押しの現在、さぞ苦しいだろうなあ。

368 :デフォルトの名無しさん:04/05/07 12:33
突っ込まれるとまずいので一応訂正。
Javaは新言語ではないが、どちらかと言うとCとの互換性がない
点でD言語に似ている。

369 :デフォルトの名無しさん:04/05/07 12:36
Java/C#とDを同じ位置づけしてる点でなーんも知らんバカ。
なんでasmを埋め込む仕様にしたか考えてみろ。

370 :デフォルトの名無しさん:04/05/07 12:40
Cのライブラリをそのまま使えないのはJavaもC#も同じ。
あの仕様草案みてるとC#よりもっとハード/システム寄りのことができてかつ
C#より洗練された感じ。

371 :デフォルトの名無しさん:04/05/07 12:45
C#は新たな言語というよりJavaそのものだ。そこそこ速いけど。
ハードウェアを直接扱うことはできない。

372 :デフォルトの名無しさん:04/05/07 12:51
>>369-371
はぁ〜という事はD言語はC系と同じくネイティブを吐く系なのね。
まあ知ってるけどな。今更作ってどうすんの〜って感じ。
そんなにまでしてM$に言語の利権買って欲しいのかねぇ。それ
ともLinuxで細々と極一部の言語マニアに愛されてマイナー路線
を行く、か?ププ

373 :デフォルトの名無しさん:04/05/07 12:54
>はぁ〜という事はD言語はC系と同じくネイティブを吐く系なのね。
あたりまえだろが。そんなことも知らんかったのかい。

>まあ知ってるけどな
嘘つけ。

374 :デフォルトの名無しさん:04/05/07 12:56
>>373
必死だなププププ

375 :デフォルトの名無しさん:04/05/07 13:22
ばかばっか。

376 :デフォルトの名無しさん:04/05/07 13:59
仕事で使おうなんて思ってるやつはいないだろ。
書いてて楽しい言語だから遊んでるんだよ

377 :デフォルトの名無しさん:04/05/07 14:39
>>374
図星を突かれるとすぐ「必死」っていってごまかしますねw

378 :367,372,374:04/05/07 15:17
D言語はJavaやC#と同じVMや実行エンジン必要とするC#と同じと思ってまツタ。
それを指摘されたのでムッとして皮肉しか言えなくなったんでちゅ。
御免なさい。

379 :デフォルトの名無しさん:04/05/07 15:29
>>377
貴様の思考回路と一緒にしないで下さいますぅ?

380 :デフォルトの名無しさん:04/05/07 15:30
>>378
あらぁ〜、俺最初から知ってて書いたのにまだそんなたわけた
事を・・・・・これだからD厨は(自己規制

381 :デフォルトの名無しさん:04/05/07 15:47
連休当たりから変な奴が出てきてるなあ。

>>380
D厨というか、単に煽って楽しんでるだけのバカだと思うが。
おそらく、Dは使えない。

382 :デフォルトの名無しさん:04/05/07 16:05
>>381
ああ、D言語を触っている香具師が>>378みたいなのばかりだと
思うと、言語の善し悪しより先に使っている人間が嫌いになって
しまうよ。
>>376みたいな香具師は好感が持てるんだが。

383 :デフォルトの名無しさん:04/05/07 16:39
D 0.87ー。

384 :378:04/05/07 17:46
いいよ嫌いになってくれて、俺はC++しか使わないし。D使う奴は新し物好きの尻の軽い
あほの節操なしとしか考えてないからな。

385 :デフォルトの名無しさん:04/05/07 17:52
なんでいちいち煽るようなこと書くかなぁ。自分の程度がしれるからやめた方がいいよ。

386 :デフォルトの名無しさん:04/05/07 17:55
お前ら、C++スレを荒らすなよ。

マイナー言語でオナニーするのは勝手だが、他の人間に迷惑をかけるな。

387 :デフォルトの名無しさん:04/05/07 18:15
Allegroってなに?
http://www14.org1.com/~puchinya/index.php?D%B8%C0%B8%ECImportLib


388 :デフォルトの名無しさん:04/05/07 19:49
C++スレからのお誘いだな。じゃ荒らしに入ってくるわ。

http://pc5.2ch.net/test/read.cgi/tech/1082047479/

389 :デフォルトの名無しさん:04/05/07 20:52
>>383
D 0.88では?


390 :383:04/05/07 21:05
>>389
4時間前は0.87だったのよ。
あー、Walterタンさりげなく直してる。。。
http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D/633

391 :デフォルトの名無しさん:04/05/07 21:56
漏れはHSPとD、コンパイラが先にオープンソースになった方を使う。

392 :デフォルトの名無しさん:04/05/07 22:14
住み分けろよボケ
他所の言語を貶してる奴は自分の好みの言語すら使いこなせないアマグラマだけだ

393 :デフォルトの名無しさん:04/05/07 22:29
D言語で遊んではいたけど、これってそんなメジャーになれる言語とは思ってなかったなあ。
まあ良い。おもしろいおもちゃだし。

394 :デフォルトの名無しさん:04/05/07 22:35
ぶっちゃけDelphyのポジションは食うと思う。


395 :デフォルトの名無しさん:04/05/07 22:42
Delphy どころか C++の大部分食える。
ガベコレに動作モードのレベル設定できるようになればほとんどCも食えるだろ。

396 :デフォルトの名無しさん:04/05/07 22:47
>>387
Allegro - A game programming library
http://alleg.sourceforge.net/

ぐぐってみたけど、日本語で読める情報は全くと言っていいほど
存在しないみたい。海外だとSDLほどではないが人気があるのに。

397 :デフォルトの名無しさん:04/05/07 23:05
複素数の取り扱いがMatlabのごとく1+2iなのかぁ。
ある種の教育受けた奴は虚数単位を後ろにつけることを嫌うんだがな。

398 :デフォルトの名無しさん:04/05/07 23:20
C++とD言語は住み分けじゃなくて置き換わるかどうかが興味のあるところなんだよ。
ソフトだけでなくハードウェアの世界でもC++ベースのHDLが頓挫した今となっては
C++に置き換わる言語が求められてる。

399 :デフォルトの名無しさん:04/05/07 23:24
>>397
んー、構文上の都合だろうね。

400 :デフォルトの名無しさん:04/05/07 23:31
400

401 :デフォルトの名無しさん:04/05/07 23:35
日本語のような余りにも複雑な母国語と英語を使い分けてるんだ、複素数の扱いなんてどうってことないだろ

402 :デフォルトの名無しさん:04/05/07 23:56
日本語って複雑な言語の代表みたいに言われることが多いけど
文字が複雑なだけでそれ以外 (発音や構文なんか) はかなり単純な部類だよ。

403 :デフォルトの名無しさん:04/05/08 00:30
>>397
>ある種の教育
俺のことだな。電気もしくは電子系では1+j1とか書くからな…

404 :デフォルトの名無しさん:04/05/08 00:54
80近いアルファベットが存在するキチガイ語だから十分ややこしいよw

405 :デフォルトの名無しさん:04/05/08 00:59
>>403
虚数単位を後ろに書くのはキモイよね。j->iでも構わないけどさ。

406 :デフォルトの名無しさん:04/05/08 01:01
で、複何たらってのは何に使うの?

407 :デフォルトの名無しさん:04/05/08 01:01
変数と区別がつかないじゃん。という文法上の制限だわな。

408 :デフォルトの名無しさん:04/05/08 01:16
>>407
その通り。わかっちゃいるんだけどさ。
comples<double>(10,20)なんて書くよかずっといい。

409 :デフォルトの名無しさん:04/05/08 01:50
すんません。情報工学系ですが虚数単位は後ろです。
a + biの形式。電気電子は前なのか…まぁ表記上の問題だろうけど
こういうの結構文化というか確執があるよな。
句読点の代わりにコンマとピリオドを使えとかいう文化とかな。
ウチのことだけどな。

ってここD言語スレか…

410 :デフォルトの名無しさん:04/05/08 01:58
すまんがほんと何に使うのか教えて

411 :デフォルトの名無しさん:04/05/08 02:05
>>409
>句読点の代わりにコンマとピリオドを使えとかいう文化とかな。

理系の論文はたいていそうだよ。

412 :デフォルトの名無しさん:04/05/08 02:06
数学勉強しれ、少年。

413 :デフォルトの名無しさん:04/05/08 02:08
>>412は国語を勉強しろ

414 :デフォルトの名無しさん:04/05/08 02:09
>396
日本語表示能力がイマイチだからね。
(使う文字の分だけ独自仕様のフォントを用意しないといけない。)
FreeTypeを組み合わせれば何とか実用にはなるが。

415 :デフォルトの名無しさん:04/05/08 02:10
昔、縦書きを想定したフォントしかなかったから横書きにすると上のほうに句読点が
来るから仕方なしに",."で代用した。ところが情報系ののような新しい分野の書物
は下に位置するフォントもできたので"。、"で統一されてるものが多いはずだけどな。

情報系でほんとに後ろか?情報科学系はともかく情報工学っていうのはもともと電気系だぜ。
電気出身者が数多く教鞭とってるはずだ。単に気づいてないだけじゃないだろうね?
虚数単位はベクトルの基底と同じだから前に書く。そもそも数学関係の√(-1)という意味合いより
正弦波の\pi/2の位相ずれを表す意味合いが強い。real<-->cos(ωt),imag <--> -sin(ωt)複素平面の
図式を常に意識してa+jbと書く。iは電流に使われることが多いのでj使うがこっちは別にどっちでも
気にしないな。

416 :デフォルトの名無しさん:04/05/08 02:28
何故そこまで話を引っ張るのか

417 :デフォルトの名無しさん:04/05/08 16:11
>>396
ありがとう。

418 :デフォルトの名無しさん:04/05/08 18:23
>>416
後ろについてると発疹が出て痒みで眠れないから
地球上から絶滅して欲しいんだってさ。

419 :デフォルトの名無しさん:04/05/08 19:03
オートとマニュアルメモリ操作用のポインタをそれぞれ用意できないのか?

420 :デフォルトの名無しさん:04/05/09 14:48
>>419
class Class1{
int a;
}
void main()
{
auto Class1 autoClass1 = new Class1();
Class1 class1 = new Class1();
}
ってかけるが、そういうことではなく?
manual int p[]=new int[100];
とやっておくと、あとで、
delete p;
ってやりたいってこと?
普通に、int manualP[]=new int[100];
とでもして、
delete manualP;
とすればいいのでは?


421 :デフォルトの名無しさん:04/05/16 17:52
http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D/1228
http://www.digitalmars.com/d/mixin.html
http://www.kmonos.net/alang/d/mixin.html
北ーーーーーーーーー!!!

422 :デフォルトの名無しさん:04/05/16 20:21
Dのテンプレートが、ますます「賢いプリプロセッサ」になってきたような気が。
悪くは無いけど、スパゲッティ化しやすいようにも思う。

423 :デフォルトの名無しさん:04/05/16 20:36
何が変わったかおせーて

424 :デフォルトの名無しさん:04/05/16 20:59
mixinの実装は大体終わってるみたいだから次の版で付くのかな?
昆虫採集が楽しみだね。えへへ…。DTLもmixinが付いた後に出るみたいだしね。


425 :デフォルトの名無しさん:04/05/16 21:22
>>422
C++ のテンプレートだって賢いプリプロセッサだろ?

426 :デフォルトの名無しさん:04/05/16 21:56
教えて教えて→何故か逆ギレ、見当違いなところに噛み付いてくる
の繰り返し。

この人いつ消えてくれるのかなぁ。

427 :デフォルトの名無しさん:04/05/16 22:06
>>425
ハァ?ばっかじゃねーの
おまえは一生C++やってろ

428 :デフォルトの名無しさん:04/05/16 22:34
>>472
反論できなんですね(ワラ

429 :デフォルトの名無しさん:04/05/16 22:36
できなん

430 :デフォルトの名無しさん:04/05/16 23:31
>>421
この言語久々に仕様をみたら、だんだん気合が入ってきたな
マイクロソフトが採用するようなことがあったら、ちょっと追いたいね。


431 :デフォルトの名無しさん:04/05/16 23:54
最初、C風の書き方ができるObjectPascalと思ってしまった、、、

432 :デフォルトの名無しさん:04/05/17 01:28
expression templateみたいなのがもっと簡単に実現できるようにはならんのか?

433 :デフォルトの名無しさん:04/05/17 02:21
E言語
http://www.skyhunter.com/marcs/ewalnut.html


434 :デフォルトの名無しさん:04/05/17 02:27
でも、C++'程度じゃないの?
なにがすごいの?

435 :デフォルトの名無しさん:04/05/17 02:48
やねうら○の盛り上がりかた

436 :デフォルトの名無しさん:04/05/17 06:05
>>433
F-Z言語
http://www.kmonos.net/alang/abc/

437 :デフォルトの名無しさん:04/05/17 06:40
>>430
コンパイルするのにライブラリのソースが必要な言語に、プロプライエタリな企業が乗ってくるとは思えないのだが。

438 :デフォルトの名無しさん:04/05/17 07:20
>>437

別にC/C++と同じで、関数とクラスの宣言さえあれば中身のソースは要らんのだが…。
そりゃ、今のところオープンソースのライブラリしか書いてる人いないけど。

439 :デフォルトの名無しさん:04/05/17 07:39
>>438
template はソース要るでしょ? もちろんC++でも要るんだけど。
一方、.NET generics や Java generics では要らないわけで。(できることも少ないけど)

440 :デフォルトの名無しさん:04/05/17 07:53
>>439
自分でおかしなこと言ってると思わないか?
C++もDも必要な場合があるなら
MSがC++を採用してDを採用しない理由にはなってないだろ。

441 :デフォルトの名無しさん:04/05/17 08:05
>>440
C++を採用してDを採用しない理由にはなってないが、
C#を採用してDを採用しない理由にはなるだろう?

442 :デフォルトの名無しさん:04/05/17 08:09
それは論点をずらしてるだけやん。
>>437見てみなよ。
「コンパイルするのにライブラリのソースが必要な言語」に
C++もDも含まれるなら、C++に乗ったMSがDに乗ってくると思えないことは無いでしょ。

443 :デフォルトの名無しさん:04/05/17 08:14
そもそもDの標準ライブラリは仕様が決められるだけであって実装は(仕様に従っていれば)自由なんでしょ?
コンパイルするのにソースが必要かどうかなんてどーでもいいような気がするが。

444 :デフォルトの名無しさん:04/05/17 08:36
>>437
つーか、MFCとか、無くてもいいのにソース付属してるし

445 :デフォルトの名無しさん:04/05/19 00:12
>>444
自分に使いやすく改造してからでないとMFCなんぞとても使えん。

446 :デフォルトの名無しさん:04/05/19 00:15
そういう話をしてるんじゃないだろ

447 :デフォルトの名無しさん:04/05/19 00:23
クラスを第一引数とする関数は、そのクラスのメソッドとしても振舞うって動作は、バグか仕様なのかわかった?

448 :デフォルトの名無しさん:04/05/19 09:41
わからん。
けど、クラスを第一引数にしては駄目で、配列を第一引数にするとその配列のメソッド
のように使えるってことは分かった。
std.stringのjoinとかsplitとかperlとかと引数の順番が変わってて、すべて、
文字列が最初に来るようになってるから仕様なんじゃないかと思う。
確認したかったら、ニュースグループに質問してみるしかないと思うけど、
英語苦手なので終わり。なさけなや。これじゃだめなので、英語書いてみる。
チェックしてみてください。機械翻訳ですが、、、。

split("a,b",","); is written to be "a,b".split(",");, and compile passes. Is this specification?
これでよければ、ニュースグループに投げてみます。


449 :デフォルトの名無しさん:04/05/19 09:50
>>448
http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D/1295
<c89ap4$10go$1@digitaldaemon.com>
この話題でしょ?

450 :448:04/05/19 14:38
>>449
なるほど。ニュースグループ読んでないのでわかりませんでした。
はずかしー。
読んでみましたが、分からないし悔しい。
すいませんが、どういったないようだったか教えてください。
なんだか、教えて君になっててやだなぁ。

451 :デフォルトの名無しさん:04/05/19 23:48
>>450
前略
「これは非常に涼しいと私は考えます。」
以下略

452 :デフォルトの名無しさん:04/05/19 23:51
つまりはチャーリーへのお礼のメッセージだな

453 :448:04/05/20 12:18
coolくらいはわかるョ!
ビーバス&バッドヘッドで何度も聞いたんで。
大好きな単語だよ。
チャーリーって誰?
声しか聞こえない正体不明の人?
で、仕様なんですか?わかんねぇよう。
Thanks,
448

454 :デフォルトの名無しさん:04/05/20 12:57
↓のようなコードが通るのが今ひとつ納得できない、、、

import std.c.stdio;
int main(){
hoge();
return 0;
}

void hoge(){
void hoge(){ printf("hoge\n"); }

hoge(); // どっちのhoge()を呼んでいる?
}

――実行例――――――――
hoge
―――――――――――――

dmd v0.88で確認。
名前解決できずにコンパイルエラー、にはならないのかな。

あと全然上の話題とは関係ないけれど、先日yaneSDK4Dのytl/vectorで-releaseオプションを付けないでビルドするとリンクエラーが出る症状に出会ってしまって
原因を特定するまで延々とハマってました。まる。

455 :ヽ(´ー`)ノ ◆.ogCuANUcE :04/05/20 13:13
>>454
普通に考えたら scope 的に近い、関数内関数の方だと思う。


class A {
    int x;
    
    this(int x) {
        // x は 引き数の x
        this.x = x;
    }
}

…と同じ問題と考えれば納得行くかと。

// this に相当するモノがないから、recursive call したい時に困る気がするが。


456 :デフォルトの名無しさん:04/05/20 22:10
親参照できないの?::みたく

457 :デフォルトの名無しさん:04/05/20 22:29
グローバルな名前空間という意味なら . が使える
基底クラスのメンバ関数を明示的に、ならクラスの識別子を使う

458 :デフォルトの名無しさん:04/05/21 01:36
int main(){
 if(test && test){ }
 return 0;
}

bool test(){
 return true;
}
======================================
test.d(2): bit() does not have a boolean value

プロパティ使うのに困る。

459 :デフォルトの名無しさん:04/05/21 09:27
プロパティの設定してないだけとか

460 :デフォルトの名無しさん:04/05/24 00:56
D言語のMixin凄いと思うんだけど、このスレではスルーだね。
結構ありきたりなのかな?

461 :デフォルトの名無しさん:04/05/24 00:59
>>460
単なる define じゃん。スコープもひとつ持ち上がるし、混乱の元になると思う。

462 :デフォルトの名無しさん:04/05/26 22:50
ちゃくちゃくとバージョンが1に近づいているわけですが・・・
ライブラリさっぱりな現状でも1を名乗って大丈夫なの?
趣味グラマ希望の星のDだけにちょっと心配

463 :デフォルトの名無しさん:04/05/26 23:14
0.99の次は0.100ですから。

464 :デフォルトの名無しさん:04/05/26 23:20
0.991とか。0.999の次は0.9991

465 :デフォルトの名無しさん:04/05/26 23:38
0.99の次は-0.99です。次に-0.98になります。

466 :デフォルトの名無しさん:04/05/27 00:22
補数みたいやな…

467 :デフォルトの名無しさん:04/05/27 00:33
作者が死ぬと version 1 になります。

468 :デフォルトの名無しさん:04/05/27 00:59
趣味グラマ御用達言語ということは、HSPと争う事になるわけだ

469 :デフォルトの名無しさん:04/05/27 14:54
やっぱり趣味グラマ専用か。糞だと思ってたよ最初から。

470 :デフォルトの名無しさん:04/05/27 15:30
phobos自分で作れますか?
なんかobject.dのコンパイルがうまくいきません。
class ClassInfo : Object のコンパイルで死んでる?

471 :470:04/05/28 05:56
他の人の環境ではどうでしょう。
dmd -c object.dでコンパイル出来ます?
src/phobos/object.d って奴です。
自分の使ったコンパイラは0.90の物で、コンパイル時に

Assertion failure: '!needThis()' on line 135 in file 'tocsym.c'

abnormal program termination

というエラーが出ます。

472 :デフォルトの名無しさん:04/05/28 09:38
>>471
Dのことは初心者だけど、
同じことを試してみたら、同様のエラーになりました。参考までに。

473 :470:04/05/28 12:52
>>472
テストありがとうございます。
さてどうしたものかな。

474 :デフォルトの名無しさん:04/05/29 01:14
>>471
dのfrontendでやってることと同じようなことをやればいいのではないかと思います。
cygwin用のものなら作りました。
きっと、autoconfとかわからないとつらいんだと思いますが、、、。


475 :デフォルトの名無しさん:04/05/29 15:52
typeof キタ━━━━(゚∀゚)━━━━ !!!!!

476 :デフォルトの名無しさん:04/05/29 15:56
>>427は早く死ね

477 :デフォルトの名無しさん:04/05/29 15:57
バリアント的な使い方してるな・・・

478 :470:04/05/29 16:26
>>474
最新版の0.91ではコンパイルに成功するようになりました。
前のバージョンに何か問題があったのかもしれません。
お騒がせしました。

479 :デフォルトの名無しさん:04/05/29 16:30
クラスの継承関係に依存しないインタフェースプログラムが作れるとか?
いや便利かどうかはさておいて。

480 :本7:04/05/29 19:02
マニアックな方向に機能拡張されすぎてc++と同じ道を辿りそうになってきたな。

とりあえず俺はC+GC+クラスって以上の使い方は避けるようにするが。
いちおう期待してるんで仕事で使ってみて実戦テストしてみるけど。
Dを採用して金になる方法を作らねばな。

481 :デフォルトの名無しさん:04/05/29 19:11
>>1は綴りを間違えやすい方ですね。
D言語って何ですか?C言語の間違いですか?

482 :デフォルトの名無しさん:04/05/29 19:18
開発環境次第だな。
立場的には安定性のあるDelphyみたいな扱いか。

483 :デフォルトの名無しさん:04/05/29 19:37
開発スタイルがXPで、ネイティブコードである必要が在るサーバーなどの開発なら文句なしでD言語だね


484 :デフォルトの名無しさん:04/05/29 22:45
opCastが追加されたので、ちょっと嬉しかったのだが、
> there can be only one opCast per struct or class.
うーん、、、

485 :デフォルトの名無しさん:04/05/30 04:49
>>462
VisualC1.0が完璧だったと?

486 :デフォルトの名無しさん:04/05/30 13:32
某OSなんかバージョンが4桁になってようやくマシになった感じだしな。

487 :デフォルトの名無しさん:04/05/30 14:53
>>485
うちの会社にはなぜかVC++1.5がなくていつまでもVC++1.0
MS-DOSやWin16用のコンパイル環境としてしばらく重宝してたっけな
さすがに最近はつかわないけどね

>>486
Windows2000のことなら実質WNT5だから
もともとマシだったと思うけど

488 :デフォルトの名無しさん:04/05/30 17:57
なぜかlibmysqlclient.soとのリンクに失敗する。


489 :デフォルトの名無しさん:04/05/30 18:01
extrn (C)を使うときは特別な指定を加えなきゃいけなくなったの?


490 :デフォルトの名無しさん:04/05/30 20:07
位置づけ的にperlに対するrubyみたいな言語だな
かぶりまくりでとても流行る気がしない

491 :デフォルトの名無しさん:04/05/30 20:10
IDEとライブラリ次第。サーバーとしての需要はある。

492 :デフォルトの名無しさん:04/05/30 20:14
Apacheのレプリカ作ってみようかなぁ。

493 :デフォルトの名無しさん:04/05/31 19:35
同一プラットフォームなのに移植なんてあふぉらしいだろ
トランスレーター作れよ

494 :デフォルトの名無しさん:04/06/01 01:09
同一言語なのに移植なんてあふぉらしいだろ
トランスレーター作れよ

495 :デフォルトの名無しさん:04/06/01 01:16
GUIライブラリはどのくらい機能があるの?
SWTと同じようなラッピングが主体?

496 :デフォルトの名無しさん:04/06/01 10:41
>>495
んなもんD自体にあるわけないだろ

497 :デフォルトの名無しさん:04/06/01 14:24
テンプレートはどこまでを標準にするんだ?boost相当?

498 :デフォルトの名無しさん:04/06/02 08:34
ここには商用と非商用の区別のつかない人はいませんか?

499 :デフォルトの名無しさん:04/06/02 09:26
まともな実行ファイルが吐き出せるなら全部商用だよ
Rubyとかも気象庁とかで使われてたとかって話があったような

500 :デフォルトの名無しさん:04/06/02 10:35
金が取れる水準のもの=商用ってわけじゃないと思うんだが。

501 :デフォルトの名無しさん:04/06/02 15:39
cgi開発用に、
cygwin->freeBSD用のクロスコンパイラの作り方をまとめました。
aaacafeで使えます。
D言語用に作ったのですが、c,c++も動きます。c,c++だけにしたければオプションでそうできます。
http://www.wikiroom.com/sakurai/?freebsd%A5%AF%A5%ED%A5%B9%A5%B3%A5%F3%A5%D1%A5%A4%A5%EB
参考にしてください。

また、クロスコンパイラのバイナリ配信をしています。
http://www.wikiroom.com/sakurai/?freebsd%A5%AF%A5%ED%A5%B9%A5%B3%A5%F3%A5%D1%A5%A4%A5%E9%A5%D0%A5%A4%A5%CA%A5%EA
c,c++,dをfreebsd用にコンパイルできます。
linux用も作ろうと思っていますが先人の知恵があるのでこれ理解してからにしようと思っています。
インストール手順もずっと楽になりました。

これで、問題のあるCGI作ってサーバー止めたりするようなCGI作らないでくださいね。


502 :デフォルトの名無しさん:04/06/02 18:30
>>499
そんな事実はない。

503 :デフォルトの名無しさん:04/06/02 22:01
>>502
ttp://ruby.gfd-dennou.org/workshop200303/

504 :デフォルトの名無しさん:04/06/02 23:13
>>503
>>502がどっちに対していったのかは知らないが、>>499の2行目はともかく1行目は事実だろ。
有料なら商用、無料なら非商用。

505 :デフォルトの名無しさん:04/06/03 00:11
J2SEとか非商用だったんだ。

506 :デフォルトの名無しさん:04/06/03 01:00
エデュケーションパックとか特別なコンパイラ以外は全部商用可能だろ


507 :デフォルトの名無しさん:04/06/05 21:46
PerlライセンスとNYSLとの違いを教えてください。
Jcodeの一部分をほとんどコピペで終わらせてるので、
DJcodeのライセンスをしっかりしたいのですが、よくわからないのです。



508 :デフォルトの名無しさん:04/06/06 01:22
>>507
なぜNYSLが出てくるか分からないが、PerlのライセンスはGPLと
ArtisticLicenseのデュアルライセンス。後者は修正したら元と同じ
名前は使っちゃだめよ、という感じ(タブン
詳しくは自分で調べてくれ...

509 :デフォルトの名無しさん:04/06/06 01:29
ArtisticLicense2.0もGPLみたいなもんらしいが

510 :デフォルトの名無しさん:04/06/06 11:23
bit[] k;
k ~= 1;
k ~= 1;
printf("%d\n",k[0]);
printf("%d\n",k[1]);

実行結果

1
0


バグってる?
俺のミス?

511 :デフォルトの名無しさん:04/06/06 20:08
k[] ~= 1;
じゃないのか?

512 :デフォルトの名無しさん:04/06/06 20:11
配列演算子ってそういう使い方ができるのか
pop()にあたる処理はどう書くの?deleteじゃないと無理?

513 :デフォルトの名無しさん:04/06/06 20:12
k[] = 10;でkの中身全部を10にできなかったっけ?
それを応用してぇ。。。とか

514 :デフォルトの名無しさん:04/06/06 22:47
久しぶりに物理シミュレーションでもして遊ぶかと思って、
ついでにDMDどーなったかなーと思って公式行ってみたら
Mixin実装されてやんの。

俺的にはキターーーーーーーーー!

だったんだけど、このスレに来たらみんなさめまくりだし。

515 :デフォルトの名無しさん:04/06/06 23:05
>510
void main(){
bit[] k;
for(int i=0;i<8*20;i++)
k ~= 1,printf("%d ",k[i]);
}

これを動かしてみよう。

516 :デフォルトの名無しさん:04/06/08 08:04
0.92キター
うれしい改善点が多い。

517 :デフォルトの名無しさん:04/06/08 09:41
>>516
おお、本当だ。
キタ━━━━━━(゚∀゚)━━━━━━ !!

What's New for D 0.92
Jun 4, 2004
New/Changed Features
Modified Object.toString() and Object.print() to print out the name of the object instance's class.
The Expression within an array's brackets is now an AssignExpression (meaning that commas are no longer allowed).
Added default arguments to function parameters. Semantics are like C++.
Added package attribute for package level access.
Added operator overloads opAdd_r, opMul_r, opAnd_r, opOr_r, and opXor_r.
Modified overloading rules so functionality can be added to the lvalue of an operator overload for user defined rvalues without needing to modify the lvalue's class.
Bugs Fixed
Fixed parsing bug in typeof(this).func();
Fixed nested multiple inheritance bug with interfaces.
Fixed compare() bug in typeinfo's for int and uint. Thanks to Stewart Gordon.

518 :デフォルトの名無しさん:04/06/08 09:58
日本語訳頼むって云ったら怒る?

519 :デフォルトの名無しさん:04/06/08 12:05
AddedとFixedだけ読めば大体わかるっしょ。

520 :デフォルトの名無しさん:04/06/08 13:57
ますますC++に近づいてるような・・・w

521 :510:04/06/08 14:10
8ビット毎に1………?
訳わからん、長さ伸ばして代入するわ。

522 :デフォルトの名無しさん:04/06/08 16:49
デフォルト引数キター

523 :デフォルトの名無しさん:04/06/08 16:57
C# 2.0と比べると大分見劣りするね

524 :デフォルトの名無しさん:04/06/08 17:25
今回のバージョンうぷはうれぴー。


525 :デフォルトの名無しさん:04/06/08 17:52
デフォルト引数も演算子オーバーロードもぶっちゃけ新しい要素じゃないからバグフィクスのみと考えよう

526 :デフォルトの名無しさん:04/06/09 00:02
テンプレートは絶やめて欲しい。
あとDBまわりを強化して欲しい。

Apacheヘッダまわりは俺が担当するから。

527 :デフォルトの名無しさん:04/06/09 11:09
デフォルト引数はバグの元

528 :デフォルトの名無しさん:04/06/09 12:37
デフォルト値が存在する関数以外でデフォルト値を設けようとしない限りはバグら無いよ



529 :デフォルトの名無しさん:04/06/09 19:00
D言語は、「コンパイルするにはライブラリのソースが必要」ってスタンスなのかな?
デフォルト引数にしろ、マクロ並みのテンプレートにしろ、バイナリ化はできないよね?

530 :デフォルトの名無しさん:04/06/09 19:03
Cのオブジェクトにはリンクできるんじゃなかったっけ?んでC++はダメーみたいな。
試した事ないから良く分からんけど

531 :デフォルトの名無しさん:04/06/09 19:09
Dで書かれたライブラリの話です。
Cにはデフォルト引数もテンプレートも無いですし。

532 :デフォルトの名無しさん:04/06/09 19:20
そもそもテンプレートってものはコンパイラが分析して
使われる型の分だけクラスや関数を作るものじゃなかったっけ?
typeofとか駆使すればバリアブルに出来るのかなぁ


533 :デフォルトの名無しさん:04/06/09 20:26
>>529
デフォルト引数の場合は、宣言のみのソースとともにコンパイルする。

module test;
void defaultvalue(int i = 20) { printf("%d\n",i);

というのからobjを作っておいて、

module test;
void defaultvalue(int i = 20);

というのを一緒にコンパイルする。

534 :デフォルトの名無しさん:04/06/10 00:01
二箇所に同じようなのを書かないといけないの?
駄目駄目じゃん

535 :デフォルトの名無しさん:04/06/10 00:14
ダメダメってか、Libと同じようなもんだろ?

536 :デフォルトの名無しさん:04/06/10 00:18
デフォ引数もだけど、名前付き引数対応して欲しいなあ。

537 :デフォルトの名無しさん:04/06/10 00:32
>>534
これは、誰かがソースから宣言だけを抜き出すツールを作ってくれれば解決するんだが・・・。

538 :デフォルトの名無しさん:04/06/10 00:37
>>533
「宣言のみのソース」って、つまりヘッダファイルのことですか?

539 :デフォルトの名無しさん:04/06/10 02:15
Win32版の調子が悪いんだが俺だけか?
std.fileとかをimportするとリンカがシンボルが重複しているとか言って怒る。


540 :デフォルトの名無しさん:04/06/10 14:26
クラスの定義だけ取り出すツールがあればと思ったら、すでに書いてあった。
ddocとかもほしいし、そういったことが作れる人が一人いればすむ話なんでしょうなぁ。
俺は、つくりたいけど、頭悪いので作れない派です。なさけなや。
せめて仕様だけでも、書いて置くと良いのかなと思ったりする今日この頃。

541 :デフォルトの名無しさん:04/06/10 14:40
>>538
なんかトレンドに逆行してるな・・・
デフォルト引数の情報はobjが持つべきだろう。

思いつきの泥縄的に仕様追加していくとC++的混乱に陥るような。

542 :デフォルトの名無しさん:04/06/10 17:16
>>541
objに持ちようがないんですが、、、、

543 :デフォルトの名無しさん:04/06/10 17:31
持つことは可能だと思われ。
ただ、どちらにせよそのobjを使用するための定義が必要なので
あまり意味はないと思われるが。

544 :デフォルトの名無しさん:04/06/10 17:41
>ただ、どちらにせよそのobjを使用するための定義が必要なので
その定義がテキストである必要はまったくないが。
コンパイラがobjから直接読み取れればそれで十分。
まともなヘルプやドキュメンテーションツールとIDEがあるならね。

545 :デフォルトの名無しさん:04/06/10 17:50
イメージとしては、Javaのclassファイルのようなものかな。

546 :デフォルトの名無しさん:04/06/12 13:44
早く仕様確定しないと終わってしまうぞ。
いまの状態じゃあそびにしかつかえんし。
それにしてもC#よくできてるぞ。

547 :デフォルトの名無しさん:04/06/12 19:32
今回か前回か知らんけど、
クラスhogeのプロパティhoge.proをforeachに食わせるとき、
 foreach( ...; hoge.pro()){ ... }
としなければならなかったのが、
 foreach( ... ; hoge.pro ){ ... }
と出来るようになってるな。


hoge.pro()と、プロパティを関数として呼び出せなくなってるがな。
修正マンドクセ(´A`)

548 :デフォルトの名無しさん:04/06/12 19:38
まープロパティならそうアクセスできなきゃおかしいし

549 :デフォルトの名無しさん:04/06/12 20:40
明示的にプロパティとする構文が欲しいかも。
でも、シームレスに扱えるのが特長だからいらんか。

550 :デフォルトの名無しさん:04/06/12 20:48
これってゲッターセッターってある?
契約のin-out-bodyみたく getter-setterで宣言できないものかね

551 :デフォルトの名無しさん:04/06/12 21:18
property int hoge{
 /* getter */
}(int v){
 /* setter */
}(double v){
 /* setter */
}(int[] v){
 /* setter */
}(temp!<int> v){
 /* setter */
}


こうですか? 分かりません!

552 :デフォルトの名無しさん:04/06/12 21:19
冗長だなあ。。。
ドキュメントによると、
class Hoge {
public int hogehoge;
}
Hoge hoge = new Hoge()

とあって、
hoge.hogehoge = 1;
と書いてあったとき、

class Hoge {
public:
int hogehoge() { return hage; }
void hogehoge(int i) { hage = i; }
private:
int hage;
}

と変更してもそのまま使えるとか書いてあった。

553 :デフォルトの名無しさん:04/06/12 21:33
int hoge(int n) {
getter { return m_n; }
setter { m_n=n; return this.hoge; }
}

こんな感じにしてほしいw

554 :デフォルトの名無しさん:04/06/12 21:35
>>553
C#風やね。>>552 に対するメリットは?

555 :デフォルトの名無しさん:04/06/12 21:40
>>554
void hogehoge(int i) { hage = i; }
がセッターを意図してないのに
hogehoge = 1 で通ってしまうような事はなくなるんじゃない?

556 :デフォルトの名無しさん:04/06/12 22:01
Newsgroupsによるとまた仕様変更らすい・・・

C[1,2,3] = value;

opAssignIndex(type value,int index,int index2,int index3) { }

とかできるようになるのかなあ。。。

557 :デフォルトの名無しさん:04/06/12 22:05
この細かい変更具合からすると、今出回っているのはαのver0.92だな

558 :デフォルトの名無しさん:04/06/12 22:50
まずgetterに引数宣言など冗長だ。
よって>>552(デフォルト)は却下だ!
そしてsetterは複数型のrvalueをとりうる。
よって>>553など却下だ!

>>551のどこに冗長性があるのか>>552に小一時間問い詰めたい。

559 :デフォルトの名無しさん:04/06/12 23:08
>>558
今ようやく構文を理解したw
なるほど、面白いw

560 :デフォルトの名無しさん:04/06/12 23:48
getterをpublicにしてsetterをprotectedにしたい時は?

561 :デフォルトの名無しさん:04/06/13 00:04
>>560
うーん、こうかぁ? ダサいな。
protected property public int hoge{ /* public getter */ }
 (int v){ /* protected setter */ }
 (double v){ /* protected setter */ }
 public (int[] v){ /* public setter */ }
 (temp!<int> v){ /* protected setter */ }

こっちかね。
protected:
 property hoge{
  public int{ /* public getter */ }
  (int v){ /* protected setter */ }
  (double v){ /* protected setter */ }
  public:
   (int[] v){ /* public setter */ }
   (temp!<int> v){ /* public setter */ }
 }

さあ泥沼の様相を呈して参りました。

562 :デフォルトの名無しさん:04/06/13 00:09
property int hoge(in) {
getter { return m_n; }
setter (int n) {}
protected:
setter (double n) {}
}


563 :デフォルトの名無しさん:04/06/13 00:44
こんなバグ、テストで検出できるか自信無いぞ。

property int hoge{

 /* hoge's getter */
 property double moge{
  /* moge's getter */
 }(double v){
  /* moge's setter */
 // }

}(int v){
 /* hoge's setter ? */
}


564 :デフォルトの名無しさん:04/06/13 12:27
Delphiの配列プロパティみたいなのはできないの?

565 :デフォルトの名無しさん:04/06/13 13:01
いろいろごまかしてみたけど、
class HogeArray {
public:
this(int i) { m_hoge.length = i; }
int opIndex(int i) { return m_hoge[i]; }
int opIndex(int i,int v) { return m_hoge[i] = v; }
private:
int[] m_hoge;
}

class Hoge {
public:
this(int i) { m_hogeArray = new HogeArray(i); }
HogeArray hoge() { return m_hogeArray; }
private:
HogeArray m_hogeArray;
}

int main() {
Hoge hoge = new Hoge(10);
hoge.hoge()[1] = 20; // ()が無いとダメ
printf("%d\n",hoge.hoge[1]);
return 0;
}


566 :デフォルトの名無しさん:04/06/13 19:22
本家のフォーラムではこのゲッター・セッターの議論って出てるの?
デフォルト引数が採用された以上は、ここら辺の仕様をきっちり作って欲しいな

567 :デフォルトの名無しさん:04/06/13 20:56
何度も。
例えば
http://www.digitalmars.com/drn-bin/wwwnews?D/28801
ここから続くスレとか。

568 :デフォルトの名無しさん:04/06/14 14:46
void setColor(long color, int alpha = 100){};

hoge.setColor = 0x00FFFFFF;
が可能なのは何かやだな、慣れの問題?

569 :デフォルトの名無しさん:04/06/14 21:02
なんで仕様確定する必要あるのかね
そんなもん要らない

いい方にしか仕様は変わらないんだから、
それに合わせてコード直してやればいいだけの話。


570 :デフォルトの名無しさん:04/06/16 00:22
>>569
じゃあ毎月60000行の修正よろしく。

571 :デフォルトの名無しさん:04/06/16 19:02



572 :デフォルトの名無しさん:04/06/16 19:02
>>1
[C]言語の間違いだろ?ネタ?

573 :デフォルトの名無しさん:04/06/16 19:08
>>572
              ''"::::::::::::::::::::ヽ
         \   ∠::::ノ│ヘ::::::::::::: ヽ|ヽ ====
          \ / ●   ゞ::::::::::゙ |、|  ======
           '\       ─:::∪:: |、|
         ∠::|  X\   ● イ:::::|-|    そんなエサで私がネヴァ――!!☆
         ∠::、(_/     "/:::i/⌒l
            /\    ∪/::::i/ ̄/  =====
            〈  `ー┬イ::::∠ _ノ  ====
            \ \_ネヴァダ  \


574 :デフォルトの名無しさん:04/06/17 22:14
この言語はフォームデザイナって開発されてる?
リソース周りの扱いを紹介してるサンプルソースとかあったら教えてくだせぇ

575 :デフォルトの名無しさん:04/06/17 23:25
ない
GUI周りはまだ整ってない

576 :デフォルトの名無しさん:04/06/18 03:02
>>574
そもそもGUIライブラリ自体が(ry

577 :デフォルトの名無しさん:04/06/18 16:26
DIDEがコードセットやフォントなどの設定を保存してくれないばかりか
何かと不正終了を起こして使えなさ過ぎる・・・

何か他にオススメのIDEってあります?

578 :デフォルトの名無しさん:04/06/18 16:32
ない

579 :デフォルトの名無しさん:04/06/18 19:52
ないのか。ならエディタで作るか。
いい機会だからセレクト鯖でも作って見るよ。


580 :デフォルトの名無しさん:04/06/18 22:36
phobos.libがSymbol Undefinedを大量に吐いてどうにもならない
ライブラリは環境変数LIBに予め指定してあるのにどうして・・・おrz

581 :デフォルトの名無しさん:04/06/18 22:44
D言語の依存関係生成ツールってない?
makefileの形式で吐いてくれるようなやつ。

582 :580:04/06/18 23:34
自己解決。スマ祖。

583 :デフォルトの名無しさん:04/06/19 03:19
Dのselectも値-結果引数なのか。
ほぼそのままCをラップしてますな。
こういうところはDの配列スライスが嬉しいね。


584 :583:04/06/19 03:58
SocketSetはSocket配列での登録も取得もないから配列スライス関係ない orz
英語できたら要望だしたところだが・・・

585 :デフォルトの名無しさん:04/06/19 09:33
DIDEが終了時落ちるのはVer0.995になってからだな。
古いのに戻したくても置いてないからどうしようもないし。
ところで、公式の所のyahooのグループって誰か見てる人いる?
日本語の対応予定とかどうなってんだろ。


586 :デフォルトの名無しさん:04/06/19 12:12
D言語を初めて使ってみたんだが
http://www.kmonos.net/alang/etc/d.php#install
C:\standalone\dlanguage\dmd にD言語コンパイラを置いた。dmもあれで上書きした。

コンパイルしてみたら早速こんなメッセージが出た。

C:\users\test\D>dmd hoge.d
Error: Error reading file 'c\stdio.d'


import c.stdio;が原因なのかと思い、これを取り除いた。すると、
C:\users\test\D>dmd hoge.d
C:\standalone\dlanguage\dmd\bin\..\..\dm\bin\link.exe hoge,,,user32+kernel32/noi
;

C:\users\test\D>

となってコンパイルできたらしい。hoge.exeではろわーるどが出た。
c.stdioが激しく気になってしまう。なんすかこれは?

587 :デフォルトの名無しさん:04/06/19 12:15
こんどは二つ目のサンプルプログラム
import stream;のやつをやってみたんだが、

C:\users\test\D>dmd hoge2.d
Error: Error reading file 'stream.d'

だってよ。JavaとかみたいにCLASSPATH指定みたいなのがいるのか?



588 :デフォルトの名無しさん:04/06/19 12:33
この記事は2002年11月時点のD言語に基づいているため、 大分古くなってきています。

589 :デフォルトの名無しさん:04/06/19 12:33
>>586
import std.c.stdio; //Cのstdioを直接ラップしたモジュール
import std.stream; //D版のC++ iostreamみたなもん


590 :デフォルトの名無しさん:04/06/19 12:47
クラスのコピーってどうやるの?
もしかしてコピコン作ったクラスだけしかコピーできない?

591 :デフォルトの名無しさん:04/06/19 12:48
まー早い話、とりあえず困ったときくらい仕様読めよってことだな。

592 :デフォルトの名無しさん:04/06/19 12:50
>>590
データの集約したいなら構造体使うほうが理に適っていると思うがどうか。

593 :デフォルトの名無しさん:04/06/19 12:56
>>592
デザパタのプロトタイプパターンがしたいのだが。

594 :デフォルトの名無しさん:04/06/19 13:03
馬鹿ちょんdeep copyなんぞありはしない

595 :デフォルトの名無しさん:04/06/19 13:06
>>594
クラス構造しだいだろ

596 :デフォルトの名無しさん:04/06/19 13:35
Dの標準ライブラリでは高性能なサーバーは作れなさそうだな
kqueueなんかをどうSocketクラスと結び付けるかが難しい・・・

597 :デフォルトの名無しさん:04/06/19 14:00
ループ毎に1000以上もSocketSet.addやSocketSet.isSetをしてたらselectする意味ないわな
これならthreadの方がまだマシか?

598 :デフォルトの名無しさん:04/06/19 14:12
>>590
JavaのObject#clone()でもやんの?
D言語には無い?

599 :デフォルトの名無しさん:04/06/19 14:15
>>589
(・∀・)サンクス ウゴイタンス!

600 :デフォルトの名無しさん:04/06/19 14:15
>>592
今時構造体なんか……使っていられるかw

601 :デフォルトの名無しさん:04/06/19 14:16
>>590
不変クラスにすれば簡単にできる

602 :デフォルトの名無しさん:04/06/19 14:30
>>598
> JavaのObject#clone()でもやんの?
> D言語には無い?
ないね。

603 :デフォルトの名無しさん:04/06/19 14:41
>>601
作る側の問題じゃなくて作られたもののコピーの話でしょう。


604 :デフォルトの名無しさん:04/06/19 19:14
>>600
俺は、単純な矩形をクラスで管理したくはないな。

605 :デフォルトの名無しさん:04/06/19 19:23
このスレでいう構造体って、メンバ変数がpublicなクラスってことでいいんだよね?

606 :デフォルトの名無しさん:04/06/19 19:30
仕様をよく読めば分かるけど、必ずしもそうじゃないのが困りもの。

607 :デフォルトの名無しさん:04/06/19 19:34
値渡しされるクラスという考えはC++時代もあったな
shallow copyがお手軽に出来るという利点もある


608 :デフォルトの名無しさん:04/06/19 20:32
D言語には鯖開発の筆頭として期待してたけど、
一連の流れを見るにまだライブラリが弱すぎて使えないみたいだね

boostのようなライブラリが登場するのはいつからかな

609 :デフォルトの名無しさん:04/06/19 21:00
>>602
Cloneableインターフェースも実装できないのか?

610 :デフォルトの名無しさん:04/06/19 21:01
>>608
boost の中の何を期待しているんだ?
幾つかの機能は既に言語仕様やphobosに取り込まれてるだろ?

611 :デフォルトの名無しさん:04/06/19 21:02
>>604
カプセル化できんし他人に勝手に継承されるし
あぶないやんか

612 :デフォルトの名無しさん:04/06/19 21:03
>>607
deepでなくて?

613 :デフォルトの名無しさん:04/06/19 21:07
>>612
配列がchar[] hogeだったらshallowにならへん?

614 :デフォルトの名無しさん:04/06/19 21:25
>>610
いろいろあるんだよ、角度とか

615 :デフォルトの名無しさん:04/06/19 21:40
regexpとかあるから鯖の作りやすさは折り紙付きだな
kqueueやdev/pollをラップした強力なライブラリが実装できるなら・・・

616 :デフォルトの名無しさん:04/06/19 21:59
>>615
作って。オナガイ。

質問
template Loop(int n:0, alias X) {
 void f() {}
}

template Loop(int n, alias X) {
 void f() { X(); Loop!(n-1,X).f(); }
}

これコンパイルできない理由というか背景を教えてくれー

617 :616:04/06/19 22:03
実体化忘れた
void g() { printf("hoge\n"); }
int main() { Loop!(5, g).f(); }
Loop!(0,g)にマッチするテンプレートがひとつ以上ある、と怒られる。


618 :デフォルトの名無しさん:04/06/19 22:03
>>616
// template Loop(int n:0, alias X) {
aliasがここにあるのはいいの?

619 :デフォルトの名無しさん:04/06/19 22:07
Loop(int,alias)が二つあるんだからそらそうだろ。


620 :デフォルトの名無しさん:04/06/19 22:27
>>616
>int n:0
こんなこと出来るの?

621 :デフォルトの名無しさん:04/06/19 23:23
templateの再帰のサンプルでさえ既に俺にはお手上げw

622 :デフォルトの名無しさん:04/06/19 23:40
あれは結局何が代入されたんだろうね
const factorial = 24 をどこかでたくさん生成したのか?
わかんないから、やねうらお氏あたりが教えてくれるのを待とう(こら

623 :デフォルトの名無しさん:04/06/20 00:01
enum {abc = 1}
enum {abc = 2}
enum {abc = 3}
enum {abc = 4}
enum {abc = 5}
enum {abc = 6}

int main()
{
    printf("%d",abc);
    return 0;
}

としてもabcは1が帰ってくるね・・・うーむw

624 :デフォルトの名無しさん:04/06/20 00:39
>>623
それはまずい仕様だね。コンパイルエラーが妥当だと思う。

>>619
おいらにはそらそうだろう、ってほど直感的じゃない。

template Loop2(int N:0, T) {
 void f() {}
}

template Loop2(int N, T) {
 void f() { (new T)(); Loop2!(N-1, T).f(); }
}

class Hello { void opCall() { printf("hello\n"); } }

int main()
{
 printf("start\n");
 Loop2!(5, Hello).f();
 return 0;
}

Loop2がよくてLoopがダメな理由がよく分からないという話。
>>618 >>620 仕様書読んでくれ。

625 :デフォルトの名無しさん:04/06/20 00:45
templateの使い方を纏めたページがいるね
Wikiあたりに誰か投稿してくれー

626 :デフォルトの名無しさん:04/06/20 01:01
aliasパラメタ

aliasパラメタによって、テンプレートの引数に様々な D のシンボルを受け取るようにできます。
alias パラメタに使えるシンボルはグローバル名と型名、テンプレート名、 テンプレートインスタンスの名前で、ローカル名は使用できません。
この機能は、C++におけるテンプレート・テンプレート引数の拡張版となっています。


関数は「型」じゃないとかそういう制約か?


627 :デフォルトの名無しさん:04/06/20 02:44
シンボルの同一性チェックができれば、嬉しいような、そうでもないような。

//is_same_symbolはコンパイルタイムに決まる定数
int x=1; alias x ax; alias ax aax; int y = x;
printf("%d\n", is_same_symbol(x,ax)); // 1
printf("%d\n", is_same_symbol(x,aax)); // 1
printf("%d\n", is_same_symbol(x,y)); // 0

is_type(alias X), is_constant(alias X)もあれば嬉しいかな〜。
is_template, is_template_instanceもあってもいいかも。
テンプレートの特殊化で直接指定できたほうがいいかな。
template(type_alias X) {...} // type_aliasはaliasの特殊化として扱われる
// Xが型でなければマッチに失敗。
template(aliax X;=x) {...} // Xがxと同一シンボルならマッチ

そんな機能何に使うのってきかれると、答えに詰まっちゃうけどね。

628 :デフォルトの名無しさん:04/06/20 03:42
関数ポインタをtemplateでalias以外の方法で使うにはどうすればいいの?
template Hoge(void function() fx){} ではダメみたい

629 :デフォルトの名無しさん:04/06/20 04:21
>>624
単純にaliasパラメタからaliasパラメタに値が渡せないだけじゃないかな
alias alias def_alias;ってやってもコンパイルできないし


630 :デフォルトの名無しさん:04/06/20 08:59
sampleのlistener.dはメモリリークのいいテストになるね。
このままだとリークしっぱなしだから、fullCollect()をループの最後に挿入。
タスクマネージャでプロセスを眺めてもメモリ使用量がほぼ一定してるのが分かる。


631 :デフォルトの名無しさん:04/06/20 14:55
>>630
仕様上はメモリリークじゃないよ。解放の遅延。

632 :デフォルトの名無しさん:04/06/20 14:57
Dのテンプレートが期待通りに動いてくれない〜。
ベータだからなのか、凡ミスなのか。

template Cons(T, U) {
 struct Cons {
  alias T type;
  alias U next;
 }
}

alias Cons!(char, Nil) Char;
alias Cons!(short, Char) Short;

alias Short.next.type A; //no property 'type' for type 'Cons'

int main() { return A.max; }

633 :632:04/06/20 14:59
struct Nil { alias Nil type; } 入れ忘れた。

634 :デフォルトの名無しさん:04/06/20 16:21
template Cons(T, U) {
    struct Cons {
        T type;
        U next;
    }
}

struct NullCons {
    int type = -1;
    int next = -1;
}

Cons!(int,Cons!(int,NullCons)) WINT;

int main()
{
    printf("NullCons %d",WINT.next.next);
    typeof(WINT.type) myInt = 3;
    return myInt;
}

こういう使い方なら正しく動いた。
632氏のお望みの処理かは不明だけどw

635 :デフォルトの名無しさん:04/06/20 17:09
struct NullCons {
int type;
Cons!(int,Cons!(int,typeof(this))) next;
}

にすれば循環するっぽいが、structは実体を持つはずなのになんで?w

636 :デフォルトの名無しさん:04/06/20 18:38
サーバ開発とかネットワークプログラミング全般って、D選ぶのもそれはそれでいいが、しかし
よりLightweightに、いろんなOSで動かしてテストしやすいようにしたいとか、そういうことであれば、
Dより、Rubyとかのほうがいいんじゃないかね。ライブラリも揃ってるし。

637 :デフォルトの名無しさん:04/06/20 19:00
新しい言語で遊ぶのが楽しいんだよw

638 :デフォルトの名無しさん:04/06/20 19:14
Rubyってランタイムで動いてるんじゃないの?
知らないからアホなこと言ってるかも知れんけど

639 :デフォルトの名無しさん:04/06/21 00:28
>>638
ランタイムも何もRubyってインタプリタ言語じゃなかったっけ?

640 :デフォルトの名無しさん:04/06/21 02:04
んだんだ

641 :デフォルトの名無しさん:04/06/21 05:44
dmd.zipの古いバージョンって無いんでしょうか?
PARSEC47をコンパイルしたいんですが、unstableすぎるのか現行のだとコンパイルできないんで…

642 :デフォルトの名無しさん:04/06/21 11:55
私は、CGIをDでがんがるつもりでいるので、サーバー処理もDでいけるんじゃないか派です。


643 :デフォルトの名無しさん:04/06/21 13:06
>>642
(゚Д゚)ハァ?

644 :デフォルトの名無しさん:04/06/21 13:29
>>643
パフォーマンスと手軽さを考えた場合
DでCGI書くのは結構いいかも知れない。

645 :デフォルトの名無しさん:04/06/21 15:35
ISAPIやmod_perlのようなカラクリを作るならDの特徴が生かされるだろうね
サーバーとしてはHTTPDで無ければいけると思われ

646 :デフォルトの名無しさん:04/06/21 16:22
0.93来てますね

647 :デフォルトの名無しさん:04/06/21 20:06
Dで使える有用なライブラリ、コードの一覧とか欲しいね
libってC版ならそのまま使えるんだっけか?

648 :デフォルトの名無しさん:04/06/21 20:08
>>641
v.0.74 と 0.79, 0.80 なら持っているが、PERSEC47っていくつでコンパイルできたっけか。


649 :デフォルトの名無しさん:04/06/21 20:19
CGIにDって発想が間違ってる気がするが

素直にperlかphpにしとけよ
つかCGIじゃなくていいんならJavaか.NETにしとけ

下らない仕事は手軽に片付けてナンボだ
いちいちセッションハンドリングだのクラスタリングだのの面倒みたいか?今更
俺はC++で書かれたCGIコードの移植をさせられて反吐が出そうになったぞ
しかもパフォーマンスが出ないからといってRPCまで使ってやがる


650 :デフォルトの名無しさん:04/06/21 20:22
>>649
> つかCGIじゃなくていいんならJavaか.NETにしとけ
意味不明なのだが

651 :デフォルトの名無しさん:04/06/21 20:26
>>650
らくで
効率もよくて
ウンザリするほど周辺環境がととのっていて
サンプルも豊富だから
そんだけ



652 :デフォルトの名無しさん:04/06/21 20:32
あ、すまん
「意味不明」の理由が何となく分かった
Javaや.NETでもCGIプログラムは作れるけど、意味はない

ふつーはservletやjspやASP.NET(WebForm)やWebServiceだ
「そのようなもののコンテナを利用できるなら」という意味だよ
「CGIでなくていいなら」という意味は

653 :デフォルトの名無しさん:04/06/21 20:36
しかしJavaや.NET(てかIIS)はレンタル鯖では使われないからな
うちはFreeBSD鯖を借りてて、telnet経由でcgi作れるからDは歓迎

まあ自宅鯖ならApache+mod_perl一択だな

654 :デフォルトの名無しさん:04/06/21 20:39
>しかしJavaや.NET(てかIIS)はレンタル鯖では使われないからな
好き勝手にバイナリ動かせる鯖もそうないだろ。
Dのバイナリ動かせるならJREも突っ込めそうな気が。

655 :デフォルトの名無しさん:04/06/21 20:41
流石にそこまでは触らせてもらえないよw
鯖の為に出来る作業はコンパイルだけさぁ

656 :デフォルトの名無しさん:04/06/21 21:36
>>634
LokiやboostのTypeListもどきを作ろうとしてたのでちと違う。

>>635
循環してないよ、それ。循環って↓見たいなやつのことでしょ?
struct Hoge { Hoge hoge; }
635の中のtypeof(this)はNullConsのポインタ型だと思う。

657 :デフォルトの名無しさん:04/06/22 10:01
DでCGI
CやC++と違ってperlや、rubyと同様の分かりやすいソースでいけるし、
ネイティブだから起動が高速だ。
クロスコンパイルして、UPすれば、freebsdで無料鯖のaaacafeで公開できる。
いいと思うんだけど。


658 :デフォルトの名無しさん:04/06/22 11:13
動かせる鯖を借りてる人はいいね

659 :デフォルトの名無しさん:04/06/22 15:12
Javaや.NetはコリコリCGIを書くのとは性質が違う。
アプリケーションサーバーがついてこないといけない。
PerlやPHPは手軽だけど遅い。
CやC++は高速だが、煩雑もしくは、高度なプログラミング知識が必要になる。
Dは、CやC++の後継でCやC++でCGIを作る煩雑な部分を肩代わりしてくれる。
高速CGIを作るにはDが向いていると思う。

660 :デフォルトの名無しさん:04/06/22 15:21
分かったからはよ作れ

661 :デフォルトの名無しさん:04/06/22 22:21
いや高速CGIではmod系やISAPIには太刀打ちできないからw
それらが使えない鯖での負荷削減として有用なのがDって程度だよ

662 :デフォルトの名無しさん:04/06/22 23:33
telnet使えるのはsakura以外にどっかある?

663 :デフォルトの名無しさん:04/06/23 00:27
CからDのコードを実行することってできまつか?
実際にやりたいのはCからというより、Cへのインタフェースを
持っている他のスクリプト言語などから使うことなのですが。

664 :デフォルトの名無しさん:04/06/23 00:42
DでApache module作るってのは結構有効なんじゃないだろうか
その辺ネイティブバイナリとCとの互換性が効いてくるような


665 :デフォルトの名無しさん:04/06/23 01:11
IntraWeb(ボソ

666 :デフォルトの名無しさん:04/06/23 01:13
まあモジュールはともかく鯖はepollやkqueueがDに移植されるまでお預けでいいよ

667 :デフォルトの名無しさん:04/06/23 02:18
>>663
extern(C) で作ればいけるんじゃないかな。

668 :デフォルトの名無しさん:04/06/23 02:24
>>664
それはすごく嫌だなあ
apacheのpool managedな空間に異物が入り込むわけだよね
moduleだからインプロセスで実行される訳だし


669 :デフォルトの名無しさん:04/06/24 23:13
mixinの有効な使い方を教えてくださいな


670 :デフォルトの名無しさん:04/06/25 17:31
ApatcheモジュールをCで書いて、メモリリークして終了した経験があるので、mod_dとかだれか
作ってくれることを希望。ほとんどCGIと同じ書き方ですむとうれしいな。

671 :デフォルトの名無しさん:04/06/25 22:07
>>669
ごく普通に思いつくのは、クラス定義にテンプレートをmixinして
侵入型のリストの実装を埋め込むとか?
基本的には#defineで出来たようなことしか思いつかない。

672 :デフォルトの名無しさん:04/06/25 22:36
// 侵入型Tree
template MixinTree(alias compare) {
 private typeof(this)m_left;
 private typeof(this)m_right;
 void insert(typeof(this) obj) {
  if( compare(this, obj) ) {
   if( m_left is null ) m_left = obj; else m_left.insert(obj);
  }
  else {
   if( m_right is null ) m_right = obj; else m_right.insert(obj);
  }
 }
 typeof(this)[] toArray() {
  typeof(this)[] ret;
  if( m_left !== null ) ret ~= m_left.toArray();
  ret ~= this;
  if( m_right !== null ) ret ~= m_right.toArray();
  return ret;
 }
}

673 :デフォルトの名無しさん:04/06/25 22:38
class Hoge {
 int n;
 this(int n) { this.n = n; }
 static int compare(Hoge a, Hoge b) { return a.n > b.n; }// 無名で渡すとリンクに失敗する
 mixin MixinTree!(Hoge.compare);
}
int main() {
 Hoge h1 = new Hoge(1); Hoge h2 = new Hoge(2);
 Hoge h3 = new Hoge(3); Hoge h4 = new Hoge(4);
 h2.insert(h4); h2.insert(h1); h2.insert(h3);
 Hoge[] ha = h2.toArray();
 foreach( Hoge h; ha ) { printf("%d\n", h.n); }
 return 0;
}

陳腐な例でスマソ(typeof(this)のおかげで何とかなるのね)。

674 :デフォルトの名無しさん:04/06/25 22:42
mixinをつかうなら、mixin用にテンプレートを書かないといけない?

675 :デフォルトの名無しさん:04/06/25 22:53
template使える人が羨ましい。
いや、人のは読めるけどね。書けないんだ。
モダンプログラミングは俺には難しいよ orz


676 :デフォルトの名無しさん:04/06/26 04:08
関数(またはブロック)毎にGCに回収させる指定があれば嬉しいな。
そのブロック内でのみC++ライクなnew&deleteが行われる仕様。


677 :デフォルトの名無しさん:04/06/26 04:20
auto でいいんちゃうん?
つーか、組み込みでもないのに、GCをそこまで細かく制御する必要がある用途って何?
GCに対して「大きなお世話」な気がするんだが。

678 :デフォルトの名無しさん:04/06/26 13:16
>>677
C++ライクなnew&deleteは「GCに回収させる」って言わない気が。
要するに今のautoで出来ることを欲しいって言ってるんじゃ?
>>676は仕様読んでないのかも)
ただautoのdeleteのタイミングはブロックの終わりじゃなくて、
関数が戻るタイミングだった気がするので、その辺は無理かも。

679 :デフォルトの名無しさん:04/06/26 14:33
いや、autoは「スコープの終わりにデストラクタが呼ばれる」だけだと思われ。
実際のメモリ回収がいつ行われるかは保証されてないと。

関係ないけど、_argptrと_argumentsは、__argptrと__argumentsにして欲しかったな。

680 :デフォルトの名無しさん:04/06/26 15:20
autoはデストラクタのみ
deleteはデストラクタ+ガベコレ

なの?

681 :680:04/06/26 15:21
もとい。
autoはスコープの終わりにデストラクタ呼び出し
deleteは即時デストラクタ呼び出し+ガベコレ

deleteの仕様が良く分からない

682 :678:04/06/26 15:54
>>679
そかそか、勘違いしてた。というわけで>>676の言いたいこともよく分かった。
>>680
たしかdeleteもデストラクタが呼び出されることしか保証してないんじゃないかな。
(要するにメモリーの回収は後回し)
現状delete呼ぶとvptrまで破壊するみたいで、
deleteされたオブジェクトにアクセスすると落ちちゃうけどね・・・。
またいい加減なこと言ってたりして・・・。

683 :デフォルトの名無しさん:04/06/26 16:42
クリティカルな場所はアロケータ・デアロケータをCでつくれっつーことですな

684 :デフォルトの名無しさん:04/06/26 17:18
プリミティブってGC関係ないんだっけ?
char[]とかクラスではどうしようもなくGC待ちに成りそうなんだけど

685 :デフォルトの名無しさん:04/06/26 20:12
std.c.stdlib.mallocとか使って、char *を使えばいい。
つまり、便利な機能を使うにはGC必須と。

686 :デフォルトの名無しさん:04/06/26 20:20
つまりhoge[0 .. 3]は使えないのか

687 :デフォルトの名無しさん:04/06/27 01:33
Dの仕様だと、型安全なprintfが作れそうな気がする。

688 :デフォルトの名無しさん:04/06/27 03:41
>>676
ゲームやサーバーだとあると嬉しい機能なんだが

689 :デフォルトの名無しさん:04/06/27 22:37
>>688
しょうがない、この板はゲーム専用の板ではないから
ゲームなど余り考えられてない。
特に、まだver1が出てないコンパイラについては仕方ないことだと思われ

前に無知な香具師がゲームをバカにしてたしな
#define release(a) a->Release()
と同じような機能が欲しい
って言ったら
テンプレート使えばいいじゃとか言ってな
テンプレートにするとまた別々に型ごと宣言せなあかんから大変だってね。

それもゲームについて考えてないどころかDについてすら知らないってことだったんだな。

690 :デフォルトの名無しさん:04/06/27 23:39
>>689
???

691 :デフォルトの名無しさん:04/06/28 00:25
solid {} もしくは pack {} でブロック内GCを実装して欲しい
ヒープを別に確保すれば可能だと思う(効率は知らんが)


692 :デフォルトの名無しさん:04/06/28 00:33
エクスプローラは重いからエクスプローラではないデスクトップを使いたいけど
D言語でデスクトップを作る事は可能?

693 :デフォルトの名無しさん:04/06/28 00:41
ちょっと意味が分からないけど、API用いてリスト読み込めば詳細モードのエクスプローラになるのでは?

694 :デフォルトの名無しさん:04/06/28 00:56
>>692
Win32APIを叩けるならなんでもいいんじゃない?
ということでスレ違い。ちなみに、普通デスクトップではなく、シェルと呼ぶのでは?

695 :デフォルトの名無しさん:04/06/28 01:47
D言語は楽しそうなのでお勉強をはじめようと思っております。
D Memoでお勉強しようと思いますが現状お勧めのサイトあったら
おせーてください。

ところでこれは既出なのでせうか。
Phobos D Runtime Library 日本語訳
ttp://hp.vector.co.jp/authors/VA031566/d_direct3d9/prframe.html

696 :デフォルトの名無しさん:04/06/28 02:16
>>695
オススメはdmdをDLするとサンプルソースが付いてくるので、それを覗くのが手っ取り早いかと。
基本的にC++に良く似てるので、ざっと仕様に目を通してサンプルと見比べるだけで導入完了です。

ちなみにそのリンク先は、日本訳リファレンスの訳者本人が、フレームに切りなおしたページのようですね。
フレームの切りなおしはWikiでもやってるので、好みで使い分けるのがよいかと。


697 :デフォルトの名無しさん:04/06/28 02:42
D言語+SDLを今後のプログラムの中心にしようと思ったけど
資料が少なく先は難航しそうだw

698 :デフォルトの名無しさん:04/06/28 02:44
>>696
ほほぅ。了解。ってことでサンプル実行・・
って、エラーでまくりですなorz
castとsizeofが割とあたらしいキーワードですかな。

C++はぼんやりとしか知らないんですが
仕様とサンプルとにらめっこしてみまする。

>>697
俺も使ってみたいSDL

699 :デフォルトの名無しさん:04/06/28 02:49
>>698
ちなみにD Memoは古いので他のところを参照しましょう。

700 :デフォルトの名無しさん:04/06/28 06:58
仕様書の説明読んでいるのでござんすが
o.set = 10;
のように使えること=クラスのプロパティと解釈したのだけど
void func(int x){printf("%d", x);}のようなメソッドも
o.func = 10; みたいに扱えてしまうというのは
いったいどういうことなんでしょうかと・・。

あと、型の項の算術演算時の変換で
ulong ul=100000L;
byte b=-100;
printf("%d", ul+b);は
ulong型に変換されてエライことになるんでは・・と思ったけど
試すと99900というのはこれいかに。

701 :デフォルトの名無しさん:04/06/28 08:27
やねうらお氏のところぐらいか?

702 :デフォルトの名無しさん:04/06/28 08:28
>>693
なるほど、そうなんでつね。

>>694
Shellは別個でデスクトップだけ再現したいからシェルではないです。

703 :デフォルトの名無しさん:04/06/28 10:22
>>700
ちょっと上にも似たような話題があるが、要するにプロパティ自体が構文糖なんじゃないかと。
関数の名前で逃げるとすれば、名詞=プロパティ、動詞=メソッドという考え方が
マッチすると思う。

下の方のやつは、Cの可変個引数だから、intに変換されてるとかじゃない?

>>702
まあ、Win32APIスレとかで聞いたほうがいいんじゃね?

704 :デフォルトの名無しさん:04/06/28 15:02
C/C++のリソースエディタはそのまま使いまわせるのかな?
フリーのを探してみるか


705 :デフォルトの名無しさん:04/06/28 15:32
リソースはリソースであって、Dとは関係ないから大丈夫。
ただし、ヘッダファイルは使えない・・・ので、Dのソースに書き換える必要がある。

706 :デフォルトの名無しさん:04/06/29 06:39
おんや。こっそりとすばやく0.94がリリースだそうですわ。
何がかわったのかしら。

707 :デフォルトの名無しさん:04/06/29 06:45
全部bug fixみたいだね。

708 :デフォルトの名無しさん:04/06/30 15:09
コード補完がないとWinプログラムってやってらんないな・・・
暗記してる人は平気なのかも知れないが

709 :デフォルトの名無しさん:04/06/30 16:19
>>708
自分はxyzzyを使って、
dabbrev-expandと、d-modeのキーワードに色々登録して補完機能でバシバシやってますけど、
駄目かな。

710 :デフォルトの名無しさん:04/06/30 17:03
>>709
聞いたことあるけど触った事なかったな
良さそうだったらサクラエディタから乗り換えます
ども。

711 :デフォルトの名無しさん:04/06/30 22:19
>>710
色分けと補完くらいならサクラエディタでもできるじゃん。

712 :デフォルトの名無しさん:04/06/30 22:22
インテリセンスってフリーのエディタで搭載してるのある?

713 :デフォルトの名無しさん:04/06/30 22:25
eclipseとか。

714 :デフォルトの名無しさん:04/06/30 22:26
おっと盲点・・・。
eclipseDの評判が悪かったからスルーしてた。


715 :デフォルトの名無しさん:04/07/01 16:11
eclipseDは今のところ色分けくらいしかできない。
補完機能+makeなどを利用したコンパイルができるようになれば
乗り換えるかも

716 :デフォルトの名無しさん:04/07/01 21:35
マクロ用のスクリプトは可也作り易そうだね
かと言ってDスクリプトを作るとなると途方もなさそうだがw

717 :デフォルトの名無しさん:04/07/02 22:55
Cのライブラリが使いまわせるなら良さそうなの探してみるか

718 :デフォルトの名無しさん:04/07/03 10:45
>>715

今のところも何も、CDTみたいな後ろ盾があるわけじゃないから
誰かがやらない限り誰もやらない。


719 :デフォルトの名無しさん:04/07/03 10:46
>>715

誰かがやらない限り何も動かん

720 :デフォルトの名無しさん:04/07/03 16:42
WINAPIのRectangle関数がなかった
もしかしてstd.c.windows.windowsって不完全?

721 :デフォルトの名無しさん:04/07/03 22:33
>>720
もしかしなくても不完全。
http://hp.vector.co.jp/authors/VA028375/d/windows.h.html
とか使うべし

722 :デフォルトの名無しさん:04/07/04 04:53
>>721
素敵。あなたもリンク先も。

723 :デフォルトの名無しさん:04/07/05 11:09
caseが最初にきたらラベルに出来ないようにすればいい。

そうすれば
case 1:を
case1:
とかで失敗しない。
caseだけは例外で許可、だけどcaseが文頭に来るラベルは禁止。

これでcaseラベル問題解決しない?

724 :デフォルトの名無しさん:04/07/05 22:47
んな昔のBASICのような命名制限つけるぐらいなら、後ろの":"を他の記号にした方がいいんじゃ?

725 :デフォルトの名無しさん:04/07/05 22:50
なんか行き当たりばったりな設計だな。
センスの悪さはC++に勝るとも劣らないな。

726 :デフォルトの名無しさん:04/07/05 22:52
caseラベル問題ってなに?英語できないからML見てないんだよねw
ぱっとみコンパイラのバグだろうから、仕様としてあわせる必要は無い気がする

727 :デフォルトの名無しさん:04/07/05 23:23
>>726
何かも知らないのに答えをだすとはさすが

728 :デフォルトの名無しさん:04/07/06 00:57
switch( hoge ){
case1:
でラベル扱いされるって話?

俺もどういう話なのかよくわかんない教えてください。

729 :デフォルトの名無しさん:04/07/06 04:05
case1なら普通にラベルとして扱わなきゃおかしくね?


730 :デフォルトの名無しさん:04/07/06 05:17
D言語のgotoが一風かわっていることに今気づいた・・。
ねちねちとswitch文のソース書いて試してみたが
特に困りそうな気はしないが・・

何が問題なの教えてplz ・゚・(ノД`)・゚・

731 :デフォルトの名無しさん:04/07/06 07:02
キーワードの色分けができるエディタ使えよ。

732 :デフォルトの名無しさん:04/07/07 08:07
#pragma comment(lib, "gdi32.lib")
みたいなことってできませんか?

733 :デフォルトの名無しさん:04/07/08 21:11
低レベルな話ですまんが、DMD0.94でProject: Windows.h for Dが
使えないね。
コンパイルしようとすると.sizeプロパティはだめぽ、.sizeof使ってちょ
とメッセージが。
はぁ、どうしよう、コンパイラのバージョン落とすくらいしか対応策
なし?

734 :デフォルトの名無しさん:04/07/08 21:13
>>733
grepしてreplaceすればOK

735 :デフォルトの名無しさん:04/07/08 21:18
>>734
んまぁ確かにそうなんだけど…めんどくせぇ。
いや、Portingしてくれてる人のほうがめんどくせぇと思ってるんで
しょうが…やっぱり発展途上のはこういった問題が付きまとうねぇ。
これはこれで面白いからいいんだけどさ。


736 :デフォルトの名無しさん:04/07/08 21:56
>>733
dmd -d でいいんでないの?いや、避けたいのはわかるけど。

737 :デフォルトの名無しさん:04/07/08 23:16
>>736
ほんとだ、すっかり忘れてた。
既に置換しちゃったよ…まぁいいか。


738 :デフォルトの名無しさん:04/07/09 02:56
C++でウィンドウをカプセル化したりするときにSetPropや
CreateWindowExの引数にthisを渡す方法があると思うけど
それってD言語だとどうやるんでしょう?
マニュアル読んでみたけどそういった記述が見つからんです。

739 :デフォルトの名無しさん:04/07/09 03:02
すまん、普通にthisキーワード使えるっぽ…。
本当にすまんかった、吊ってくる。


740 :デフォルトの名無しさん:04/07/09 08:14
GCがあるから、SetPropだとそれ以外の参照がなくなったときが怖いかも。
MFC式に、外部にmapを持っておくほうが安心じゃないか?

741 :デフォルトの名無しさん:04/07/09 10:12
>>740
SetProp以外が参照しなくなったときに回収されちゃうってことですかね?
MFCは大昔に使ったっきりなんでよくわからないんですが、マッピング用
の外部クラスなりを用意したほうが安全ってこと?


742 :デフォルトの名無しさん:04/07/09 10:23
>>741
いや、SetProp(に限らないが)に渡したポインタも自分で保持していないと、
GCによって回収されてしまうことがあるということ。

APIに渡したということをGCは認識してくれないので、、、

ついでにDMD 0.95リリースされたね。
型安全なprintf・・・

743 :デフォルトの名無しさん:04/07/09 10:56
なにっダウソロードしておかねば!


なんつって全然つかってないんだけど一応ねヾ(´ー`;)

744 :デフォルトの名無しさん:04/07/09 15:30
SDL_mixerのポーティングを使おうと思ったのだけれど、
正しいライプラリじゃないよ!っていうエラーメッセージが出てリンクでけん。
D言語でゲーム作ってみようと思ってたけど、まだ無理かなぁ。
SDLとOpenGLのほうは動くんだけど・・・・・・。

>dmd playmus.d SDL.lib SDL_mixer.lib

Error43: Not a Valid Library File
--- errorlevel 1

745 :デフォルトの名無しさん:04/07/09 20:50
>>744
その.libはちゃんとimplibした奴だろうね?

746 :デフォルトの名無しさん:04/07/10 13:18
D言語のプリプロセッサってどんなもん?

747 :デフォルトの名無しさん:04/07/10 13:51
どんなものもなにもDにはプリプロセッサなどない (だよね?)

748 :デフォルトの名無しさん:04/07/10 14:38
versionとか、templateとか、mixinがプリプロセッサっぽい役割を果たしているのでは?


749 :デフォルトの名無しさん:04/07/10 15:14
とりあえず、ここを読め。
ttp://www.kmonos.net/alang/d/pretod.html

750 :デフォルトの名無しさん:04/07/10 18:14
プリプロセッサは前処理をするって意味だからね
Dはマクロとして展開されずにそのまま解析に入るからプリプロセッサはない(と思う)
都合2回以上全文解析する必要の有るプリプロセッサよりは速いだろうというのは確か

751 :デフォルトの名無しさん:04/07/10 18:25
>>750
>>749

752 :デフォルトの名無しさん:04/07/10 18:27
ここまでがんばらないで素直に#ifdefすればいいのに・・・

Dは条件コンパイルをサポートします:
バージョン固有の機能の、固有のモジュールへの分離。
debug文による、 冗長な文字出力などのデバッグ用コードのon/off。
version文による、 一つのソースからの複数の異なったプログラムの生成。
if (0) 文。
ネスト可能なブロックコメント /+ +/ によるコードのコメントアウト。

753 :デフォルトの名無しさん:04/07/10 18:28
static assertがえろいね

754 :デフォルトの名無しさん:04/07/10 18:36
プリプロセッサは汚いな。サブセットとは言えC#に残ってしまったのはC#の汚点の一つだと思う。

755 :デフォルトの名無しさん:04/07/10 18:42
ちょっとしたスクリプト代わりになるほどコンパイルが早いという評価だしね
DLLならJavaみたく鯖を稼動したまま指しかえれる可能性もあるわけだ

756 :デフォルトの名無しさん:04/07/10 18:46
プログラミング言語Dの「概要」の項に
C/C++から取り除かれた特徴として
プリプロセッサがあがっています。

機能上プリプロセッサに似ているが
言語の仕様としてとりいれられたものに
debug、version

見た目上プリプロセッサに似ているものとして
特殊トークン列#line

などがあるようです。
などと書いているうちに先をこされましたが
とりあえず投稿しちゃいます。
詳しいことはわたしには聞かないでください。。。

757 :デフォルトの名無しさん:04/07/10 18:49
http://www.kmonos.net/alang/d/pretod.html
ここ見たほうがはやかったです。
詳しいことはわたしにはきかないでください。。。

758 :744:04/07/10 19:24
>>745
ありがとう!問題解決しました!

759 :デフォルトの名無しさん:04/07/10 21:37
ぶっちゃけ俺が聞きたいのは、
D言語内で俺言語を作ったりできるのかなぁと言う事なのよ。
例えばPerl風のforeach構文が欲しいなぁか思ったら、自由に
構文追加できたりできるのかね?D言語とやらは。

760 :デフォルトの名無しさん:04/07/10 21:46
>>759
意味不明なのだが、言語仕様を独自に作るならコンパイラ毎作れば?

761 :デフォルトの名無しさん:04/07/10 21:49
>>759
できません。帰ってください。

762 :デフォルトの名無しさん:04/07/10 21:54
>>759
作者アフォだから今ならプロジェクトのっとれるよ。

763 :デフォルトの名無しさん:04/07/10 21:57
D言語の正式版っていつ出るのかね?
そしてメジャーになれるのかね?

764 :デフォルトの名無しさん:04/07/10 22:11
地味にバージョンアップしてるから9月くらいには出るんじゃないかな
メジャーになるかどうかはプラットフォーム非依存なIDEが出るかどうかによる

765 :名無しさん@そうだ選挙に行こう:04/07/11 13:27
IDE より GUI toolkit だろ。
DWT はいつ出るんだ。

766 :名無しさん@そうだ選挙に行こう:04/07/11 13:29
GUIライブラリってどっかが作ってるんでしょ?

767 :名無しさん@そうだ選挙に行こう:04/07/11 13:30
文法変えたいならcamlp4みたいなの作れば

768 :デフォルトの名無しさん:04/07/12 00:35
Googleの検索結果
"D Programing Language" wxWidgets porting
・・・0件 orz


769 :デフォルトの名無しさん:04/07/12 21:15
Borland VCLのラッパーが欲しい。
最強でしょ

770 :デフォルトの名無しさん:04/07/12 21:17
DってC#やJavaより優れている仕様だって言ってる人多いのにどうして全然注目されないの?
言語関連の雑誌で特集されたの見たことないし
研究分野でも全く話題にされない。

771 :デフォルトの名無しさん:04/07/12 21:20
中層プログラマの品質の悪さにかけては日本はダントツだから。


772 :デフォルトの名無しさん:04/07/12 21:21
>>769
VCLはIDEが連係してくれないと意味が無いからなあ
それに、Dで再現するには、今のDにはRTTI関連が大きく足りないよ
>>770
まだ1.0に達してないからじゃね?一応雑誌にでたことはあるよ

773 :デフォルトの名無しさん:04/07/12 21:21
・ライブラリがヘボい。
・過去の資産をインポートするのも一苦労。
・仕様はC#2.0で追い抜かれる。
・コンパイラにバグが多い。
・IDEが無い。

774 :デフォルトの名無しさん:04/07/12 21:21
OS固有のAPIを提供するのはいいけど、それよりもまずはライブラリだな
wxWidgetsなんてポテンシャルはすさまじいのに日本じゃまったく流行らない

775 :デフォルトの名無しさん:04/07/12 21:23
・Macで使えない

776 :デフォルトの名無しさん:04/07/12 21:25
文法が汚い〜をきれいにしただけって言語はあまり流行らないでしょ。
某rubyみたいなの。

777 :デフォルトの名無しさん:04/07/12 21:26
Dはコンパイラ指向だからコードの品質は高くなるよ(たぶん)
でもそんな効率の良さを時代が求めてないのかも

778 :デフォルトの名無しさん:04/07/12 21:31
C#も普通に速いしな。
商用のManaged DirectXのアプリが出てくるくらいまで
最適化されたら最強なんだけどさすがにそれは無理かな。

779 :デフォルトの名無しさん:04/07/12 21:33
C#起動遅すぎ

780 :デフォルトの名無しさん:04/07/12 21:34
それはC#ではなく(ry

781 :デフォルトの名無しさん:04/07/12 21:34
>>777
なんでコンパイラ指向だとコードの品質が高くなるんだ?

782 :デフォルトの名無しさん:04/07/12 21:39
俺が言ったのはバイナリの品質って意味なんだけどね。
けどコーディングのスタイルが有る程度強制されるからC++よりはマシじゃないかな。

783 :デフォルトの名無しさん:04/07/12 21:40
D GUI は wxWidgets と SWT が需要高いのかな? このスレ住人的には。

784 :デフォルトの名無しさん:04/07/12 21:40
FOX

785 :デフォルトの名無しさん:04/07/12 21:47
wxWidgetsはマルチプラットフォームなMFCとしては一番高級な印象がある(Gtk+をラップしたりするし)
DUIライブラリ作るくらいならこっちを頑張って実装して欲しかった

・全OSで共通のソースが使える事
・ルック&フィールがOS依存である事
・それがネイティブである事

D言語にはこれらを期待する

786 :デフォルトの名無しさん:04/07/12 21:55
期待するだけなら簡単だよな。

787 :デフォルトの名無しさん:04/07/12 21:56
window.widget
window.gdi
window.sdl

・・・10年先だな

788 :デフォルトの名無しさん:04/07/12 21:58
>・全OSで共通のソースが使える事
>・ルック&フィールがOS依存である事
MONOに何か用ですか?

789 :デフォルトの名無しさん:04/07/12 22:02
Windows.Formsが不完全な上にネイティブでもないし


790 :デフォルトの名無しさん:04/07/12 22:03
そういえば……LinuxにOS依存のGUIって、あって無いようなものだな。

791 :デフォルトの名無しさん:04/07/12 22:06
リソースコンパイラの実装って難しいのかな、やっぱ。
それが簡単ならエディタ作ってみたいのだが・・・

792 :デフォルトの名無しさん:04/07/12 22:13
別に難しくは無い。

793 :デフォルトの名無しさん:04/07/12 23:06
>>791
Eclipseプラグインでキヴォンヌ

794 :デフォルトの名無しさん:04/07/12 23:39
#defineをenumに置き換えてリソースそのものはCのリソースエディタでとかなら出来るかも

795 :デフォルトの名無しさん:04/07/13 01:19
>>768
まだ構想段階のようですが。

>> D/wxWidgets
Wiki4D: wxD
http://www.prowiki.org/wiki4d/wiki.cgi?wxD
Wiki4D: DwithSwig/Messages
http://www.prowiki.org/wiki4d/wiki.cgi?DwithSwig/Messages

>> D/Swig
Wiki4D: DwithSwig
http://www.prowiki.org/wiki4d/wiki.cgi?DwithSwig

796 :デフォルトの名無しさん:04/07/13 01:49
>>795
おお素晴らしい。構想に留まらずそのまま推進して欲しいね。


797 :デフォルトの名無しさん:04/07/13 18:43
物凄い勢いで糞言語に成り下がるのが目に見えてるのに
おまいらそんなに期待しますか

798 :デフォルトの名無しさん:04/07/13 18:51
少なくとも俺はC++から乗り換える予定だが。


799 :デフォルトの名無しさん:04/07/13 22:43
おれもおれも

むしろ糞言語じゃないものが無い気がするがどうか?

800 :デフォルトの名無しさん:04/07/13 22:49
しかしサンデープログラマにはポーティングの手伝いをする方法がいまいち分からんのが辛いな

801 :デフォルトの名無しさん:04/07/13 23:05
ポーティングは非常に簡単です。既存のを参考に量産してください。

802 :でぃきち:04/07/13 23:13
よぅーし、パパはりきっちゃうぞぉ。

803 :デフォルトの名無しさん:04/07/13 23:16
Delphiでいいじゃん

804 :デフォルトの名無しさん:04/07/13 23:37
Object Pascalは変数定義できる場所が決まってたり予約語のタイプ数が多いのが嫌

805 :本7:04/07/14 01:13
むしろそこがDelphiのいいところだと思う。
なんでも簡単・自由になりすぎてPerl厨の糞コードみたいにはならないでほしい。
物事には手順があるってものだ。


806 :デフォルトの名無しさん:04/07/14 01:29
COBOLでもやってろ

807 :デフォルトの名無しさん:04/07/14 01:30
Cライクな構文でなければ生理的に無理だな


808 :デフォルトの名無しさん:04/07/14 01:38
PascalやCOBOLはともかくとして、関数型言語やプロトタイプベース言語の面白い世界を
生理的なんて理由で敬遠するのは悲しすぎると思われ


809 :デフォルトの名無しさん:04/07/14 05:04
そこでPrologの出番ですよ

810 :デフォルトの名無しさん:04/07/14 09:28
スタチックライブラリ作るにはlib.exeってのを使うのか

811 :デフォルトの名無しさん:04/07/14 10:33
じゃあFreePascalを改造して
beginを{に
endを}に
:=を=に
=を==に
みたいなことやったらついてくる人いるかな

812 :デフォルトの名無しさん:04/07/14 10:45
>>811
既存のソースが使えなくなる「だけ」なのでついてくる人はいないと思われ
メリットがないと

813 :デフォルトの名無しさん:04/07/14 11:57
>>811
ttp://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.8.2.html
ttp://www.pro.or.jp/~fuji/computerbooks/c/c.modula2.html
どうしてもこれらを思い出してしまう

814 :デフォルトの名無しさん:04/07/14 14:59
本家の日本サイトへのリンクっぷりが凄まじいな
それだけアメリカ国内ではシカトされちゃってるのだろうか

815 :デフォルトの名無しさん:04/07/14 16:08
>>814
それだけ日本人の言語評価能力が高い(相対的にアメリカは低い)、
と好意的に解釈しましょう。

(D言語が良い言語か否かの議論は置いておくとして。
自分はもちろん、良い言語だと思っているんだけど)

816 :デフォルトの名無しさん:04/07/14 18:10
>>813
下側リンク、おもしれー、そーゆーときは始めからModula使えばいいじゃんw


817 :デフォルトの名無しさん:04/07/14 19:54
Longhornになったら.NET Framework、WinFX-APIがデフォルトで
付いてくるわけだが、そうなってもD言語はやっていける?
それともD言語もD.NETになって軍門に下るのか?

818 :デフォルトの名無しさん:04/07/14 19:57
Mプラットフォームライブラリの強化に回るんじゃないかな


819 :デフォルトの名無しさん:04/07/14 20:14
MSIL吐く実装もいつか作られそうだね。本家はコンセプト通りネイティブのままじゃないかな。

820 :デフォルトの名無しさん:04/07/14 21:06
>>819
安心した

821 :デフォルトの名無しさん:04/07/14 21:19
マクロ並の template, mixin って、MSILで実現するのムリじゃね?

まぁ、.NET Framework が利用できればライブラリ不足は解消するけど。

822 :デフォルトの名無しさん:04/07/14 22:44
>>804
予約語のタイプ数なんてエディタの補完機能でどうにでもなるよ

823 :デフォルトの名無しさん:04/07/14 22:55
最近のIDEは予約語も補完されるのか?
俺が使ってるのはどれもせいぜいメンバ変数、関数の補完しかないよ。

824 :デフォルトの名無しさん:04/07/14 23:36
>>817
C++みたいにM$や某が独自ライブラリ作るんだろ。

825 :デフォルトの名無しさん:04/07/15 02:18
>>823
普通逆じゃないでしょか・・・
予約語補完よりインテリセンスのが高級な機能ですよ

826 :デフォルトの名無しさん:04/07/15 02:46
予約語を補完するなんてエディタは寡聞にして聞いたことがない

827 :デフォルトの名無しさん:04/07/15 02:54
サクラエディタやxyzzyはキーワードの強調と補完をする機能がある
複雑なアウトライン解析をするインテリセンスのようなものは、普通のエディタじゃ実装されんねぇ

828 :デフォルトの名無しさん:04/07/15 03:26
マスコットの胡散臭さがたまりません。

829 :デフォルトの名無しさん:04/07/15 05:35
http://www.levenez.com/lang/history.html
ここにD言語が載るのはいつですか?

830 :デフォルトの名無しさん:04/07/15 05:43
1.0が出てからじゃね?

831 :デフォルトの名無しさん:04/07/15 09:29
俺のDelphiはCTRL+Jですごいことになるよ。

832 :デフォルトの名無しさん:04/07/15 22:19
Eclipseプラグインの作り方でも学びますか。


833 :デフォルトの名無しさん:04/07/15 23:43
それよりもDでEclipseみたいなの作れば、Javaより以下略

834 :デフォルトの名無しさん:04/07/15 23:49
D言語が使えるマルチプラットフォームライブラリで、
且つVBチックなRADが出来るIDEがあればWinの牙城は崩れる。
そのIDE自身もD言語で作られていれば鬼の様に普及する。

さて、EclipseのWikiにいきますが

835 :デフォルトの名無しさん:04/07/16 00:23
D言語がんばって欲しいね。
.NET構想なんかぶっ潰してくれ。マジで。

836 :デフォルトの名無しさん:04/07/16 00:32
だからDelphiでいいじゃん。

837 :デフォルトの名無しさん:04/07/16 00:34
彼はCライクじゃないという致命的なハンデを背負ってるから


838 :デフォルトの名無しさん:04/07/16 00:38
Cライク、他はともかく変数宣言だけは読み辛いぞ、そこだけはPascalライクの方がイイ

839 :デフォルトの名無しさん:04/07/16 00:45
俺がC++からDに乗り換えたいと思った理由がそれだな
int* p1, p2;
が、intのポインタ2つじゃないというのが嫌いだった。
Dではそれを俺好みにしてくれたので思わずマンセー

840 :デフォルトの名無しさん:04/07/16 00:50
じゃあ俺もマンセー

841 :デフォルトの名無しさん:04/07/16 00:50
それでもまだ、int[2][3] なんてのは逆順だから。
[3][2]int って書きたい。で、配列の装飾を前からかかるようにすると、他の装飾(ポインタの*とか)も
全部前からにしないとおかしくなるので、結局Pascalのそれに行き着くわけで。

842 :デフォルトの名無しさん:04/07/16 00:55
>>841
int[2][3]のが分かりやすい

843 :デフォルトの名無しさん:04/07/16 02:18
>>842
禿しくではないが普通に同意

844 :デフォルトの名無しさん:04/07/16 07:47
固定長配列を使う機会なんて、激しく限られているからどっちでもいい。

845 :デフォルトの名無しさん:04/07/16 09:00
>>837
じゃあFreePascalを改造して
beginを{に
endを}に
:=を=に
=を==に
みたいなことやったらついてくる人いるかな


846 :デフォルトの名無しさん:04/07/16 09:35
>>845
既存のソ(略

847 :デフォルトの名無しさん:04/07/16 10:05
おい、WinFXは使えるようになるんだろうな?

848 :デフォルトの名無しさん:04/07/16 12:07
非.NETなC#があれば乗り換えるよ

849 :デフォルトの名無しさん:04/07/16 12:35
そこでHSPの登場ですよ。

850 :デフォルトの名無しさん:04/07/16 14:47
monoなんていらんからgcjのC#版が出てほしいなぁとは思う

851 :デフォルトの名無しさん:04/07/16 15:32
C#は.Net Frameworkのライブラリのありがたみもあるから
gcj相当のだけで解決するものでもない気がする

852 :デフォルトの名無しさん:04/07/16 15:42
中間コード->無条件に遅いとか勘違いしてるアホが多いんだよな

853 :デフォルトの名無しさん:04/07/16 16:07
>>848
Delphiじゃん

854 :デフォルトの名無しさん:04/07/16 17:12
>>852
実際遅いんだけどな

855 :デフォルトの名無しさん:04/07/16 17:38
中間コードと等価なネイティブコードと比較すれば、無条件に遅い

856 :デフォルトの名無しさん:04/07/16 17:50
DelphiとC#じゃ全然文法違うだろ

857 :デフォルトの名無しさん:04/07/16 18:12
等価なら速度も同じ

858 :デフォルトの名無しさん:04/07/16 18:14
>>852
こんなアホまだいたんだ。

859 :デフォルトの名無しさん:04/07/16 19:26
C#だっていいんだけど
Microsoft .NET Framework Version *.* 日本語版
こいつがユーザのマシンにどれほど入っているだろうか。
全体の10%にも満たないのではないだろうか。
そして普及したらしたでM$の配下にそまることに抵抗がある俺。
そんなことを考えてしまうWindows XPユーザの俺。愛。

860 :デフォルトの名無しさん:04/07/16 19:55
C#はなんていうかメモリ喰いすぎだし、起動が遅いんだよね。
走り出しちゃえばVBよりかは重く感じないんだけど。

861 :デフォルトの名無しさん:04/07/16 20:00
まぁC#を使えなんて強制はしないよ。
しょぼくてセンスの悪い言語仕様と
C++の劣化コピーな乏しいライブラリと
劣悪な開発環境が好きならそれを使っとけ。

862 :デフォルトの名無しさん:04/07/16 20:01
文字列というか、配列周りが気持ち悪いよなぁ>D

863 :デフォルトの名無しさん:04/07/16 20:22
ただ煽りたいだけの奴が流入してるようだが
Delphiの人はボケに来てるのだろうか?

864 :デフォルトの名無しさん:04/07/16 22:59
>>861
劣悪な環境が好きなんです。

865 :デフォルトの名無しさん:04/07/16 23:24
ごめんDelphiはないわ…

866 :デフォルトの名無しさん:04/07/17 09:14
C -> VB -> C -> C++ -> Delphi -> C#
とやってきたけど Delphi が一番よいと感じたよ。
MS製じゃないから将来が心配だけど。
逆にMS製じゃないからよいのかもしんないけど。

867 :デフォルトの名無しさん:04/07/17 09:23
ここはD言語スレだ。D言語もやってから判断してくれ。

868 :デフォルトの名無しさん:04/07/17 09:38
IDEに浸かってるならDはまだ無理かと。


869 :デフォルトの名無しさん:04/07/17 10:39
ふーむ。
delphiがなんでいいか聞きたい気もしるが
さすがにスレ違いか。

870 :デフォルトの名無しさん:04/07/17 10:46
>>869
マルチプラットフォームなライブラリにリンクできるIDEという点。
完全にフリーで構文がCライクならとは散々言われてきた。

BCBXはどうなってんだろう・・・

871 :デフォルトの名無しさん:04/07/17 12:09
>マルチプラットフォームなライブラリにリンクできるIDEという点。

ビジュアルデザイン可能なIDEて意味でそ?
でないと>>866のすべての言語が満たしてしまう。

BCBXはデザイナ類はついてなかったはず。これはBCB系列でない。

でBCB系列たるBCB6は
CLXついてるからマルチプラットフォーム、というか
クロスプラットフォームか。これはdelphiも同じ。
というわけで、delphiじゃなくていいじゃんということに・・・?

WinだけのしとはどっちみちWinFXとやらで
既存環境での開発はアホらしくなるのか・・?

ヽ(´ー`)ノ オテアゲ〜

872 :IDE:04/07/17 15:55
つくっちまおうか

873 :デフォルトの名無しさん:04/07/17 16:06
>>866
BCBは?

874 :デフォルトの名無しさん:04/07/17 16:40
>>872
VCL(マルチプラットフォームなGUIライブラリ)が必要かと。
wxWidgetsのポーティングされた且つそれようのフォームデザイナがあれば神なのだが。


875 :デフォルトの名無しさん:04/07/17 19:14
ああ、BCBアカンやん
Linuxで使えないやん
DelphiはKylixあるから問題ない、
とそういうことなのカモ


876 :デフォルトの名無しさん:04/07/17 19:23
どうでもいいがdigが物凄い勢いでなかったことにされてるな

877 :デフォルトの名無しさん:04/07/17 19:26
DIDEが無かった事にされる日も近いですか?

878 :デフォルトの名無しさん:04/07/17 19:27
D言語界隈の人たちは飽きっぽい人が多いんですね

879 :デフォルトの名無しさん:04/07/17 19:44
D言語1.0の明確なロードマップって出てる?

880 :デフォルトの名無しさん:04/07/17 20:20
DMDScriptがphobosに組み込まれればアプリ開発言語としては鬼な気がする。
母体となってるECMAScriptが枯れてないから難しいのかな。


881 :デフォルトの名無しさん:04/07/17 22:50
D言語ブームまだー?

882 :デフォルトの名無しさん:04/07/17 22:53
言語が登場して普及するまでには5〜10年は掛かるからなぁ

883 :デフォルトの名無しさん:04/07/17 23:09
まぁ、廃れても廃れなくてもD言語は大きな意義ではあると思う

884 :デフォルトの名無しさん:04/07/17 23:12
Eclipse対応まだぁ〜?

885 :デフォルトの名無しさん:04/07/17 23:15
>>884
完全対応じゃないけど開発中だよ。

886 :デフォルトの名無しさん:04/07/17 23:17
でも多分開発途中で飽きるね

887 :デフォルトの名無しさん:04/07/17 23:18
中なの?eclipseDも放置組じゃない?

888 :デフォルトの名無しさん:04/07/17 23:21
ほんと飽きっぽい人ばかりですね

889 :デフォルトの名無しさん:04/07/17 23:23
いや飽きてるのは海外の人らだろ。ジャップにもちらほら飽きてる人はいるがw

890 :デフォルトの名無しさん:04/07/17 23:49
>>876
いつLinuxをサポートするんでつか?って聞きたい気分・・・

891 :デフォルトの名無しさん:04/07/18 00:37
>>876
激しくわらたw

892 :デフォルトの名無しさん:04/07/18 10:26
>>887
そうか?最終更新2004-06-14だけどダメ?

893 :デフォルトの名無しさん:04/07/18 16:10
組み込みECMAScriptを実現しようとSpiderMonkeyに手を出したはいいけど・・・
ヘッダファイルの変換作業が激しく面倒だと気づいて萎え気味。
この作業に耐えられる人はマジで尊敬します。


894 :デフォルトの名無しさん:04/07/18 23:53
よく知らないんだけどEclipseってJavaで書かれてるんでしょ?

895 :デフォルトの名無しさん:04/07/18 23:55
誤爆かな?でもその通りだよ。

896 :本7:04/07/19 00:13
WIN32版はネイティブAPIを利用してるけどな

897 :デフォルトの名無しさん:04/07/19 09:51
>>893
DelphiでDMonkey使えば?

898 :デフォルトの名無しさん:04/07/19 16:34
>>897

  ま た D e l p h i か !


899 :デフォルトの名無しさん:04/07/19 16:44
ヘッダファイルの変換なんて自動化しろよ

900 :デフォルトの名無しさん:04/07/19 16:53
dmc4d.exeみたいなのをDMが提供してくれてもいい気もするが。
そのうちツールとして頒布すると思う。

901 :デフォルトの名無しさん:04/07/19 22:26
alias int Hoge(const int) hoge;
だと「const使えねーよバカ」って言われるんだけどコレは仕様として正しいのかな?


902 :デフォルトの名無しさん:04/07/19 22:36
D言語って誰かが個人で開発してるの?

903 :901:04/07/19 22:44
大ぼけかました。

alias int function(const int) hoge;
これで怒られる。

904 :デフォルトの名無しさん:04/07/19 23:02
>>901,903
C/C++のconstとDのconstは意味が違うので。
http://www.kmonos.net/alang/d/attribute.html
http://www.kmonos.net/alang/d/htomodule.html
> D の const は、型修飾子ではなく記憶クラスです。

alias int function(static int) hoge;
で怒られるのと同じ。

905 :901:04/07/19 23:07
>>904
thanks

細かなところでCと互換性が無くなってるんだね

906 :デフォルトの名無しさん:04/07/20 00:58
>905
言語互換性を期待するのは、そもそも間違いだと思うが…
作者はC/C++とは違う言語作ろうとしてるんだし。
「細かな所で互換性が無い」のではなく、「所々似ている」だよ。


907 :デフォルトの名無しさん:04/07/20 06:13
>233
>    良く似ているが、少し違うというモノは、全然似ていないモノより始末が悪い。

アーゴの法則より

908 :デフォルトの名無しさん:04/07/20 18:20
PERLが嫌われる一番の理由だなw


909 :デフォルトの名無しさん:04/07/20 18:40
点数データ(初期値代入)が入った1次元配列のアドレス・人数を受け取って、
その最大点、最小点 平均点を求めて返す関数を作成してもらえたら助かります
前はC++で作成してもらったのですが、今度はC言語で解かないといけなくなりました。
提出日が今日までなのでお分かりの方いましたらお願いいたします。



910 :デフォルトの名無しさん:04/07/20 18:41
ごめんなさい スレ間違えました。

911 :デフォルトの名無しさん:04/07/20 18:42
明らかなネタの提供だが、まぁ気にしない。

912 :デフォルトの名無しさん:04/07/20 19:34
>>909
あまり詳しくないけど、こんな感じか。
void func(int[] data,out int max,out int min,out double ave)
{
int sum;
min = int.min;
max = int.max;
foreach(int score;data) {
sum += score;
if(score > max) max = score;
if(score < min) min = score;
}
ave = cast(double)sum / data.length;
}


913 :デフォルトの名無しさん:04/07/20 19:35
min = int.min;
max = int.max;
逆だった。
min = int.max;
max = int.min;


914 :デフォルトの名無しさん:04/07/20 19:36
プリミティブで型情報が取れるのは嬉しいよね。実際。

915 :デフォルトの名無しさん:04/07/21 08:25
ちょっとここに書いていいのか迷うのですが、DでWS_EX_TOOLWINDOW
なウィンドウを作ると何故かTOOLWINDOWにならずに閉じるボタンが
付いたり通常ウィンドウとのキャプション幅が真っ黒になったりする。
これは単にリンクするライブラリが悪い(DMD付属のもの)のか、作り方
が悪いのかどっちだろう…。
ぐぐってもゲーム系が多いみたいだしなぁ…、通常アプリ(?)をDで作って
る人いないですかね?


916 :デフォルトの名無しさん:04/07/21 08:44
>>915
std.c.windows.windowsにはWS_EX_TOOLWINDOW無かったんで自分でWS_EX_だけ定義してみたら
普通にツールウィンドウになった。自分のコードも疑ってみたら?

917 :デフォルトの名無しさん:04/07/21 12:59
>>915
DMのリンカが吐くEXEの問題かも知れない。
PEヘッダのバージョンが古いので、表示がWin3.x仕様になってるというもの。

初代スレかwikiあたりに情報があったかも。

918 :デフォルトの名無しさん:04/07/21 15:53
>>916
レスthx
portingライブラリはwindows.h for Dのやつです、書き忘れて申し訳ない。
なのでその辺は普通に使えました。

>>917
SUBSYSTEM Windows,4.0ですね、wikiでみかけて試したんですが同様。
ということはコードの問題か…。

単一ウィンドウなら普通にToolwindowが作れるんだけど複数出すとどうも
1つや2つ怪しくなる…コードを見直してみます。
thxでした。


919 :デフォルトの名無しさん:04/07/23 00:00
int delegate(int, double)[] onEvent;
onEvent ~= &Hoge.func;
onEvent ~= &Hage.fuck;

onEvent();

こんなC#風なアクセスはどうだろうか?

920 :デフォルトの名無しさん:04/07/23 01:24
>>919
わー、かこいー。
C#では、こーいうの普通なん?

921 :デフォルトの名無しさん:04/07/23 01:28
C#だと+=で連結できるね

922 :デフォルトの名無しさん:04/07/23 22:02
演算子をオーバーロードできるんだから
ライブラリでどうにでもならない?

923 :デフォルトの名無しさん:04/07/23 22:04
>>919
>>921
そういう風に演算子の意味を捻じ曲げるのは
混乱をもたらし見苦しさを増すから避けたい、
とか書いてた気がする。

>919は素直にforeachループでいいような気もする。
foreachなら巡回してるってことが分かりやすいし。

924 :デフォルトの名無しさん:04/07/23 22:23
onEvent.foreach();

925 :デフォルトの名無しさん:04/07/23 22:27
捻じ曲げるってほどでも無いと思うがなぁ。
「通知」が目的であって、「巡回」は実装に過ぎないわけで。

C#のイベントの偉いのは、外部からは += と -= でしかアクセスできないこと。
= を使って、勝手に全置換えされてしまうことは無い。
まぁ、>>922 の言うとおり、ライブラリでどうにでもなるけど。

926 :919:04/07/23 22:43
>>919の方法では-=に相当する実装が難しいねw
-&Hoge.fuckなんてしたらそれこそ捻じ曲げだ。

927 :デフォルトの名無しさん:04/07/23 22:50
そもそも加算演算子を連結に使ってるのが捻じ曲げだからなあ
といっても、D(とAda)以外はほとんど全ての言語がこの捻じ曲げを行ってしまってるんだけどw

加算と連結を区別するなら、減算と除去も区別しないと

928 :デフォルトの名無しさん:04/07/23 22:57
DelegateQueue、FunctionQueueを定義すれば問題なしだね
最初からインプリメントしてくれたほうが実行速度を気にしなくて良さそうだけど


929 :デフォルトの名無しさん:04/07/24 05:46
0.96のPerformanceCounterScopeはいいね。
最速OOPへの気合の表れと見える。と適当に誉める。

930 :デフォルトの名無しさん:04/07/24 13:25
wxWidgets for D マダー? チンチン

931 :デフォルトの名無しさん:04/07/24 14:47
あれはバリバリとマクロが使われてるからなぁ

932 :デフォルトの名無しさん:04/07/24 19:56
wxDはwxGPLやwxQtを使わずに作って欲しいな
DMさんは作ってくれなさそうだけどw

933 :デフォルトの名無しさん:04/07/24 21:30
http://andy.tadan.us/d/dfbth.d.html
これは += やってるね。

934 :デフォルトの名無しさん:04/07/25 01:57
0.99 → 1.00のバージョンアップで凄いことが起きるんだよ!

935 :デフォルトの名無しさん:04/07/25 02:28
0.99と1.00の間には0.991から0.9999があるけどネ

936 :デフォルトの名無しさん:04/07/25 04:38
0.a0 じゃないかな

937 :デフォルトの名無しさん:04/07/25 10:07
0.993141592…

938 :デフォルトの名無しさん:04/07/25 14:44
0.99
0.999
0.9999

 .
0.9=1に収束するとか。

939 :デフォルトの名無しさん:04/07/25 19:06
>>934-938
>>463

940 :デフォルトの名無しさん:04/07/27 00:27
何気なく検索してみたらEiffel(一度C言語に変換するオブジェクト指向言語)用の
wxWidgetsのリンクが貼ってあるページをみつけた
Eiffel用のwxWidgetsならC言語へのラッパがあるはずだからそれ活用しろってことかな?

941 :デフォルトの名無しさん:04/07/27 00:38
そのラッパを手に入れて、ヘッダをモジュール化するまでに挫折しそうだが

942 :デフォルトの名無しさん:04/07/27 00:39
自作クラスで、opIndex をオーバーロードしとるんだが、
組み込み配列みたいに、ArrayBoundsError を throw するのってどうやるんでしょう…
組み込み例外(?) のインスタンス化の仕方がわからんのです。
教えてちょんまげ。

943 :デフォルトの名無しさん:04/07/27 00:49
import std.array;

int main() {
throw new ArrayBoundsError("File",10);
return 0;
}

なんだが、コンストラクタがprivateなんだよねw

944 :デフォルトの名無しさん:04/07/27 00:51
dmd\src\phobos\std\array.d
に ArrayBoundsError が定義されてた。
うまくいったら報告よろしくね

945 :デフォルトの名無しさん:04/07/27 00:53
>>943
_d_array_bounds から呼び出せ、ってことかねぇ

946 :デフォルトの名無しさん:04/07/27 00:57
可能性としてはtryの中でなければthrowできないとか


947 :942:04/07/27 00:58
>>943
dクス。
俺の探し方が超悪かった。phobos の中探したんだけど見つからなくて、
組み込み例外なのかと思ってしまった。


948 :943:04/07/27 01:03
今のバージョンでは、他モジュールのprivateなコンストラクタも呼び出せるというバグがw

949 :デフォルトの名無しさん:04/07/27 01:07
wikiのバグ情報のページに、それに似たヤツが載ってたね。
大分昔からあるような気もしないではないが、それとも単に
バグ情報のページが更新されないだけかね。


950 :942:04/07/27 01:10
あ、ちなみに普通に new できて throw できました(まだ catch してないけど)。

コンストラクタの引数って this(char[] filename, uint linnum) なんだけど、
ファイル名と行番号をエラーメッセージに含めとくものじゃない気がしますね。
やっぱり組み込み配列専用なのかな?

951 :デフォルトの名無しさん:04/07/27 01:20
使用例として、 dmd/src/phobos/std/string.d の1823行目あたりに
 throw new ArrayBoundsError("std.string.sformat", 0);
というものがあったよ。
例外発生のモジュール名を突っ込んでおけばいいんじゃないかな。
line引数は分からない。

952 :デフォルトの名無しさん:04/07/27 01:22
単純にエラーの起きた場所でしょう。


953 :デフォルトの名無しさん:04/07/27 01:33
それはあれだ、コンパイラが解析中のソースコード中での
エラーコードの行番号を送るんだよな。
だから、利用元の行番号なんて知りようがないD言語ユーザ
側はてっきり使っちゃいかんもんかと思ったけど、とりあえず
0に設定しておけば、ユーザサイドでも使っていいんだな、これ。

954 :デフォルトの名無しさん:04/07/27 01:34
ごめん、ArrayBoundsErrorは実行時エラーか。

955 :デフォルトの名無しさん:04/07/27 01:58
単にメッセージを生成するのに使うだけだから、何でもいいと思うけどね。

956 :デフォルトの名無しさん:04/07/27 03:19
>>940
nice. wxHaskel におそらくそれから派生した(か流用した)のがあったから、それでやってみよう
かな。(とりあえずwxcのコンパイルだけした)

957 :本7:04/07/27 23:29
そんな変なものばかり使おうとせず普通にVCLライクな独自ライブラリ
つくろうよ。


958 :デフォルトの名無しさん:04/07/27 23:31
>>957
お前がやれ。言いだしっぺだしな。


959 :デフォルトの名無しさん:04/07/27 23:38
>>957
digにあやまれ

960 :デフォルトの名無しさん:04/07/27 23:57
流れを無視してすまんが、DのPhobosにはC#のConvert
みたいなもんはないですか?
Convert.ToInt32("ff", 16);みたいなことをやりたいんだけど
std.convのtoIntはDecimalしかとれないですよね?
int foo = toInt("10"); // ok
int bar = toInt("ff"); // ng
スマートな解決策はないですか?


961 :デフォルトの名無しさん:04/07/28 00:15
>>960
import std.string;

extern (C)
long strtol(char* nptr, char** endptr, int base);

long toHex(char[] str) {
return strtol(toStringz(str), null, 16);
}


void main() {
long foo = "0xff".toHex();
printf("%d\n", foo);
}

うまい方法が浮かばなかった。

962 :デフォルトの名無しさん:04/07/28 01:32
>>961
やっぱりちょっと回りくどい方法をとらないとダメですかねぇ。
std.stringで使えるsplitやjoin等もwcharには使えなかったりするし
(toUTF8すればいいだけだけど)ちょっと標準ライブラリに弱さが目
立つような気がする…。


963 :デフォルトの名無しさん:04/07/28 01:34
標準ライブラリに欲しい一覧を挙げてちょ
たぶん英語できる誰かが書いてくれるから

964 :デフォルトの名無しさん:04/07/28 01:58
書いてみて「こんなの作ったよ〜」と送ったら、採用されるかもよ。

965 :デフォルトの名無しさん:04/07/28 02:00
描画ライブラリ
マルチメディアライブラリ

966 :デフォルトの名無しさん:04/07/28 02:10
>>964
CPLな自由参加ライブラリDeimosを思いついたけど、どっかの糞が既に名前を使ってやがった。
私は悲しい

967 :デフォルトの名無しさん:04/07/28 02:12
Deimosはそれなりに良くできてるよ。
すぐ飽きちゃったみたいだけど。

968 :デフォルトの名無しさん:04/07/28 02:20
Degital Marsも他の何かに使う予定でいたんだろうな
ライブラリを予約しておかなかったからこうなる

969 :デフォルトの名無しさん:04/07/28 02:23
D界隈はいつも行き当たりばったりだな

970 :デフォルトの名無しさん:04/07/28 02:30
>>969
よく言われる。今は反省してる。

971 :デフォルトの名無しさん:04/07/28 07:10
>>969
行き当たりばったり出ないオプソプロジェクトなど無い

972 :デフォルトの名無しさん:04/07/28 11:48
Dってオプソなの?

973 :デフォルトの名無しさん:04/07/28 12:09
オープンソース( ttp://www.opensource.jp/ )ではないな。
ライブラリのソースは公開されてるが。

974 :デフォルトの名無しさん:04/07/29 00:07
とりあえずさ、GNU classpath かなんかを、Dで書き直してみるかね。
…と思ったけど、phobos と内容がカブりまくるのが悲しいな。

975 :デフォルトの名無しさん:04/07/29 00:39
template StringToIntegral(T) {
T StringToIntegral(char[] s,int base = 10) {
void converr() { throw new ConvError(s); }
void overerr() { throw new ConvOverflowError(s); }
int length = s.length;
if(!length) converr();
T result = 0;
int sign = 1;
int first = T.max * T.min;
for(int i = 0;i < length;i++) {
char c = s[i];
T v = 0;
if(c >= '0' && c <= '9') v = c - '0';
else if(c >= 'A' && c <= 'Z') v = c - 'A' + 10;
else if(c >= 'a' && c <= 'z') v = c - 'a' + 10;
else if(first && c == '+') {
sign = 1; if(length == i + 1) converr();
} else if(first && c == '-') {
sign = -1; if(length == i + 1) converr();
} else converr();
if(v >= base) converr();
v = result * base + sign * v;
if(sign >= 0 && v < result) overerr();
else if(sign < 0 && v > result) overerr();
result = v;
first = 0;
}
return result;
}
}

976 :デフォルトの名無しさん:04/07/29 00:47
>>975
なんだこれ?

文字列を整数に変換する?

977 :デフォルトの名無しさん:04/07/29 03:37
よくわからんけど、文字列->整数変換みたいだねえ。
boostのlexical_castのD版を目指したって感じかな?
lexical_castは逆も可能だった気がするけど。

978 :デフォルトの名無しさん:04/07/29 13:33
ちょいとDっぽく?

template StringToIntegral2(T=int) {
T StringToIntegral2(char[] s, uint base = 10)
in {
assert( base <= 36 );
assert( s.length > 0 );
// assert( is_signed!(T) || s[0]!='-' );
}
body {
int sign = (s[0]=='-' ? -1 : +1);
if( s[0]=='-' || s[0]=='+' ) s = s[1 .. s.length];
T result = 0;
foreach(char c ; s) {
T v = T.max;
if( '0'<=c && c<='9' ) v = c-'0';
else if( 'A'<=c && c<='Z' ) v = c-'A'+10;
else if( 'a'<=c && c<='z' ) v = c-'a'+10;
if( v >= base )
throw new ConvError(s);
v = result*base + sign*v;
if( sign>0 && v<result || sign<0 && v>result )
throw new ConvOverflowError(s);
result = v;
}
return result;
}
}

979 :デフォルトの名無しさん:04/07/29 14:37
>>975の、

int first = T.max * T.min;

これが何やってるんだろうな、と考えてたんだけど、
Tがunsignedな型の場合に0になるわけね。

int first = T.min * 1;でいいじゃん。

980 :デフォルトの名無しさん:04/07/29 14:58
* 1もいらんような

981 :デフォルトの名無しさん:04/07/29 15:45
そろそろ次スレ立てようか。
D言語 Part.4
ということで。

982 :デフォルトの名無しさん:04/07/29 16:23
>>981
よろしこ

983 :デフォルトの名無しさん:04/07/29 16:26
で、結局なにに使ってるの?
サンプルビルドして喜んでるだけ?

984 :デフォルトの名無しさん:04/07/29 17:10
× サンプルビルドしてるだけ

○ 喜んでるだけ

985 :デフォルトの名無しさん:04/07/29 17:19
[ソフトウェア板] おい!LaunchTab風味のランチャー作ろうぜ
http://pc5.2ch.net/test/read.cgi/software/1088683029/

D言語で作ってるらしいけど、ソース公開してないから、このスレ的にはあんまり意味無い。

986 :デフォルトの名無しさん:04/07/29 18:10
そか。なら紹介されても困るな。
いや、使ってることに変わりないから応援はするが。

987 :デフォルトの名無しさん:04/07/30 02:35
わずか5日でマイナー上げてる
現状のphobosのままで1.0に行ってしまいそう
何かこうどかっとソースが来ないとだめぽ

988 :デフォルトの名無しさん:04/07/30 18:11
>>987
0.99の次は0.100だろ?

989 :デフォルトの名無しさん:04/07/30 19:18
http://www.win.tue.nl/~aeb/linux/lk/lk-2.html#ss2.1
に見るLinuxみたいにもっと奇妙なバージョン付けしだしたりしてー。

990 :デフォルトの名無しさん:04/07/30 19:53
0.99 = 0.990
よって
0.991だって。

または、1.0 beta1

991 :デフォルトの名無しさん:04/07/30 20:02
D言語 Part.4
http://pc5.2ch.net/test/read.cgi/tech/1091185216/

立てますた。

992 :デフォルトの名無しさん:04/07/30 20:42
おつ

993 :デフォルトの名無しさん:04/07/30 21:12
スレ立てたくらいで疲れるような貧弱な奴>>991

994 :デフォルトの名無しさん:04/07/31 00:41
>>990
……。

一度、バージョン番号で何を管理しているのか考えてみる
事をお勧めする。

そうした上でその表記を用いるなら、それはそれで構わんよ。

995 :デフォルトの名無しさん:04/07/31 00:59
0.99p1とかじゃね?パッチは当てんといかんよね。大切。

996 :デフォルトの名無しさん:04/07/31 01:15
>>994
別に、呆れかえるほどのことでもないと思うけどな。
単純に、バージョン番号を数値と見なしてるだけ。
実際、そういうバージョン表記をしているところもあるし。

997 :デフォルトの名無しさん:04/07/31 01:17
むしろその方が多い。
LinuxKernelみたいなのが特別なだけ

998 :デフォルトの名無しさん:04/07/31 01:22
Version 0.998

999 :デフォルトの名無しさん:04/07/31 01:23
Version 0.999

1000 :デフォルトの名無しさん:04/07/31 01:24
Version 1.000

しかし、これは通過点に過ぎない。


1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

202 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)