D言語 Part3

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
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
過去スレ

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/
関連サイト

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
Delphi!
Delphi言語のことでしょ?
これがリリースされたとして、
どういう分野で活躍が予想されるでしょう?
ご意見をおきかせください。
>>6
過去スレ嫁
81:04/03/12 15:57
今更ながら、前スレを>>1に書いておいた方が分かりやすかった鴨。
次スレからよろしこ。

前スレ
【良いとこ取り】D言語スレ【実用重視】(Part 2)
http://pc2.2ch.net/test/read.cgi/tech/1070169122/
    
  /WW  
 (.,○∀・)  < ……ズヴァリ!
 く[ ⊂]      ここが新スレですな?
┏━━━━┓
┃      ┃
>>7
ていうか>>1嫁と言った方が早いのではw
>>1
Delphi後継としてVCLを書き直したBorland Dが出たらなぁ(夢想)
>>12
その前に委譲入れてよ
Mixin! Minxin! Mixin!
Minxin!!
Mixinより委譲のほうが同じこと出来てより柔軟だぞー、と、物議をかもしてみるテスト
>>16
委譲の特徴・メリットを熱く語って下さいおながいします。
>>16
委譲をMixinで実装することも出来そうな気がするんだけど、どうよ?
まず、委譲は、委譲される側が、そのことを考えて作られてなくてもOKってことだな。
Mixinだと、Rubyならクラスじゃなくモジュールにしないといけないし、C++だと菱形継承に気をつけないといけない。
それから、識別子が衝突しない、動的に移譲先を変えられる、集約が実現できる、など。
言語的にサポートされてるのがDelphiとUvaしか無いってのはマイナスだが、これは自分が他に知らないだけかも。

…こんなもんでいいか?
18がmixinの利点を熱く語ってくれることを期待
>>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 = ...

とどっちがスマートだよ。 えぇ?
両方やだ。
使うときにも、ポインタを後のほうに書くようにすりゃいいんだよ。
*だとまぎらわしいから^*にして
[y]^*[x]int array;
x = array[y]^*[x]

Cの設計者がこうすりゃよかったと後悔してたとか
>>22
いっそのこと宣言を逆にしたら。
ついでに ^* も @ にしちゃえ。

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

 moge@ = hoge[y]@[x];
>>22-23
> hoge [y]@[x]int;
> moge@ = hoge[y]@[x];

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

最悪だろこれは。
Cの設計者は"Complex C"でも作ろうとしてたのか?
そんなCCやC++なんかより、やっぱりDですよこれからは。
いや、>>23見易いと思うぞ。少なくとも素のC言語よりはずっといい。

@を^にして、変数名と型の間に":"入れたら、Pascalになってしまうのがアレだが
//現状
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; //不正

同じ事だった。(´・ω・`)
>>19
ありがとう
委譲が便利だと思っていたのを俺だけじゃなかったのね⊃д`;)
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

あー、でも関数ポインタとかどう書くんだろ。
上で語ってる委譲というのは
ttp://hp.vector.co.jp/authors/VA028375/delphi/delphipascal_oo_implements.html
このページで解説されてる委任のこと?
前置に固執しているのは俺独りだな。

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

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

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

現状からの違和感から言うと、後置の方が自然だろうね。
もしかしたら、宣言の記述の仕方も直感にそぐうかも知れん。
オブジェクト指向的だからね。
DでRichEditコントロール使ったことある人いますか?
IME変換中の波線、下線が変換確定後も消えません。
Cで同様のコードを書いてもこれは再現しないし、どうしたらいいのか
ほとほと困っています。
32デフォルトの名無しさん:04/03/15 21:31
前スレより落ちてちゃイクナイage
>>31
ソース見せてくれたら考えなくもない
3431:04/03/15 23:12
http://up.isp.2ch.net/up/afab2563f7b1.zip

ソースと一応バイナリーもつけました。
ソースの一部はどこかのサンプルから一部流用しています。
3531:04/03/15 23:22
このアップローだめちゃくちゃ反応鈍いですね。すみません(汗
>>31
原因はよくわからなかった

日本語入力後にCHARFORMAT2のdwEffectsとbUnderlineTypeがなぜか書き換えられるようなので
サブクラス化して阻止すれば回避できそう
>>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のバージョンが古いだけかもしんね。スマソ。
3831:04/03/16 22:40
>>36-37
どうもありがとやんした。上げてもらったURLも参考になりました。
とりあえず解決です。
D言語ブームはやっぱり終わったの?
もうちっとだけ続くんじゃ
むしろいつブームになんてなってたのかと
だってなぁ。
追加して欲しい機能が追加されるのがいつになるか分からん状態の上、
コンパイラのバグが不安だし、仕様もころころ変わる状況だし...。
とりあえず欲しい機能の提案はし切ったから、
あとは完成までひたすら待つしかないじゃん。
やることないならライブラリの移植でもしてろバカ
ブームって、この板ローカルだろ?
仕様がコロコロ変わる言語のライブラリ作ってもなぁ。
>>42
いつか Microsoft が C# にパク・・・
いや、取り入れてくれるさ。
D にあって、C#(2.0) に無いものって何があったっけ?
センスの悪さ
契約
debugとかversion とかあるんかい、C#は
>>50 そのあたりは、#ifdef でどうにでもなるっしょ。
言語レベルでインラインアセンブラサポート
>>51
debug 関係は属性でなんとかなるはず。
Walter
>>47
c#(2.0)ってネイティブコード吐けるのか
>>55 ネイティブとマネージドの違いがあることは誰でも知ってる。
つーかC#がネイティブ吐けたら最強なんだが。
Longhornになったらネイティブ並に速くなるのか??
.NET ってのは要するに Wintel からの intel 外しが陰の目的なんだから、
いまの intel ネイティブコードはエミュレーションで走るようになって逆に
遅くなりそう。
98年ぐらいはIntel>>MSぐらいだったのが
完全に出し抜かれた感じだね。今じゃMSが新しいバージョンを
リリースしてくれないことには、買い替え需要もないし。

で、intel ネイティブコードをエミュレーションってなんのこと?
バイナリトランスレーションとか呼ばれてるやつ?それと.NETに
どんな関係があるんだろ。説明しろ>58
>>59
.netを拡張したヤシ(WinFX)が新しいネイティブAPIになるんでしょ確か。
んでwin32APIはエミュレーションになって遅くなると。
>>58
>intel ネイティブコードはエミュレーションで走るように
これの説明になっとらんぞ
Win32はエミュレーションになるとは限らないんじゃなかった?
CDCの記事でどっかのニュースサイトが書いてたはず。
63デフォルトの名無しさん:04/03/24 00:28
D Front End for GCC - Release 1b
http://home.earthlink.net/~dvdfrdmn/d/
もう知れ渡ってると思うけど、一応張っとく。

今、Solaris でコンパイル中。明日の朝出社したら実行ファイルができているはずだ。
これで、まともな GUIフロントエンドが完成したら、俺はもうDしか使わないぜ。
へえ、こんなのあるんだ。これ正規のパッケージとして
取り込まれたらDの認知度も上がる?それともobjc程度の扱い?
> D にあって、C#(2.0) に無いもの
あんまり挙がりませんな。C# 1.0 なら幾つもあるんだが。
やはりMSの開発速度には着いていけないのか……。
C/C++直接コンパイル可能
C# 2.0 の言語仕様についてまとまっているサイトきぼんぬ
ワードもってないからワードパッドで読んでるんだけど
激しく読み難い。なんとか汁!>MS
>>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 (クラスを分割して定義できる)
俺は、その言語の指標として、その言語の標準ライブラリが
いかに言語の能力を生かしユニークな作りになっているか
みることにしているので、それが無いDはまだ評価の段階にいたっていない感じ。
7271:04/03/24 13:19
Phobosってのがあるのね、しらんかった
>>71
Dはひたすら中庸に逝って欲しいけどね。
C++ではなくC with class+GCを素直にやってくれればそれでいいよ。
warota
partial classはMixJuiceに対抗したのかな
それらに対してDはmixinで対抗
76デフォルトの名無しさん:04/03/25 00:58
Dのアプリを実行するのに、環境はいらないの?
JAVAではVM,C#では、.NETにあたるものは必要ないのですか?
ガーベジコレクションとかは、なにがやるのでしょうか?
コンパイル時にガベージコレクションを実行するコードが挿入されるんじゃないかな(適当)
>>76
一応OSが必要だねぇ
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.

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

81デフォルトの名無しさん:04/03/29 11:55
>>80
イェイモー
82デフォルトの名無しさん:04/03/29 22:58
DIDE起動時に勝手にIEが開くんだけどなんとかなりませんか
83D 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.
hashをforeachするさい呼びだされるkeyの順番を制御できる?
構造体の配列をソートする際ソート順を制御できる?
85デフォルトの名無しさん:04/04/01 22:29
www.dsource.org

DWT A port of the SWT (Standard Widget Toolkit) GUI Library
完成が待たれます。
86sage: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]);
}
87sage: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のソースってどうよ、漏れは激しく読みづらい。
あれが限界なのか? もっと気合入れて作れないものかと。
>>90
よみづらいって具体的には?
DTLまだぁ?
OTLまだぁ?
_noまだぁ?
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にいかないのは仕様だっけ?
>>96
仕様みたいだね。

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

http://www.kmonos.net/alang/d/expression.html
> 等値式
>
> 浮動小数点数の場合は多少複雑です。-0 と +0 は等しいと判定されます。
> どちらか一方でも NaN であれば、 == も != も結果は false になります。
> それ以外の場合は、ビットパターンで比較されます。
未初期化変数はNaN(Not a Number)で初期化され、
比較式にNaNが含まれる場合比較対象に関わらず偽となる。
だったかな? 仕様書確認せず記憶だけなのでフォローよろ。
まあしかし直感に反するフローなのは確かだな。

そいや===演算子でNaNと比較したらどうなるんだろ。
コンパイラ手元にないから確認できねえや。
うむ。なぜだか知らないが時間的に前にフォローが入っているようだ。>>97thx
100デフォルトの名無しさん:04/04/03 16:14
「!=」でtrueになった……?

バグか バージョンが古いかどっちかか
落とし直しー
101100:04/04/03 16:14
sage忘れ……
平衡木によるテンプレートコンテナクラス(std::setのようなもの)のDでの実装ってどっかにある?
なかったら自分でつくる(パクル)けど。
>>102
void[value_type] では不満?
104102:04/04/04 12:46
>>103
不満だなぁ。それだとforeachとかで順序が指定できないよね。
begin, ++, endの操作(イテレータ)が欲しいわけ。
もし出来るんだったら教えてくらはい。現状先頭から順番に巡回できればいいです。
ちなみに配列に変換してソートするとかは無しね(;´Д`)
105102:04/04/04 12:50
なんか上の文章おかしいな。
foreachで呼び出される順序を指定できる仕組みが欲しい。
常に指定した順序で整列してて欲しい(頻繁に挿入〜巡回するので)。
ただそれだけです。
[C++]void fuck(const string& str);
D言語でこの関数と等価な関数はどう書いたらいいのでしょうか・・・
[D]void fuck(char[] str);
これだとただのコピーになっちゃって;;
inoutとか。
10886: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]);
}
これでできる。仕様ちゃんと読むべし。
static int[char[]] h=["aa":1,"cc":2];

Error: cannot use array to initialize int[char[]]
とエラーになるのは仕様ですか?調子わる
>>109
連想配列についての初期化の記述無いっぽいけど。出来ないんじゃ
なんとかマガジンにやねうらお氏の紹介記事が載ってたな
>>111
Software Design (ttp://www.gihyo.co.jp/magazines/SD/contents)
かな
まだ読んでないけど、どんな感じだった?
113デフォルトの名無しさん:04/04/05 22:31
自作のCライブラリでもDからそのまま使えるの?
そのまま、というか、宣言してやれば。
import c.mylib;って?
>>115
そのmylib.dを書くのが面倒なんだよな。
なるほどね。Cのソースをそのまま読める訳じゃないんだ。残念。
要するに.hから.dに変換するツールがあれば無問題なわけだ。
>>112
「なんとかマガジン」ってひとっつも当たってないところに笑った

俺もそれ立ち読みした。
ゲームを開発するときの言語を比較して、Dはそこそこ便利ですよ、
ただ、まだαですよ、最終的な判断は皆さんにおまかせします、
っていう内容だったような。当り障りの無い言語紹介かな。
>>117-118
D言語用のswigがあったような気がする
ドラフトの段階から乗り換える事を決めていた。
今のα仕様だけど、なかなか読んでて面白いね。
typedefとaliasのおかげでコードがすっきりしそう。
split("aaa","c");

"aaa".split("c");
のようにも書ける仕様はどこに書いてありますか?
>>122
上は関数で下はstringのメンバ関数でないかい?
とりあえずやねうらおってのに萎えた
125デフォルトの名無しさん:04/04/06 22:40
そのやねうらお氏はいまC#にご執心のようだ。
Javaよりこっちの方がいいな
まだリリース版出ないのかねぇ
>>123
print(char[] a){
printf("%.*s",a);
}
"aaa".print();
と、第一引数のメンバ関数のように使えちゃうみたいなんだけど、なんでかなと。
import std.stream;
void print(char[] s)
{
stdout.writeString(s);
}
int main()
{
"aaa".print();
return 0;
}
面白いけど使いそうにない
129128:04/04/07 13:10
このタイミングで重複とは_| ̄|○
それってstringのメンバ関数とコンフリクトしたらどうなるんだ・・・
>>127
>第一引数のメンバ関数のように使えちゃうみたい
仕様読んでる途中だからよーわからんけど、「みたい」」というか、そう最適化されるんでないの?
Dの配列はCと違って、サイズ情報などを保持するオブジェクトだから、第一引数に属するメソッドとしたほうが効率的かなと

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

みたいに明示的にClass化しなくても、Moduleで簡単に骨太にできる。
コード上はClassっぽく扱っていても、実際はコンパイラが等価に書き換えるだけで実行時コストの削減に繋がる。
132修正:04/04/07 13:26
>>131
× 第一引数に属するメソッドとしたほうが効率的かなと
○ 第一引数に属するメソッドと見せかけたほうが効率的かなと
133131:04/04/07 13:33
サンプルの上と下とで言ってる事が逆だな俺w
ようは継承やインスタンス生成のコストを極力減らせる仕様なのでは?と。
開発者推奨のコードスタイル、ハンガリアン記法のコメントにワロタ
Dコンパイラ、専用のバグ報告場所作った方がいいと思う今日のこの頃。
英語出来ないからあってもなぁ
出来なかったらこのスレか別のDコミュニティに投げて代わりに訳して貰うとか。
ver.0.82が最新なの?
ネットワークプログラミングは出きる?
>>138
ココ見るとver.0.82が最新だーね。
http://www.digitalmars.com/d/changelog.html

ネットワークプログラミングってどの辺までを求めとるか分らんが、ソケットから書くのが苦痛でなきゃ
できるよん。実装例挙げるとこんなのとか。
http://user.ecc.u-tokyo.ac.jp/~s31552/wp/attohttpd/
D言語のロゴが(゚Д゚)に見える
ゴルァ言語
言語のバグを見つけられるなんてすごいね
俺なんか自分のバグすら取るの大変
>>139
ありがとう。乗り換えるべく勉強してみるよ。
>>142
自分のバグですら取るのが大変なのに、言語のバグが原因だったりするから、
 現状では使い物にならない ⇒ 熱が冷めた
になったんだと思われ。
D言語はもう熱が冷めたんですか?
ってかやねうらおさんですか?
同スレッドにあるとGCが発動してしまうバグ
これが何とかならないとD言語は使い物にならない
とか言ってましたけど
あれは直ったんですか?
局所的に熱かっただけかと
というか>>144の主語は誰のことだ
>>145
>同スレッドにあるとGCが発動してしまうバグ
意味がわからない。
別スレッドでさえもnewしないようなスタイルは難しいから、
結果としてGCが走るのを抑えられない(gc.disableが未実装)
ってことかなー
スレッド単位でGCが動いてしまうってことでは?
Linuxだったかな、見かけ上はスレッドだが、
負荷はプロセスと何ら変わらないってOSもあったり。

まだまだOS互換性が取れていないのでしょう。
GCを制御するほど高度なプログラムなんて打ったことがないよ
どんなときに止める必要があるんだろう
パフォーマンス最優先の時
>>150
Dリファレンスの翻訳サイトのガベージコレクションの項に書いてあるよ。
>>145
>D言語はもう熱が冷めたんですか?

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

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

・・・青い鳥症候群だな(通常の意味合いとは違うけど)。
でもさまざまなゲームが作れてこそ
今の時代はプログラミング言語だよな

常にリアルタイムで画面を再描画しなくちゃいけないゲームや
またはパズルゲームなど
魅せ方が工夫できればできるほど
そして、それを楽に作れれば楽に作れるほど
有用なプログラミング言語と思われがち
熱が冷めたというより、「まだβなのね」という意見なのでは?
0.82ならαというよりβだよね?
モジュールをインポートするためにヘッダ作ってプロトタイプ書いて、、、って手間が省けるってだけでDマンセーなのは私だけでしょうか?
市販のC++ IDEとか使ったことないけど、自動でヘッダ作ってくれたりするんかな?
>>156
C/C++が腐ってるだけで、Dに限らず他のほぼ全ての言語ではそんな必要は無い罠
おいおい、他言語でもヘッダファイルは必要だぞ。
C/C++ではさらにインポートライブラリも必要だが。
結局、楽に作れるかどうか?
資料は充実してるかどうか?

プログラム言語が流行るかどうかなんて
そういう単純なところだよね
STL欲しい
>>160
何か落ち込んでるのかと思った

最近OTL見すぎたかな
>>161
最近はすぐ落ち込む人多いね
顔文字使う感覚なんだろうけど
ネタだよなぁ

鬱だとかすぐ言われるよりはマシ
>>152
ありがとう、読んで見たけどよくわからなかったよ
>>156
その手間は全体からすると大した問題じゃないかもしれない。
漏れはまともなモジュール機構とプリプロセッサ排除の恩恵(?)で、
コンパイルが激速なのが嬉しい。
GCも付いてるしかなり楽できるんじゃないかと思う。

>>159
同意。言語の表現力で人気がでるなら、
最近の関数型言語(Haskell、Concurrent Clean)のスレが
ム板に溢れているはずだ。
>>158
んー…Ada/Modulaあたりはモジュール化されてるとはいえヘッダ「ファイル」があったり、
Pascalは同じファイル内とはいえプロトタイプ宣言が必要だったりするけど、
JavaにしろC#にしろHaskellにしろ最近の言語は大抵はヘッダもプロトタイプ宣言も要らないよね
>>164
FPSを常に30なり60なりに保つには、GCによるメモリ回収は切っておかないといけない。
その理由は、メモリ回収中はプログラムを完全に停止してしまうから。
だからゲームプレイ中はGCをスリープさせて、スコア画面中に手動でメモリを回収する必要が在る。
>>167
MMORPGのような、シーン切り替えがいつ発生するか分からないようなのは
GCを呼び出すタイミングが難しいですね。
結局のところGC付きの言語ででpressureの大きいリソースを扱う場合は
Cacherを通して管理、巨大なバッファを確保したりする際は、
アロケーターでGCのスキャン対象外にして、自分でメモリー管理。
要するにC的なプログラミングをしなければならない。
と、やねうらお氏が言ってました。

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

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

この場合はポインタiがアドレスを放棄した時点でGCは回収にリストに入れます
>>168
MMORPGは寧ろ頻繁にGCを動す思いますよ。
下手にリークメモリを貯めるとその分復帰に時間が掛かりますので。
チャット組のために一定時間ごとにこまめに動くんじゃないかな。
その場合はGCじゃないだろ
そういうゲームってGC動いてないんじゃない?
こまめに動くよりも自分で解放するほうが処理とかも楽そうだし
>>167
よくそういうことがいわれるが、どのくらい止まるかってことには、
全然触れられないんだよな。

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

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

実際どうなのよって話。
例えば2Mの画像を破棄したとき
どうなる?
>>174
deleteで破棄すれば強制回収という仕様があったような。
どうでもいいけど
D言語でアナルオナニーしていいですか?
>>176
どうやってするのかわからないので、実況しながらお願いします。
D・V・D!!(ry
>>173
>どのくらい止まるかってことには、全然触れられないんだよな。

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

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

プログラマにとってこれほど怖いものは無い。
一部のみGCを使えればね
>>179
そのためのversionやdebugなどなど
コンパイル時のパラメータによって出力が変わるようにしてるんじゃないかな?
>>179
わかった
予測できないから、使えないってことね

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

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

是非、彼にもそう言ってやってくれ。
おかしな話だ。D言語は中・大規模なソフトウェア開発のために作られてる。
メモリリークと戦うか挙動不審なGCと戦うか、非常に悩むところだ・・・
>>179
Incremental GC でも話にならないかね?
大き目の共用体を含むクラスでも設けて、必要なくなったらdeleteで強制回収。
リアルタイム処理につかうメモリを全てそのクラスで扱えばいいような気が。
>>168-169
DのGCはint型でもそこにポインタ値らしきものが入ってたら解放しないんじゃ?
メインスレッドで毎回resumeAll呼び出しじゃだめ?
>>186-187
そんなやり方は、皆が承知している。

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

結局の所は個人の主観の問題、というか、
アプリケーション開発というものに対するポリシーの問題だよ。
>>179
全部rewriteしなくてもいいだろうに。
いや書けるでしょ。
その書き方は嫌だから無理ってのは意味不明。。。
ABA Gamesさんとこのゲームはシューティングだからまさに
FPS維持が問題になるけどそんなに問題になってるようには見えないが、
GCまわりはどうなってるのかな?
大量のメモリさえ確保できれば、DにGCだからという欠点はないよ。
DのGCにバグがあるのとは、また別の話 :-)
つまりGC自体がバグだと言いたいのは良く解るんだが
そんな物はつけなくてもよろしいのでは?
GCがあるほうが開発コストが安いからねぇ。
197やねうらお:04/04/12 02:59
>>193
ABAさんのゲームは、ゲーム中(リアルタイム性が必要とされる部分)では、
コーディング上のミスが無い限りは、newは1回も呼び出してないはずです。
(要するにGCは一切呼び出されないです。)
その携帯のJAVAみたいな組み方はすげーな
>>198
だって元々そういうJavaアプリをバリバリ書いてた人だもん。
↓下記参照。
http://d.hatena.ne.jp/ABA/20040326#p2
やねうらおの言い訳 age
http://d.hatena.ne.jp/yaneurao/
>2004-04-13 いろいろ考え中
201200:04/04/12 19:14
アゲ間違え sage
>>112
激しく遅レスですまぬ。
Software Designの記事を読んで思ったのだが、
ひょっとしてやねうらおは、C#の using を構文糖と気づいていないのか?
リアルタイムで動かすならば
常に回収をすればいいわけか
>>203
そうだね。
まったくしないか、気づかせないほど細かく回収するかのどっちかだ。
>>200
Dで大規模プログラムの仕事なんて出すわけないじゃない
β仕様のβコンパイラで何を作れとw

茶碗をチンチン叩きながらマターリ待ちましょう
>>202
>ひょっとしてやねうらおは、C#の using を構文糖と気づいていないのか?

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

ildasmで見ればtry〜finallyでDispose呼び出すのと同じコードが
生成されていることは明らかなので。
>>205
> Dで大規模プログラムの仕事なんて出すわけないじゃない

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

詳細 <福島県いわき市のお手玉11個に成功したスーパーおばあちゃんを称えるスレ>
http://tmp2.2ch.net/test/read.cgi/mog2/1076074534/l50
良く解らんけどGCの使い道を強力に使えるゲームがある

エロゲー
リアルタイムはどうでもいいものなら
GCは無茶苦茶強力な武器なんだよな言うまでもなく
キッコータイマーとかいう
時計作ったけど
C言語に作り直したらメモリーリークしてびびった
メモリ50%使用の状態だったのに
一時間つけてたら90%とか40%も増えてた

GCは楽チンでえぇね(´∀`*)
>>212
GC があってもリソース解放忘れは防げないので、ご注意を。
曲線描画でpoligonだっけ?
なんかそんな感じの使っててメモリを解放し忘れてただけだったから平気w
D言語しながらじゃがりこ食うのっていいよな
Cはmallocとfreeを何度も繰り返すと、メモリのフラグメンテーションでも起きるのかね?
freeしたところが再度使わるのであれば、時計程度でメモリリークなんてしないよね
まあ、そりゃmallocとfreeの実装によるだろう。
んでもとりあえず一般的だろうと思われるmallocとfreeの実装で、
毎回サイズの違うメモリをmalloc/freeしまくったら
メモリのフラグメンテーションがおきる可能性はかなりありそうだな。

それとメモリリークってのはmallocしたのをfreeしないことであって、
ちゃんとfreeしてるならそりゃ(フラグメンテーションが起こっていても)
メモリリークとはいわない気がするがどうか。
処で、50%から90%に増えたのなら40%増ではなくて80%増だと思うのだが。
>>214を無視しないで話を進めないでくれ・・・
つづりとか関数名を忘れたことは謝るから
PolyPolylineの第ニ引数のPOINT*を毎回mallocで作ってた癖に解放し忘れたわけ
だからメモリリークを起こしました

それだけです
つまり>219は阿呆だったと。
大丈夫、あんたの場合は言語に関わらず同じような阿呆を繰り返すよ。
>>218
この難解な謎解きは俺への挑戦か?
%を単位と取るか記号と取るかで表現が変わるけど
意味合い的にはどっちも間違いじゃないと思う
>>221
> 意味合い的にはどっちも間違いじゃないと思う
よく混同して用いられるけど、正確には間違い。
前者はパーセントといわず、ポイントといいます。

つまり50%→90%は40ポイント増または80%増。
>>220
メモリの解放はすべてGCに任してたわけですけど
それは阿呆なんでしょうか?
ならもうD言語はやめようと想います

少し移植が上手くいかなかっただけで文句言われたらなぁ
大体もう解決してるし過去の事をとやかく言う方がアホだろうね
>>223
厨房に煽られたぐらいで止めるとか言うなら勝手にやめろ
大体バカ相手にしてるお前もバカだって事ぐらい解れ
同感だな。2chから有用な情報を取り出したいなら、
情報選別能力と煽り耐性は鍛えておいた方がいいぞ。
メモリ解放だけがプログラミングじゃない。
そんなところで躓く香具師はメモリ解放を他人任せにできても
どうせ他で躓く。

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

問題が起こった時、その尻拭いをするのが別人だという
点を除いて、な・・・
>>226
の意味が解らない
他人任せ=GCなのか
バグを取り除くのが他の人なのか

そこんところをはっきりしてくれ
>>228
他人任せ=GCの意味に見えるよ。文脈的に。

ところで漏れは上のほうにあった保守的GCの性質、
つまりint型でも中にポインタ値らしきものがあったらそこは解放されないのか?
が気になる。
だとしたらさ、(int型の)static変数に偶然そういう値が代入されちゃって
その後不変だったらそこは解放されなくて、
しかもGCが辿るポインタのチェインの根元の方だと
(かつその先のポインタはそこからしか辿れない場合)
その先も解放されない、ていう、かなりいい加減なGCってことだよね。
しかもどっかの記事によるとbyte配列も4byte alignで辿るみたいだし、
偶然ポインタ値と一致する、なんて結構あり得るんだよね。
もちろん自分で色々試してみたんだけど、今いち確信できないんだよ。
ただやっぱりint型でもポインタ値突っ込むとそのポインタ値は100%
解放されない。ポインタ値を突っ込んだint変数をクリアしても、
解放されないことはあったけどね。
スタックかどっかに残ったままになってたのかね。
詳しい人いたら、情報よろしく頼むね。
あぁそうそう最後にnewしたオブジェクトは、
fullCollectしても解放されなかった気がするな。
この辺の挙動もどういう理由か、わかればスッキリするよね。
分からなくても、別にいいんだけどさ。
保守的GCが使えないってのは、良くある結論だと思うよ。
毎フレームfullCollectして1回のGCにかかる時間を減らせばいい、
なんて言ってた人いるけど、そうじゃないよね。
1回のGCでドコも解放されなければ、その時間は全て無駄だよね。
データ配列として10MBも確保してるような場合、
毎フレームスキャンするんだよ。正気の沙汰じゃない。
Dでリアルタイム性が重視されるコードを書くなら、
GCは走らせちゃだめなんだよ。大規模になればなるほどね。
最後に一つ提言しとくよ。
Dの言語仕様はC++よりはまし。その程度のものなんだよね。
ラムダもクロージャもなければMixinもないし。
まぁin,out,unittestや組み込み配列は妙に便利なのは認めるけどさ。
世の中探せばもっと表現力があってライブラリーも(少なくともDより)
豊富な言語は、それなりにあるよ。その中には関数型言語が多いね。
でもC/C++からの低い学習曲線っていうその1点が、
Dの大きなアドバンテージなんだろうね。
C#でネイティブコードを吐けるようになれば、
Dのポジションは完全に失われちゃんだけどさ。
Dのメリットは、旧式リンカの上で割と新しめの言語機能を…だと思うけどな。
C#にしてもJavaにしても、文法からしてランタイムがあって実行時にダイナミックなんちゃらができるの前提でしょ。
だからネイティブC#が出来ても同じだけのパフォーマンスは期待できないはず。
マネージドコードでポインタが追跡できてインクリメンタルGCが可能になる分、GCに限っては性能出るかも知れないけど。

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

>>220-228
何か職場で嫌な事でもあるの?
お兄さんが相談にのるよ?
>>235
現時点での結論。そんなのなんだって言える事だろ。
そうそう。クラスも使えるC言語程度の低レベル言語使ってるような気分でいれば、
C/C++のいちいち気に触る文法が細かいところで改善されててとても素敵。
贅沢なプログラミングがしたいならDはお薦めできない。
>>236
だからそれが意味あるの?って聞いてるんだが
自己満足だろ。まぁ日記。
アホはどっちなんだか
お前ら、なんだか上の議論が理解できない漏れみたいなアホめにコードで語ってください。
D言語にはC++のSTLにあたるものは標準で付いてくるの?
>>242
今portingしてるから待ってれ
なんか少林サッカーみてたら
香ばしい流れになってる
でも読んでて楽しい

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

うちはふつーにできてるけど
もうちょっと詳しく話してみて
>>245
触ったの結構前なんですみません
モジュールを追加してくと変数名や型の重複が目立ちますよね
以前win32apiを使いたい時に色々追加したらそうなっただけです

今はわからないです
つまり、毎フレームfullCollectを使う人は
大きいメモリをmallocで確保しろと
C++/CLI 触ってみた。
従来の C++ のコードと、マネージコードが混在していて楽しい。
テンプレートも使えるし。仕様が固まったら、かなり良いものになりそうだ。
249248:04/04/19 11:45
む、誤爆。スマン
本当に誤爆なのか。
わざとだろ(w
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

ガイシュツだったらごめん。
DIDEでUTF-8でもSJISでも文字化けするのは仕様?
実行ファイル上では問題ないからエディタのせいだよね?
CGI用のロックとかするにはどうするのがベストなんだろう?
OSによって、ロックファイル使えれば使って、使えなければループで回ってみたい
なコード書かなきゃだめかなぁ?
ライブラリにあるといいんだけどなぁ。

ロックって安全は安全だけど、ロック解除直後から別ルーチンの処理開始までが、微妙に遅かった気がする。
まあそんなことはどうでもいいか。
×別ルーチンの処理開始までが
○別プロセスのファイル処理開始までが
ぜんぜんレスがなくて寂しいなぁ
どれ、D言語でDirectXでプログラムでゲームで遊んでみるか
std.mmfileを使ってロックできるんじゃない?
>>257
中身無いんですけど。
>>258
次のバージョンあたりには、ついてくるんじゃ?
そのときついでに、プロセス間の同期もできるんだろうから、それ使えばきっとOK
あるファイルで以下のように定義。
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()); //コンパイル、実行できる。

オーバーロード時の属性関係のバグか。
同じファイル内だとprivateが無視されるかんじだけど、バグ?
同じファイル=モジュール間のものは互いに friend になる仕様
モジュール内グローバル変数は自動でextrnになる仕様?
つまりC/C++と比べて宣言の仕方が逆になったということ?
Classの省略規則からしても逆なわけだから混乱するね
265253: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[])で、プロセス間で同期できるといいなぁと。
クリティカルセクションは簡単に同期できるのに、プロセス間が簡単に同期できないって変でしょ。
>>265
大丈夫かどうかはスレッド100個くらい作って指定時刻と同時にDoSチックに攻めればいい。
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."
}

仕様? バグだとしたらとっくに露見していそうな感じするけど
普通は先にstatic書くから、気づいてない確率が高い。
バグだろうけど、仕様としたほうがソースの可読性向上になるね。
class hoge{
 int x;
}
class hogehoge: hoge{
 override int x;
}
とやって、
 hogehoge a = new hogehoge;
 a.x = 10;
 printf("%d\n", ((hoge)a).x);
とやったら、
10が表示されてほしいなぁ…
ちがった間違えた。
class hoge{}
class hogehoge : hoge{}

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

こうだ。
override なんかしなくてもできるような気がするのは気のせいか?
基底クラスのメンバ変数と同名の派生クラスの変数を宣言すると、
基底クラスの関数が派生クラスの同名変数を変更してくれんのよ。
>>269と同じような話。ようは両者が区別される。

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

>>272
再利用性に掛けるから、便利そうに見えて実は大げさな処理に感じる。
再利用って言うのはどうもいけ好かない
あんなの再利用できるのを選別してる間に新しいの書いたほうが有効だっつーの
そうだな。再利用と言っても実際はコピペだし
新しいプロジェクトに合わせるために継ぎ接ぎだらけになって結局劣化するし。
>>275,276
再利用の単位が大きすぎるとそうなる。
もっと基本的なものを作れ。
>>277
表現が変だったが
C++でいう再利用ですが
たとえば文字列をフォーマットしたりとか
そういう単純な関数の再利用は俺も賛成派です
再利用を目的とした機能の分割じゃなくて、
見通しや関係の理解しやすさからクラスわけしてる。
 hoge h;
 h = new hogehoge;
としちゃうと、hogehogeのメンバにアクセスするとき結局型決めうちになるから、
抽象化も型安全性もない。それだったら最初から、「hはhogehogeとして扱いますよ」宣言
をしておきたいんだ。

あれかな、override hogehogeは、override hogehogeを持つクラスを再利用するためじゃなくて、
継承もとのクラスをよく再利用するために欲しいと思うんだな。
280デフォルトの名無しさん:04/04/25 21:08
GC実装したカーネルってあるのかな?
まだ研究中とかでもいいんだけど、そこにDを売り込みたいね
DのGCについて理解を深めてからもう一度コメントどうぞ
>113>115>117>126>134>138>140>141>142>242>244>252>256>262>264>280
2,3個自分のが入ってる
DだろうがなんだろうがGCはGCだろ
たとえばメモリ解放の手順がいろいろあるように
GCの手順もいろいろ、動作もいろいろ
同じとみるな
”いろいろ”なんて言葉にしてみれば
大した事が無いなんて事が多いよ
287デフォルトの名無しさん:04/04/27 09:07
で、D言語を作っている人たちはD言語作ることからいったいどうやって
収益あげるつもりなのでしょうか。
言語は元々金にならんとMatzやんも言ってたよ。
dmcも金取ってるのはIDEだけだしな。
>>287
流行ってきたら本書いて売る。
delta modulation compiler
DMD 0.86リリースage
初めての織田信長より面白いネタがほしい
>>290

いや、言語作らなくても本なら誰でも書けると思うんですが・・・
>>294
D言語をつくることから、に対しての答えとしては正しいと思うが
答えなんて無い
そんなバカな、プログラマーは思うでしょう
システム化された社会ならしょうがないでしょうね
C#でネイティブコード作れないとか言ってるのがいるけど、C#は実行時はいつも
ネイティブコードにJITしてるので関係ないだろ?
おまけに、ngen使えば環境非依存性を犠牲に(どうせmonoとか使う奴いないだろ)
ネイティブコードに落とせるわけだし。
>>297
ネイティブでしか書けないようなコードが書けるかどうかが問題なのであって
実際にネイティブかどうかなんてのは実はあまり関係ない
>>297
スレ違いだがJITしてるにしろ変換できるにしろその変換分のオーバーヘッドが
最低でもかかってくるからパフォーマンスに影響するのがいただけない。
ついでにユーザーサイドから言えば余計なもの(.NET Runtime)入れなきゃい
けないのがめんどくさい。
まーMSはそれもOSに統合しちまうんだろうけどさ。

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

#よくよく考えたら煽ってるのってVMマンセーが多いような…。
>>299
.NETはVBの延長線上のものだから、企業が嫌でも好む。

まぁD言語はネイティブOOP最強の座は約束されてるようなもんだ。
それが実現できないのなら、あっさり廃れるだろうね。
やっぱりVCLをDで書き直したBorland Dが欲しいんだよなぁ・・・。
クロスプラットフォーム対応なDBuilderとか?

Bolandにお願いするしか
署名つのるとか
ネイティブってネガティブに似てる
DはObjectPascalで出来ることは全て出来るのだろうか?
コンパイラのソース公開まだ?
307305:04/04/29 09:58
出来上がる物の事じゃなくて、言語の仕様の事ですよ。
>>305
細かいところはどーにでもなるけど、RTTI関連の仕様がすっぱり抜け落ちてるのでVCLは無理
Borlandだったら勝手に拡張するだろうけど
そしてDMがそのチューンをすれば完璧と。
暴がDMに出資でもしない限り無理。
なんでいきなりver0.86なんだ?
change logにある
>Added casting ability to non-COM interfaces.
はてな?COMインターフェースって言語仕様に含まれてるの?
この文の意味を教えてくれ!
>>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;
}
>>314はえろい
316最凶VB厨房:04/05/02 12:10
なんでやねん
D の方向性には共感できるし、機能的にも面白いと思う。
メソッド名が lowerCamelCase でなければ C++ から乗り換えたのだがなあ…
郷に入っては郷に従え。
そもそも乗り換えでなく両方できるようにすればいいじゃん。
やる気だよな
何でもかんでも
いやまあ仕事で使うとかならすんなり郷に従うんだけども
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()がないからエラー、か?
そうだね。
このパターンなら、エラーにならない方がおかしい。
324
>>323
コンストラクタは基底クラス任せって、ありえないかなぁ?
必要な関数だけオーバーライドして使いたいのに。
違う、this()がないのが悪い。
だがthis()はされたくない。
this(){ }かthis(){ assert(0); }とでもしておけと言うのか?
class Aaa { 
  this(int x){} 

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


void main(){
}

これじゃあかんの?
C++ 伝統のイディオムで

class A {
private:
this();
}

だろ。
ファイル内すべて friend になる D だとリンクエラーまで
待たなきゃいけないケースが多そうだけど。
どうでもいいけどデフォルト引数実装してないのかね?
0.86だとテンプレートデフォルト引数を実装とかあるけど
>>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)ができないんだが、どうすればいいんだ。ヴァー
>>330
氏ね。
>>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;
}
>>322
その例の class B みたく public: this(int a) があるときって
private: this() って必要だっけか?
>>333
デフォルトコンストラクタがなければ、そもそも呼びようもないからね。
ああ確かに>>332ではいらないな。
大本のレスでは、拡張コンストラクタもなくてエラーが出ていたようだけど
結局は this(int x){ super(x); } か。 それを書かずとも
B b = new B(x); で基底の this(int x)を勝手に呼び出して欲しかったんだよ。
いちいち全部の派生で書くのはスマートじゃないと思ってさ。
これで黙っとくよ。 スレの浪費すまんかった。
>>いちいち全部の派生で書くのはスマートじゃないと思ってさ。

オブジェクトの構築方法はクラスと密接に関わってるから
必要なものを全部書くべきなのが当たり前。
単なるメソッドの追加なら
>>128とかに例があるけど・・・
これがバグか仕様かは不明
x[] = y[] + z[]; は not implemented なんですか?
x.length = y.length + z.length;
x[] = y[];
x[y.length..(y.length+zlength-1)] = z[];

でいいんでないかい?
もとい。
x = y ~ z;
配列の中身を加算するとかじゃないの?
D言語いいなぁ。何よりポインタが削られてないのがいい。
SQLで言うところのUNION?
要望出してみると面白いね
D言語で数値演算ライブラリとか既にあるのでしょうか?
あったら紹介してください mOm
>>345
std.math
ttp://p17.aaacafe.ne.jp/%7Elabamba/?std.math

ぐぐればあっさり見つかるぞなもし
ん?これって標準の数学ライブラリなのでは?
Matrixライブラリとか、数値積分とか、超長周期乱数の生成とか・・・etc は?
まず誰かD言語でOS造ってくれよ
D言語はGCがあるからちょっと無理なのでは?
DunixとかDinuxとか?
DNU
DQN
>>352
うまい!ざぶとん1枚。
自演・・・か
>>352
うまい!ざぶとん1枚。
>>347
とりあえずMersenne Twisterは移植されてるのでそれを使うよろし。
http://www.digitalmars.com/drn-bin/wwwnews?D/17878
0.86から、debug { … } 文の説明から
>There is no else clause for a debug statement, as debug statements
> should add code, not subtract code.
の一文が消えてelseが付けられるようになっているみたいなんだけど、
ニュースグループでこの辺何か議論あったっけ?
>>349
(゚Д゚)ハァ?
>>358
(´ _ `)ゝハァ
>>356
メルセンヌ素数の19937だろ?これは証明はよく知らないけど、アルゴリズムは頻繁に使わせてもらってる。
超長周期乱数だな。gslとか ublas をいちいちリンクするのも億劫なので自分でC++に
実装してみたけどきめて簡単。M系列知ってりゃわずか10分程度で誰でも実装できる。
だから作っていただいてもあんまりありがたくないかも?
勉強がてらC++のマトリックスライブラリでも移植してみよかな。express template の
実装方法知らないから所詮オナニーツールにしかならんけどね。
Expression Template
C++相談室にこんなアホが居る

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

D言語はC++もできなかったマヌケがやる言語だとよ。
>362
スルーできんお前もアホ
>>363
それをスルーできんお前は糞
>>362
言ってる事は当たってるだけに痛い・・・・・
C++さんざん書いてきたがやっぱり生産性が高いとはいいがたい。
余計なことをオートでやってくれてかつC++にあったわずらわしく不必要な
仕様を整理する目的でDがあるんだろ?
ガベコレもどきの機能をboost使えなんてが正常な状況か?
>>366
C++標準化委員会はわずらわしく不必要な仕様を整理するか
互換性を重視するかで、互換性を取った。

D言語が互換性をほぼ無視して整理する方を取ったんだろ。
そりゃすっきりして当たり前。でもC++にはCという強力で豊富
なライブラリがあったが、D言語は1からのスタートだろ。Java
とかC#とか新言語目白押しの現在、さぞ苦しいだろうなあ。
突っ込まれるとまずいので一応訂正。
Javaは新言語ではないが、どちらかと言うとCとの互換性がない
点でD言語に似ている。
Java/C#とDを同じ位置づけしてる点でなーんも知らんバカ。
なんでasmを埋め込む仕様にしたか考えてみろ。
Cのライブラリをそのまま使えないのはJavaもC#も同じ。
あの仕様草案みてるとC#よりもっとハード/システム寄りのことができてかつ
C#より洗練された感じ。
C#は新たな言語というよりJavaそのものだ。そこそこ速いけど。
ハードウェアを直接扱うことはできない。
>>369-371
はぁ〜という事はD言語はC系と同じくネイティブを吐く系なのね。
まあ知ってるけどな。今更作ってどうすんの〜って感じ。
そんなにまでしてM$に言語の利権買って欲しいのかねぇ。それ
ともLinuxで細々と極一部の言語マニアに愛されてマイナー路線
を行く、か?ププ
>はぁ〜という事はD言語はC系と同じくネイティブを吐く系なのね。
あたりまえだろが。そんなことも知らんかったのかい。

>まあ知ってるけどな
嘘つけ。
>>373
必死だなププププ
ばかばっか。
仕事で使おうなんて思ってるやつはいないだろ。
書いてて楽しい言語だから遊んでるんだよ
>>374
図星を突かれるとすぐ「必死」っていってごまかしますねw
378367,372,374:04/05/07 15:17
D言語はJavaやC#と同じVMや実行エンジン必要とするC#と同じと思ってまツタ。
それを指摘されたのでムッとして皮肉しか言えなくなったんでちゅ。
御免なさい。
>>377
貴様の思考回路と一緒にしないで下さいますぅ?
>>378
あらぁ〜、俺最初から知ってて書いたのにまだそんなたわけた
事を・・・・・これだからD厨は(自己規制
連休当たりから変な奴が出てきてるなあ。

>>380
D厨というか、単に煽って楽しんでるだけのバカだと思うが。
おそらく、Dは使えない。
>>381
ああ、D言語を触っている香具師が>>378みたいなのばかりだと
思うと、言語の善し悪しより先に使っている人間が嫌いになって
しまうよ。
>>376みたいな香具師は好感が持てるんだが。
D 0.87ー。
384378:04/05/07 17:46
いいよ嫌いになってくれて、俺はC++しか使わないし。D使う奴は新し物好きの尻の軽い
あほの節操なしとしか考えてないからな。
なんでいちいち煽るようなこと書くかなぁ。自分の程度がしれるからやめた方がいいよ。
お前ら、C++スレを荒らすなよ。

マイナー言語でオナニーするのは勝手だが、他の人間に迷惑をかけるな。
C++スレからのお誘いだな。じゃ荒らしに入ってくるわ。

http://pc5.2ch.net/test/read.cgi/tech/1082047479/
>>383
D 0.88では?
390383:04/05/07 21:05
>>389
4時間前は0.87だったのよ。
あー、Walterタンさりげなく直してる。。。
http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D/633
漏れはHSPとD、コンパイラが先にオープンソースになった方を使う。
住み分けろよボケ
他所の言語を貶してる奴は自分の好みの言語すら使いこなせないアマグラマだけだ
D言語で遊んではいたけど、これってそんなメジャーになれる言語とは思ってなかったなあ。
まあ良い。おもしろいおもちゃだし。
ぶっちゃけDelphyのポジションは食うと思う。
Delphy どころか C++の大部分食える。
ガベコレに動作モードのレベル設定できるようになればほとんどCも食えるだろ。
>>387
Allegro - A game programming library
http://alleg.sourceforge.net/

ぐぐってみたけど、日本語で読める情報は全くと言っていいほど
存在しないみたい。海外だとSDLほどではないが人気があるのに。
複素数の取り扱いがMatlabのごとく1+2iなのかぁ。
ある種の教育受けた奴は虚数単位を後ろにつけることを嫌うんだがな。
C++とD言語は住み分けじゃなくて置き換わるかどうかが興味のあるところなんだよ。
ソフトだけでなくハードウェアの世界でもC++ベースのHDLが頓挫した今となっては
C++に置き換わる言語が求められてる。
>>397
んー、構文上の都合だろうね。
400
日本語のような余りにも複雑な母国語と英語を使い分けてるんだ、複素数の扱いなんてどうってことないだろ
日本語って複雑な言語の代表みたいに言われることが多いけど
文字が複雑なだけでそれ以外 (発音や構文なんか) はかなり単純な部類だよ。
>>397
>ある種の教育
俺のことだな。電気もしくは電子系では1+j1とか書くからな…
80近いアルファベットが存在するキチガイ語だから十分ややこしいよw
>>403
虚数単位を後ろに書くのはキモイよね。j->iでも構わないけどさ。
で、複何たらってのは何に使うの?
変数と区別がつかないじゃん。という文法上の制限だわな。
>>407
その通り。わかっちゃいるんだけどさ。
comples<double>(10,20)なんて書くよかずっといい。
すんません。情報工学系ですが虚数単位は後ろです。
a + biの形式。電気電子は前なのか…まぁ表記上の問題だろうけど
こういうの結構文化というか確執があるよな。
句読点の代わりにコンマとピリオドを使えとかいう文化とかな。
ウチのことだけどな。

ってここD言語スレか…
すまんがほんと何に使うのか教えて
>>409
>句読点の代わりにコンマとピリオドを使えとかいう文化とかな。

理系の論文はたいていそうだよ。
数学勉強しれ、少年。
>>412は国語を勉強しろ
>396
日本語表示能力がイマイチだからね。
(使う文字の分だけ独自仕様のフォントを用意しないといけない。)
FreeTypeを組み合わせれば何とか実用にはなるが。
昔、縦書きを想定したフォントしかなかったから横書きにすると上のほうに句読点が
来るから仕方なしに",."で代用した。ところが情報系ののような新しい分野の書物
は下に位置するフォントもできたので"。、"で統一されてるものが多いはずだけどな。

情報系でほんとに後ろか?情報科学系はともかく情報工学っていうのはもともと電気系だぜ。
電気出身者が数多く教鞭とってるはずだ。単に気づいてないだけじゃないだろうね?
虚数単位はベクトルの基底と同じだから前に書く。そもそも数学関係の√(-1)という意味合いより
正弦波の\pi/2の位相ずれを表す意味合いが強い。real<-->cos(ωt),imag <--> -sin(ωt)複素平面の
図式を常に意識してa+jbと書く。iは電流に使われることが多いのでj使うがこっちは別にどっちでも
気にしないな。
何故そこまで話を引っ張るのか
>>396
ありがとう。
>>416
後ろについてると発疹が出て痒みで眠れないから
地球上から絶滅して欲しいんだってさ。
オートとマニュアルメモリ操作用のポインタをそれぞれ用意できないのか?
>>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;
とすればいいのでは?
Dのテンプレートが、ますます「賢いプリプロセッサ」になってきたような気が。
悪くは無いけど、スパゲッティ化しやすいようにも思う。
何が変わったかおせーて
mixinの実装は大体終わってるみたいだから次の版で付くのかな?
昆虫採集が楽しみだね。えへへ…。DTLもmixinが付いた後に出るみたいだしね。
>>422
C++ のテンプレートだって賢いプリプロセッサだろ?
教えて教えて→何故か逆ギレ、見当違いなところに噛み付いてくる
の繰り返し。

この人いつ消えてくれるのかなぁ。
>>425
ハァ?ばっかじゃねーの
おまえは一生C++やってろ
>>472
反論できなんですね(ワラ
429デフォルトの名無しさん:04/05/16 22:36
できなん
>>421
この言語久々に仕様をみたら、だんだん気合が入ってきたな
マイクロソフトが採用するようなことがあったら、ちょっと追いたいね。
最初、C風の書き方ができるObjectPascalと思ってしまった、、、
expression templateみたいなのがもっと簡単に実現できるようにはならんのか?
433デフォルトの名無しさん:04/05/17 02:21
434デフォルトの名無しさん:04/05/17 02:27
でも、C++'程度じゃないの?
なにがすごいの?
やねうら○の盛り上がりかた
>>430
コンパイルするのにライブラリのソースが必要な言語に、プロプライエタリな企業が乗ってくるとは思えないのだが。
>>437

別にC/C++と同じで、関数とクラスの宣言さえあれば中身のソースは要らんのだが…。
そりゃ、今のところオープンソースのライブラリしか書いてる人いないけど。
>>438
template はソース要るでしょ? もちろんC++でも要るんだけど。
一方、.NET generics や Java generics では要らないわけで。(できることも少ないけど)
>>439
自分でおかしなこと言ってると思わないか?
C++もDも必要な場合があるなら
MSがC++を採用してDを採用しない理由にはなってないだろ。
>>440
C++を採用してDを採用しない理由にはなってないが、
C#を採用してDを採用しない理由にはなるだろう?
それは論点をずらしてるだけやん。
>>437見てみなよ。
「コンパイルするのにライブラリのソースが必要な言語」に
C++もDも含まれるなら、C++に乗ったMSがDに乗ってくると思えないことは無いでしょ。
そもそもDの標準ライブラリは仕様が決められるだけであって実装は(仕様に従っていれば)自由なんでしょ?
コンパイルするのにソースが必要かどうかなんてどーでもいいような気がするが。
>>437
つーか、MFCとか、無くてもいいのにソース付属してるし
>>444
自分に使いやすく改造してからでないとMFCなんぞとても使えん。
そういう話をしてるんじゃないだろ
クラスを第一引数とする関数は、そのクラスのメソッドとしても振舞うって動作は、バグか仕様なのかわかった?
わからん。
けど、クラスを第一引数にしては駄目で、配列を第一引数にするとその配列のメソッド
のように使えるってことは分かった。
std.stringのjoinとかsplitとかperlとかと引数の順番が変わってて、すべて、
文字列が最初に来るようになってるから仕様なんじゃないかと思う。
確認したかったら、ニュースグループに質問してみるしかないと思うけど、
英語苦手なので終わり。なさけなや。これじゃだめなので、英語書いてみる。
チェックしてみてください。機械翻訳ですが、、、。

split("a,b",","); is written to be "a,b".split(",");, and compile passes. Is this specification?
これでよければ、ニュースグループに投げてみます。
450448:04/05/19 14:38
>>449
なるほど。ニュースグループ読んでないのでわかりませんでした。
はずかしー。
読んでみましたが、分からないし悔しい。
すいませんが、どういったないようだったか教えてください。
なんだか、教えて君になっててやだなぁ。
>>450
前略
「これは非常に涼しいと私は考えます。」
以下略
つまりはチャーリーへのお礼のメッセージだな
453448:04/05/20 12:18
coolくらいはわかるョ!
ビーバス&バッドヘッドで何度も聞いたんで。
大好きな単語だよ。
チャーリーって誰?
声しか聞こえない正体不明の人?
で、仕様なんですか?わかんねぇよう。
Thanks,
448
↓のようなコードが通るのが今ひとつ納得できない、、、

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オプションを付けないでビルドするとリンクエラーが出る症状に出会ってしまって
原因を特定するまで延々とハマってました。まる。
>>454
普通に考えたら scope 的に近い、関数内関数の方だと思う。


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

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

// this に相当するモノがないから、recursive call したい時に困る気がするが。
親参照できないの?::みたく
グローバルな名前空間という意味なら . が使える
基底クラスのメンバ関数を明示的に、ならクラスの識別子を使う
int main(){
 if(test && test){ }
 return 0;
}

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

プロパティ使うのに困る。
プロパティの設定してないだけとか
D言語のMixin凄いと思うんだけど、このスレではスルーだね。
結構ありきたりなのかな?
>>460
単なる define じゃん。スコープもひとつ持ち上がるし、混乱の元になると思う。
ちゃくちゃくとバージョンが1に近づいているわけですが・・・
ライブラリさっぱりな現状でも1を名乗って大丈夫なの?
趣味グラマ希望の星のDだけにちょっと心配
0.99の次は0.100ですから。
0.991とか。0.999の次は0.9991
0.99の次は-0.99です。次に-0.98になります。
補数みたいやな…
作者が死ぬと version 1 になります。
趣味グラマ御用達言語ということは、HSPと争う事になるわけだ
やっぱり趣味グラマ専用か。糞だと思ってたよ最初から。
phobos自分で作れますか?
なんかobject.dのコンパイルがうまくいきません。
class ClassInfo : Object のコンパイルで死んでる?
471470: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

というエラーが出ます。
>>471
Dのことは初心者だけど、
同じことを試してみたら、同様のエラーになりました。参考までに。
473470:04/05/28 12:52
>>472
テストありがとうございます。
さてどうしたものかな。
>>471
dのfrontendでやってることと同じようなことをやればいいのではないかと思います。
cygwin用のものなら作りました。
きっと、autoconfとかわからないとつらいんだと思いますが、、、。
475デフォルトの名無しさん:04/05/29 15:52
typeof キタ━━━━(゚∀゚)━━━━ !!!!!
>>427は早く死ね
バリアント的な使い方してるな・・・
478470:04/05/29 16:26
>>474
最新版の0.91ではコンパイルに成功するようになりました。
前のバージョンに何か問題があったのかもしれません。
お騒がせしました。
クラスの継承関係に依存しないインタフェースプログラムが作れるとか?
いや便利かどうかはさておいて。
480本7:04/05/29 19:02
マニアックな方向に機能拡張されすぎてc++と同じ道を辿りそうになってきたな。

とりあえず俺はC+GC+クラスって以上の使い方は避けるようにするが。
いちおう期待してるんで仕事で使ってみて実戦テストしてみるけど。
Dを採用して金になる方法を作らねばな。
481デフォルトの名無しさん:04/05/29 19:11
>>1は綴りを間違えやすい方ですね。
D言語って何ですか?C言語の間違いですか?
開発環境次第だな。
立場的には安定性のあるDelphyみたいな扱いか。
開発スタイルがXPで、ネイティブコードである必要が在るサーバーなどの開発なら文句なしでD言語だね
opCastが追加されたので、ちょっと嬉しかったのだが、
> there can be only one opCast per struct or class.
うーん、、、
>>462
VisualC1.0が完璧だったと?
某OSなんかバージョンが4桁になってようやくマシになった感じだしな。
>>485
うちの会社にはなぜかVC++1.5がなくていつまでもVC++1.0
MS-DOSやWin16用のコンパイル環境としてしばらく重宝してたっけな
さすがに最近はつかわないけどね

>>486
Windows2000のことなら実質WNT5だから
もともとマシだったと思うけど
なぜかlibmysqlclient.soとのリンクに失敗する。
extrn (C)を使うときは特別な指定を加えなきゃいけなくなったの?
位置づけ的にperlに対するrubyみたいな言語だな
かぶりまくりでとても流行る気がしない
IDEとライブラリ次第。サーバーとしての需要はある。
Apacheのレプリカ作ってみようかなぁ。
同一プラットフォームなのに移植なんてあふぉらしいだろ
トランスレーター作れよ
同一言語なのに移植なんてあふぉらしいだろ
トランスレーター作れよ
GUIライブラリはどのくらい機能があるの?
SWTと同じようなラッピングが主体?
>>495
んなもんD自体にあるわけないだろ
テンプレートはどこまでを標準にするんだ?boost相当?
ここには商用と非商用の区別のつかない人はいませんか?
まともな実行ファイルが吐き出せるなら全部商用だよ
Rubyとかも気象庁とかで使われてたとかって話があったような
金が取れる水準のもの=商用ってわけじゃないと思うんだが。
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作らないでくださいね。
>>499
そんな事実はない。
>>503
>>502がどっちに対していったのかは知らないが、>>499の2行目はともかく1行目は事実だろ。
有料なら商用、無料なら非商用。
J2SEとか非商用だったんだ。
エデュケーションパックとか特別なコンパイラ以外は全部商用可能だろ
PerlライセンスとNYSLとの違いを教えてください。
Jcodeの一部分をほとんどコピペで終わらせてるので、
DJcodeのライセンスをしっかりしたいのですが、よくわからないのです。

>>507
なぜNYSLが出てくるか分からないが、PerlのライセンスはGPLと
ArtisticLicenseのデュアルライセンス。後者は修正したら元と同じ
名前は使っちゃだめよ、という感じ(タブン
詳しくは自分で調べてくれ...
ArtisticLicense2.0もGPLみたいなもんらしいが
bit[] k;
k ~= 1;
k ~= 1;
printf("%d\n",k[0]);
printf("%d\n",k[1]);

実行結果

1
0


バグってる?
俺のミス?
k[] ~= 1;
じゃないのか?
配列演算子ってそういう使い方ができるのか
pop()にあたる処理はどう書くの?deleteじゃないと無理?
k[] = 10;でkの中身全部を10にできなかったっけ?
それを応用してぇ。。。とか
久しぶりに物理シミュレーションでもして遊ぶかと思って、
ついでにDMDどーなったかなーと思って公式行ってみたら
Mixin実装されてやんの。

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

だったんだけど、このスレに来たらみんなさめまくりだし。
>510
void main(){
bit[] k;
for(int i=0;i<8*20;i++)
k ~= 1,printf("%d ",k[i]);
}

これを動かしてみよう。
0.92キター
うれしい改善点が多い。
>>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.
日本語訳頼むって云ったら怒る?
AddedとFixedだけ読めば大体わかるっしょ。
ますますC++に近づいてるような・・・w
521510:04/06/08 14:10
8ビット毎に1………?
訳わからん、長さ伸ばして代入するわ。
デフォルト引数キター
C# 2.0と比べると大分見劣りするね
今回のバージョンうぷはうれぴー。
デフォルト引数も演算子オーバーロードもぶっちゃけ新しい要素じゃないからバグフィクスのみと考えよう
テンプレートは絶やめて欲しい。
あとDBまわりを強化して欲しい。

Apacheヘッダまわりは俺が担当するから。
デフォルト引数はバグの元
デフォルト値が存在する関数以外でデフォルト値を設けようとしない限りはバグら無いよ

D言語は、「コンパイルするにはライブラリのソースが必要」ってスタンスなのかな?
デフォルト引数にしろ、マクロ並みのテンプレートにしろ、バイナリ化はできないよね?
Cのオブジェクトにはリンクできるんじゃなかったっけ?んでC++はダメーみたいな。
試した事ないから良く分からんけど
Dで書かれたライブラリの話です。
Cにはデフォルト引数もテンプレートも無いですし。
そもそもテンプレートってものはコンパイラが分析して
使われる型の分だけクラスや関数を作るものじゃなかったっけ?
typeofとか駆使すればバリアブルに出来るのかなぁ
>>529
デフォルト引数の場合は、宣言のみのソースとともにコンパイルする。

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

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

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

というのを一緒にコンパイルする。
二箇所に同じようなのを書かないといけないの?
駄目駄目じゃん
ダメダメってか、Libと同じようなもんだろ?
デフォ引数もだけど、名前付き引数対応して欲しいなあ。
>>534
これは、誰かがソースから宣言だけを抜き出すツールを作ってくれれば解決するんだが・・・。
>>533
「宣言のみのソース」って、つまりヘッダファイルのことですか?
Win32版の調子が悪いんだが俺だけか?
std.fileとかをimportするとリンカがシンボルが重複しているとか言って怒る。
クラスの定義だけ取り出すツールがあればと思ったら、すでに書いてあった。
ddocとかもほしいし、そういったことが作れる人が一人いればすむ話なんでしょうなぁ。
俺は、つくりたいけど、頭悪いので作れない派です。なさけなや。
せめて仕様だけでも、書いて置くと良いのかなと思ったりする今日この頃。
>>538
なんかトレンドに逆行してるな・・・
デフォルト引数の情報はobjが持つべきだろう。

思いつきの泥縄的に仕様追加していくとC++的混乱に陥るような。
>>541
objに持ちようがないんですが、、、、
持つことは可能だと思われ。
ただ、どちらにせよそのobjを使用するための定義が必要なので
あまり意味はないと思われるが。
>ただ、どちらにせよそのobjを使用するための定義が必要なので
その定義がテキストである必要はまったくないが。
コンパイラがobjから直接読み取れればそれで十分。
まともなヘルプやドキュメンテーションツールとIDEがあるならね。
イメージとしては、Javaのclassファイルのようなものかな。
早く仕様確定しないと終わってしまうぞ。
いまの状態じゃあそびにしかつかえんし。
それにしてもC#よくできてるぞ。
今回か前回か知らんけど、
クラスhogeのプロパティhoge.proをforeachに食わせるとき、
 foreach( ...; hoge.pro()){ ... }
としなければならなかったのが、
 foreach( ... ; hoge.pro ){ ... }
と出来るようになってるな。


hoge.pro()と、プロパティを関数として呼び出せなくなってるがな。
修正マンドクセ(´A`)
まープロパティならそうアクセスできなきゃおかしいし
明示的にプロパティとする構文が欲しいかも。
でも、シームレスに扱えるのが特長だからいらんか。
これってゲッターセッターってある?
契約のin-out-bodyみたく getter-setterで宣言できないものかね
property int hoge{
 /* getter */
}(int v){
 /* setter */
}(double v){
 /* setter */
}(int[] v){
 /* setter */
}(temp!<int> v){
 /* setter */
}


こうですか? 分かりません!
冗長だなあ。。。
ドキュメントによると、
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;
}

と変更してもそのまま使えるとか書いてあった。
int hoge(int n) {
getter { return m_n; }
setter { m_n=n; return this.hoge; }
}

こんな感じにしてほしいw
>>553
C#風やね。>>552 に対するメリットは?
>>554
void hogehoge(int i) { hage = i; }
がセッターを意図してないのに
hogehoge = 1 で通ってしまうような事はなくなるんじゃない?
Newsgroupsによるとまた仕様変更らすい・・・

C[1,2,3] = value;

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

とかできるようになるのかなあ。。。
この細かい変更具合からすると、今出回っているのはαのver0.92だな
まずgetterに引数宣言など冗長だ。
よって>>552(デフォルト)は却下だ!
そしてsetterは複数型のrvalueをとりうる。
よって>>553など却下だ!

>>551のどこに冗長性があるのか>>552に小一時間問い詰めたい。
>>558
今ようやく構文を理解したw
なるほど、面白いw
getterをpublicにしてsetterをprotectedにしたい時は?
>>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 */ }
 }

さあ泥沼の様相を呈して参りました。
property int hoge(in) {
getter { return m_n; }
setter (int n) {}
protected:
setter (double n) {}
}
こんなバグ、テストで検出できるか自信無いぞ。

property int hoge{

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

}(int v){
 /* hoge's setter ? */
}
Delphiの配列プロパティみたいなのはできないの?
いろいろごまかしてみたけど、
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;
}
本家のフォーラムではこのゲッター・セッターの議論って出てるの?
デフォルト引数が採用された以上は、ここら辺の仕様をきっちり作って欲しいな
何度も。
例えば
http://www.digitalmars.com/drn-bin/wwwnews?D/28801
ここから続くスレとか。
void setColor(long color, int alpha = 100){};

hoge.setColor = 0x00FFFFFF;
が可能なのは何かやだな、慣れの問題?
なんで仕様確定する必要あるのかね
そんなもん要らない

いい方にしか仕様は変わらないんだから、
それに合わせてコード直してやればいいだけの話。
>>569
じゃあ毎月60000行の修正よろしく。

572デフォルトの名無しさん:04/06/16 19:02
>>1
[C]言語の間違いだろ?ネタ?
>>572
              ''"::::::::::::::::::::ヽ
         \   ∠::::ノ│ヘ::::::::::::: ヽ|ヽ ====
          \ / ●   ゞ::::::::::゙ |、|  ======
           '\       ─:::∪:: |、|
         ∠::|  X\   ● イ:::::|-|    そんなエサで私がネヴァ――!!☆
         ∠::、(_/     "/:::i/⌒l
            /\    ∪/::::i/ ̄/  =====
            〈  `ー┬イ::::∠ _ノ  ====
            \ \_ネヴァダ  \
この言語はフォームデザイナって開発されてる?
リソース周りの扱いを紹介してるサンプルソースとかあったら教えてくだせぇ
ない
GUI周りはまだ整ってない
>>574
そもそもGUIライブラリ自体が(ry
DIDEがコードセットやフォントなどの設定を保存してくれないばかりか
何かと不正終了を起こして使えなさ過ぎる・・・

何か他にオススメのIDEってあります?
ない
ないのか。ならエディタで作るか。
いい機会だからセレクト鯖でも作って見るよ。
phobos.libがSymbol Undefinedを大量に吐いてどうにもならない
ライブラリは環境変数LIBに予め指定してあるのにどうして・・・おrz
D言語の依存関係生成ツールってない?
makefileの形式で吐いてくれるようなやつ。
582580:04/06/18 23:34
自己解決。スマ祖。
Dのselectも値-結果引数なのか。
ほぼそのままCをラップしてますな。
こういうところはDの配列スライスが嬉しいね。
584583:04/06/19 03:58
SocketSetはSocket配列での登録も取得もないから配列スライス関係ない orz
英語できたら要望だしたところだが・・・
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指定みたいなのがいるのか?

この記事は2002年11月時点のD言語に基づいているため、 大分古くなってきています。
>>586
import std.c.stdio; //Cのstdioを直接ラップしたモジュール
import std.stream; //D版のC++ iostreamみたなもん
クラスのコピーってどうやるの?
もしかしてコピコン作ったクラスだけしかコピーできない?
まー早い話、とりあえず困ったときくらい仕様読めよってことだな。
>>590
データの集約したいなら構造体使うほうが理に適っていると思うがどうか。
>>592
デザパタのプロトタイプパターンがしたいのだが。
馬鹿ちょんdeep copyなんぞありはしない
>>594
クラス構造しだいだろ
Dの標準ライブラリでは高性能なサーバーは作れなさそうだな
kqueueなんかをどうSocketクラスと結び付けるかが難しい・・・
ループ毎に1000以上もSocketSet.addやSocketSet.isSetをしてたらselectする意味ないわな
これならthreadの方がまだマシか?
>>590
JavaのObject#clone()でもやんの?
D言語には無い?
>>589
(・∀・)サンクス ウゴイタンス!
600デフォルトの名無しさん:04/06/19 14:15
>>592
今時構造体なんか……使っていられるかw
>>590
不変クラスにすれば簡単にできる
>>598
> JavaのObject#clone()でもやんの?
> D言語には無い?
ないね。
>>601
作る側の問題じゃなくて作られたもののコピーの話でしょう。
>>600
俺は、単純な矩形をクラスで管理したくはないな。
このスレでいう構造体って、メンバ変数がpublicなクラスってことでいいんだよね?
仕様をよく読めば分かるけど、必ずしもそうじゃないのが困りもの。
値渡しされるクラスという考えはC++時代もあったな
shallow copyがお手軽に出来るという利点もある
D言語には鯖開発の筆頭として期待してたけど、
一連の流れを見るにまだライブラリが弱すぎて使えないみたいだね

boostのようなライブラリが登場するのはいつからかな
>>602
Cloneableインターフェースも実装できないのか?
>>608
boost の中の何を期待しているんだ?
幾つかの機能は既に言語仕様やphobosに取り込まれてるだろ?
611デフォルトの名無しさん:04/06/19 21:02
>>604
カプセル化できんし他人に勝手に継承されるし
あぶないやんか
>>607
deepでなくて?
>>612
配列がchar[] hogeだったらshallowにならへん?
>>610
いろいろあるんだよ、角度とか
regexpとかあるから鯖の作りやすさは折り紙付きだな
kqueueやdev/pollをラップした強力なライブラリが実装できるなら・・・
>>615
作って。オナガイ。

質問
template Loop(int n:0, alias X) {
 void f() {}
}

template Loop(int n, alias X) {
 void f() { X(); Loop!(n-1,X).f(); }
}

これコンパイルできない理由というか背景を教えてくれー
617616:04/06/19 22:03
実体化忘れた
void g() { printf("hoge\n"); }
int main() { Loop!(5, g).f(); }
Loop!(0,g)にマッチするテンプレートがひとつ以上ある、と怒られる。
>>616
// template Loop(int n:0, alias X) {
aliasがここにあるのはいいの?
Loop(int,alias)が二つあるんだからそらそうだろ。
>>616
>int n:0
こんなこと出来るの?
templateの再帰のサンプルでさえ既に俺にはお手上げw
あれは結局何が代入されたんだろうね
const factorial = 24 をどこかでたくさん生成したのか?
わかんないから、やねうらお氏あたりが教えてくれるのを待とう(こら
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
>>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 仕様書読んでくれ。
templateの使い方を纏めたページがいるね
Wikiあたりに誰か投稿してくれー
aliasパラメタ

aliasパラメタによって、テンプレートの引数に様々な D のシンボルを受け取るようにできます。
alias パラメタに使えるシンボルはグローバル名と型名、テンプレート名、 テンプレートインスタンスの名前で、ローカル名は使用できません。
この機能は、C++におけるテンプレート・テンプレート引数の拡張版となっています。


関数は「型」じゃないとかそういう制約か?
シンボルの同一性チェックができれば、嬉しいような、そうでもないような。

//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と同一シンボルならマッチ

そんな機能何に使うのってきかれると、答えに詰まっちゃうけどね。
関数ポインタをtemplateでalias以外の方法で使うにはどうすればいいの?
template Hoge(void function() fx){} ではダメみたい
>>624
単純にaliasパラメタからaliasパラメタに値が渡せないだけじゃないかな
alias alias def_alias;ってやってもコンパイルできないし
sampleのlistener.dはメモリリークのいいテストになるね。
このままだとリークしっぱなしだから、fullCollect()をループの最後に挿入。
タスクマネージャでプロセスを眺めてもメモリ使用量がほぼ一定してるのが分かる。
>>630
仕様上はメモリリークじゃないよ。解放の遅延。
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; }
633632:04/06/20 14:59
struct Nil { alias Nil type; } 入れ忘れた。
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
struct NullCons {
int type;
Cons!(int,Cons!(int,typeof(this))) next;
}

にすれば循環するっぽいが、structは実体を持つはずなのになんで?w
サーバ開発とかネットワークプログラミング全般って、D選ぶのもそれはそれでいいが、しかし
よりLightweightに、いろんなOSで動かしてテストしやすいようにしたいとか、そういうことであれば、
Dより、Rubyとかのほうがいいんじゃないかね。ライブラリも揃ってるし。
新しい言語で遊ぶのが楽しいんだよw
Rubyってランタイムで動いてるんじゃないの?
知らないからアホなこと言ってるかも知れんけど
>>638
ランタイムも何もRubyってインタプリタ言語じゃなかったっけ?
んだんだ
dmd.zipの古いバージョンって無いんでしょうか?
PARSEC47をコンパイルしたいんですが、unstableすぎるのか現行のだとコンパイルできないんで…
私は、CGIをDでがんがるつもりでいるので、サーバー処理もDでいけるんじゃないか派です。
>>642
(゚Д゚)ハァ?
>>643
パフォーマンスと手軽さを考えた場合
DでCGI書くのは結構いいかも知れない。
ISAPIやmod_perlのようなカラクリを作るならDの特徴が生かされるだろうね
サーバーとしてはHTTPDで無ければいけると思われ
0.93来てますね
Dで使える有用なライブラリ、コードの一覧とか欲しいね
libってC版ならそのまま使えるんだっけか?
>>641
v.0.74 と 0.79, 0.80 なら持っているが、PERSEC47っていくつでコンパイルできたっけか。
CGIにDって発想が間違ってる気がするが

素直にperlかphpにしとけよ
つかCGIじゃなくていいんならJavaか.NETにしとけ

下らない仕事は手軽に片付けてナンボだ
いちいちセッションハンドリングだのクラスタリングだのの面倒みたいか?今更
俺はC++で書かれたCGIコードの移植をさせられて反吐が出そうになったぞ
しかもパフォーマンスが出ないからといってRPCまで使ってやがる
>>649
> つかCGIじゃなくていいんならJavaか.NETにしとけ
意味不明なのだが
>>650
らくで
効率もよくて
ウンザリするほど周辺環境がととのっていて
サンプルも豊富だから
そんだけ

あ、すまん
「意味不明」の理由が何となく分かった
Javaや.NETでもCGIプログラムは作れるけど、意味はない

ふつーはservletやjspやASP.NET(WebForm)やWebServiceだ
「そのようなもののコンテナを利用できるなら」という意味だよ
「CGIでなくていいなら」という意味は
しかしJavaや.NET(てかIIS)はレンタル鯖では使われないからな
うちはFreeBSD鯖を借りてて、telnet経由でcgi作れるからDは歓迎

まあ自宅鯖ならApache+mod_perl一択だな
>しかしJavaや.NET(てかIIS)はレンタル鯖では使われないからな
好き勝手にバイナリ動かせる鯖もそうないだろ。
Dのバイナリ動かせるならJREも突っ込めそうな気が。
流石にそこまでは触らせてもらえないよw
鯖の為に出来る作業はコンパイルだけさぁ
>>634
LokiやboostのTypeListもどきを作ろうとしてたのでちと違う。

>>635
循環してないよ、それ。循環って↓見たいなやつのことでしょ?
struct Hoge { Hoge hoge; }
635の中のtypeof(this)はNullConsのポインタ型だと思う。
DでCGI
CやC++と違ってperlや、rubyと同様の分かりやすいソースでいけるし、
ネイティブだから起動が高速だ。
クロスコンパイルして、UPすれば、freebsdで無料鯖のaaacafeで公開できる。
いいと思うんだけど。
動かせる鯖を借りてる人はいいね
Javaや.NetはコリコリCGIを書くのとは性質が違う。
アプリケーションサーバーがついてこないといけない。
PerlやPHPは手軽だけど遅い。
CやC++は高速だが、煩雑もしくは、高度なプログラミング知識が必要になる。
Dは、CやC++の後継でCやC++でCGIを作る煩雑な部分を肩代わりしてくれる。
高速CGIを作るにはDが向いていると思う。
分かったからはよ作れ
いや高速CGIではmod系やISAPIには太刀打ちできないからw
それらが使えない鯖での負荷削減として有用なのがDって程度だよ
telnet使えるのはsakura以外にどっかある?
CからDのコードを実行することってできまつか?
実際にやりたいのはCからというより、Cへのインタフェースを
持っている他のスクリプト言語などから使うことなのですが。
DでApache module作るってのは結構有効なんじゃないだろうか
その辺ネイティブバイナリとCとの互換性が効いてくるような
IntraWeb(ボソ
まあモジュールはともかく鯖はepollやkqueueがDに移植されるまでお預けでいいよ
>>663
extern(C) で作ればいけるんじゃないかな。
>>664
それはすごく嫌だなあ
apacheのpool managedな空間に異物が入り込むわけだよね
moduleだからインプロセスで実行される訳だし
mixinの有効な使い方を教えてくださいな
ApatcheモジュールをCで書いて、メモリリークして終了した経験があるので、mod_dとかだれか
作ってくれることを希望。ほとんどCGIと同じ書き方ですむとうれしいな。
>>669
ごく普通に思いつくのは、クラス定義にテンプレートをmixinして
侵入型のリストの実装を埋め込むとか?
基本的には#defineで出来たようなことしか思いつかない。
// 侵入型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;
 }
}
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)のおかげで何とかなるのね)。
mixinをつかうなら、mixin用にテンプレートを書かないといけない?
template使える人が羨ましい。
いや、人のは読めるけどね。書けないんだ。
モダンプログラミングは俺には難しいよ orz
関数(またはブロック)毎にGCに回収させる指定があれば嬉しいな。
そのブロック内でのみC++ライクなnew&deleteが行われる仕様。
auto でいいんちゃうん?
つーか、組み込みでもないのに、GCをそこまで細かく制御する必要がある用途って何?
GCに対して「大きなお世話」な気がするんだが。
>>677
C++ライクなnew&deleteは「GCに回収させる」って言わない気が。
要するに今のautoで出来ることを欲しいって言ってるんじゃ?
>>676は仕様読んでないのかも)
ただautoのdeleteのタイミングはブロックの終わりじゃなくて、
関数が戻るタイミングだった気がするので、その辺は無理かも。
いや、autoは「スコープの終わりにデストラクタが呼ばれる」だけだと思われ。
実際のメモリ回収がいつ行われるかは保証されてないと。

関係ないけど、_argptrと_argumentsは、__argptrと__argumentsにして欲しかったな。
autoはデストラクタのみ
deleteはデストラクタ+ガベコレ

なの?
681680:04/06/26 15:21
もとい。
autoはスコープの終わりにデストラクタ呼び出し
deleteは即時デストラクタ呼び出し+ガベコレ

deleteの仕様が良く分からない
682678:04/06/26 15:54
>>679
そかそか、勘違いしてた。というわけで>>676の言いたいこともよく分かった。
>>680
たしかdeleteもデストラクタが呼び出されることしか保証してないんじゃないかな。
(要するにメモリーの回収は後回し)
現状delete呼ぶとvptrまで破壊するみたいで、
deleteされたオブジェクトにアクセスすると落ちちゃうけどね・・・。
またいい加減なこと言ってたりして・・・。
クリティカルな場所はアロケータ・デアロケータをCでつくれっつーことですな
プリミティブってGC関係ないんだっけ?
char[]とかクラスではどうしようもなくGC待ちに成りそうなんだけど
std.c.stdlib.mallocとか使って、char *を使えばいい。
つまり、便利な機能を使うにはGC必須と。
つまりhoge[0 .. 3]は使えないのか
Dの仕様だと、型安全なprintfが作れそうな気がする。
>>676
ゲームやサーバーだとあると嬉しい機能なんだが
>>688
しょうがない、この板はゲーム専用の板ではないから
ゲームなど余り考えられてない。
特に、まだver1が出てないコンパイラについては仕方ないことだと思われ

前に無知な香具師がゲームをバカにしてたしな
#define release(a) a->Release()
と同じような機能が欲しい
って言ったら
テンプレート使えばいいじゃとか言ってな
テンプレートにするとまた別々に型ごと宣言せなあかんから大変だってね。

それもゲームについて考えてないどころかDについてすら知らないってことだったんだな。
>>689
???
solid {} もしくは pack {} でブロック内GCを実装して欲しい
ヒープを別に確保すれば可能だと思う(効率は知らんが)
エクスプローラは重いからエクスプローラではないデスクトップを使いたいけど
D言語でデスクトップを作る事は可能?
ちょっと意味が分からないけど、API用いてリスト読み込めば詳細モードのエクスプローラになるのでは?
>>692
Win32APIを叩けるならなんでもいいんじゃない?
ということでスレ違い。ちなみに、普通デスクトップではなく、シェルと呼ぶのでは?
D言語は楽しそうなのでお勉強をはじめようと思っております。
D Memoでお勉強しようと思いますが現状お勧めのサイトあったら
おせーてください。

ところでこれは既出なのでせうか。
Phobos D Runtime Library 日本語訳
ttp://hp.vector.co.jp/authors/VA031566/d_direct3d9/prframe.html
>>695
オススメはdmdをDLするとサンプルソースが付いてくるので、それを覗くのが手っ取り早いかと。
基本的にC++に良く似てるので、ざっと仕様に目を通してサンプルと見比べるだけで導入完了です。

ちなみにそのリンク先は、日本訳リファレンスの訳者本人が、フレームに切りなおしたページのようですね。
フレームの切りなおしはWikiでもやってるので、好みで使い分けるのがよいかと。
D言語+SDLを今後のプログラムの中心にしようと思ったけど
資料が少なく先は難航しそうだw
>>696
ほほぅ。了解。ってことでサンプル実行・・
って、エラーでまくりですなorz
castとsizeofが割とあたらしいキーワードですかな。

C++はぼんやりとしか知らないんですが
仕様とサンプルとにらめっこしてみまする。

>>697
俺も使ってみたいSDL
>>698
ちなみにD Memoは古いので他のところを参照しましょう。
仕様書の説明読んでいるのでござんすが
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というのはこれいかに。
やねうらお氏のところぐらいか?
>>693
なるほど、そうなんでつね。

>>694
Shellは別個でデスクトップだけ再現したいからシェルではないです。
>>700
ちょっと上にも似たような話題があるが、要するにプロパティ自体が構文糖なんじゃないかと。
関数の名前で逃げるとすれば、名詞=プロパティ、動詞=メソッドという考え方が
マッチすると思う。

下の方のやつは、Cの可変個引数だから、intに変換されてるとかじゃない?

>>702
まあ、Win32APIスレとかで聞いたほうがいいんじゃね?
C/C++のリソースエディタはそのまま使いまわせるのかな?
フリーのを探してみるか
リソースはリソースであって、Dとは関係ないから大丈夫。
ただし、ヘッダファイルは使えない・・・ので、Dのソースに書き換える必要がある。
おんや。こっそりとすばやく0.94がリリースだそうですわ。
何がかわったのかしら。
全部bug fixみたいだね。
コード補完がないとWinプログラムってやってらんないな・・・
暗記してる人は平気なのかも知れないが
>>708
自分はxyzzyを使って、
dabbrev-expandと、d-modeのキーワードに色々登録して補完機能でバシバシやってますけど、
駄目かな。
>>709
聞いたことあるけど触った事なかったな
良さそうだったらサクラエディタから乗り換えます
ども。
>>710
色分けと補完くらいならサクラエディタでもできるじゃん。
インテリセンスってフリーのエディタで搭載してるのある?
eclipseとか。
おっと盲点・・・。
eclipseDの評判が悪かったからスルーしてた。
eclipseDは今のところ色分けくらいしかできない。
補完機能+makeなどを利用したコンパイルができるようになれば
乗り換えるかも
マクロ用のスクリプトは可也作り易そうだね
かと言ってDスクリプトを作るとなると途方もなさそうだがw
717デフォルトの名無しさん:04/07/02 22:55
Cのライブラリが使いまわせるなら良さそうなの探してみるか
>>715

今のところも何も、CDTみたいな後ろ盾があるわけじゃないから
誰かがやらない限り誰もやらない。
719デフォルトの名無しさん:04/07/03 10:46
>>715

誰かがやらない限り何も動かん
WINAPIのRectangle関数がなかった
もしかしてstd.c.windows.windowsって不完全?
>>720
もしかしなくても不完全。
http://hp.vector.co.jp/authors/VA028375/d/windows.h.html
とか使うべし
>>721
素敵。あなたもリンク先も。
caseが最初にきたらラベルに出来ないようにすればいい。

そうすれば
case 1:を
case1:
とかで失敗しない。
caseだけは例外で許可、だけどcaseが文頭に来るラベルは禁止。

これでcaseラベル問題解決しない?
んな昔のBASICのような命名制限つけるぐらいなら、後ろの":"を他の記号にした方がいいんじゃ?
なんか行き当たりばったりな設計だな。
センスの悪さはC++に勝るとも劣らないな。
caseラベル問題ってなに?英語できないからML見てないんだよねw
ぱっとみコンパイラのバグだろうから、仕様としてあわせる必要は無い気がする
>>726
何かも知らないのに答えをだすとはさすが
switch( hoge ){
case1:
でラベル扱いされるって話?

俺もどういう話なのかよくわかんない教えてください。
case1なら普通にラベルとして扱わなきゃおかしくね?
D言語のgotoが一風かわっていることに今気づいた・・。
ねちねちとswitch文のソース書いて試してみたが
特に困りそうな気はしないが・・

何が問題なの教えてplz ・゚・(ノД`)・゚・
キーワードの色分けができるエディタ使えよ。
#pragma comment(lib, "gdi32.lib")
みたいなことってできませんか?
低レベルな話ですまんが、DMD0.94でProject: Windows.h for Dが
使えないね。
コンパイルしようとすると.sizeプロパティはだめぽ、.sizeof使ってちょ
とメッセージが。
はぁ、どうしよう、コンパイラのバージョン落とすくらいしか対応策
なし?
>>733
grepしてreplaceすればOK
>>734
んまぁ確かにそうなんだけど…めんどくせぇ。
いや、Portingしてくれてる人のほうがめんどくせぇと思ってるんで
しょうが…やっぱり発展途上のはこういった問題が付きまとうねぇ。
これはこれで面白いからいいんだけどさ。
>>733
dmd -d でいいんでないの?いや、避けたいのはわかるけど。
>>736
ほんとだ、すっかり忘れてた。
既に置換しちゃったよ…まぁいいか。
C++でウィンドウをカプセル化したりするときにSetPropや
CreateWindowExの引数にthisを渡す方法があると思うけど
それってD言語だとどうやるんでしょう?
マニュアル読んでみたけどそういった記述が見つからんです。
すまん、普通にthisキーワード使えるっぽ…。
本当にすまんかった、吊ってくる。
GCがあるから、SetPropだとそれ以外の参照がなくなったときが怖いかも。
MFC式に、外部にmapを持っておくほうが安心じゃないか?
>>740
SetProp以外が参照しなくなったときに回収されちゃうってことですかね?
MFCは大昔に使ったっきりなんでよくわからないんですが、マッピング用
の外部クラスなりを用意したほうが安全ってこと?
>>741
いや、SetProp(に限らないが)に渡したポインタも自分で保持していないと、
GCによって回収されてしまうことがあるということ。

APIに渡したということをGCは認識してくれないので、、、

ついでにDMD 0.95リリースされたね。
型安全なprintf・・・
なにっダウソロードしておかねば!


なんつって全然つかってないんだけど一応ねヾ(´ー`;)
SDL_mixerのポーティングを使おうと思ったのだけれど、
正しいライプラリじゃないよ!っていうエラーメッセージが出てリンクでけん。
D言語でゲーム作ってみようと思ってたけど、まだ無理かなぁ。
SDLとOpenGLのほうは動くんだけど・・・・・・。

>dmd playmus.d SDL.lib SDL_mixer.lib

Error43: Not a Valid Library File
--- errorlevel 1
>>744
その.libはちゃんとimplibした奴だろうね?
746デフォルトの名無しさん:04/07/10 13:18
D言語のプリプロセッサってどんなもん?
どんなものもなにもDにはプリプロセッサなどない (だよね?)
versionとか、templateとか、mixinがプリプロセッサっぽい役割を果たしているのでは?
とりあえず、ここを読め。
ttp://www.kmonos.net/alang/d/pretod.html
プリプロセッサは前処理をするって意味だからね
Dはマクロとして展開されずにそのまま解析に入るからプリプロセッサはない(と思う)
都合2回以上全文解析する必要の有るプリプロセッサよりは速いだろうというのは確か
ここまでがんばらないで素直に#ifdefすればいいのに・・・

Dは条件コンパイルをサポートします:
バージョン固有の機能の、固有のモジュールへの分離。
debug文による、 冗長な文字出力などのデバッグ用コードのon/off。
version文による、 一つのソースからの複数の異なったプログラムの生成。
if (0) 文。
ネスト可能なブロックコメント /+ +/ によるコードのコメントアウト。
static assertがえろいね
プリプロセッサは汚いな。サブセットとは言えC#に残ってしまったのはC#の汚点の一つだと思う。
ちょっとしたスクリプト代わりになるほどコンパイルが早いという評価だしね
DLLならJavaみたく鯖を稼動したまま指しかえれる可能性もあるわけだ
プログラミング言語Dの「概要」の項に
C/C++から取り除かれた特徴として
プリプロセッサがあがっています。

機能上プリプロセッサに似ているが
言語の仕様としてとりいれられたものに
debug、version

見た目上プリプロセッサに似ているものとして
特殊トークン列#line

などがあるようです。
などと書いているうちに先をこされましたが
とりあえず投稿しちゃいます。
詳しいことはわたしには聞かないでください。。。
http://www.kmonos.net/alang/d/pretod.html
ここ見たほうがはやかったです。
詳しいことはわたしにはきかないでください。。。
758744:04/07/10 19:24
>>745
ありがとう!問題解決しました!
759デフォルトの名無しさん:04/07/10 21:37
ぶっちゃけ俺が聞きたいのは、
D言語内で俺言語を作ったりできるのかなぁと言う事なのよ。
例えばPerl風のforeach構文が欲しいなぁか思ったら、自由に
構文追加できたりできるのかね?D言語とやらは。
>>759
意味不明なのだが、言語仕様を独自に作るならコンパイラ毎作れば?
>>759
できません。帰ってください。
>>759
作者アフォだから今ならプロジェクトのっとれるよ。
763デフォルトの名無しさん:04/07/10 21:57
D言語の正式版っていつ出るのかね?
そしてメジャーになれるのかね?
地味にバージョンアップしてるから9月くらいには出るんじゃないかな
メジャーになるかどうかはプラットフォーム非依存なIDEが出るかどうかによる
IDE より GUI toolkit だろ。
DWT はいつ出るんだ。
GUIライブラリってどっかが作ってるんでしょ?
文法変えたいならcamlp4みたいなの作れば
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より優れている仕様だって言ってる人多いのにどうして全然注目されないの?
言語関連の雑誌で特集されたの見たことないし
研究分野でも全く話題にされない。
中層プログラマの品質の悪さにかけては日本はダントツだから。
>>769
VCLはIDEが連係してくれないと意味が無いからなあ
それに、Dで再現するには、今のDにはRTTI関連が大きく足りないよ
>>770
まだ1.0に達してないからじゃね?一応雑誌にでたことはあるよ
・ライブラリがヘボい。
・過去の資産をインポートするのも一苦労。
・仕様はC#2.0で追い抜かれる。
・コンパイラにバグが多い。
・IDEが無い。
OS固有のAPIを提供するのはいいけど、それよりもまずはライブラリだな
wxWidgetsなんてポテンシャルはすさまじいのに日本じゃまったく流行らない
・Macで使えない
文法が汚い〜をきれいにしただけって言語はあまり流行らないでしょ。
某rubyみたいなの。
Dはコンパイラ指向だからコードの品質は高くなるよ(たぶん)
でもそんな効率の良さを時代が求めてないのかも
C#も普通に速いしな。
商用のManaged DirectXのアプリが出てくるくらいまで
最適化されたら最強なんだけどさすがにそれは無理かな。
C#起動遅すぎ
それはC#ではなく(ry
>>777
なんでコンパイラ指向だとコードの品質が高くなるんだ?
俺が言ったのはバイナリの品質って意味なんだけどね。
けどコーディングのスタイルが有る程度強制されるからC++よりはマシじゃないかな。
D GUI は wxWidgets と SWT が需要高いのかな? このスレ住人的には。
FOX
wxWidgetsはマルチプラットフォームなMFCとしては一番高級な印象がある(Gtk+をラップしたりするし)
DUIライブラリ作るくらいならこっちを頑張って実装して欲しかった

・全OSで共通のソースが使える事
・ルック&フィールがOS依存である事
・それがネイティブである事

D言語にはこれらを期待する
期待するだけなら簡単だよな。
window.widget
window.gdi
window.sdl

・・・10年先だな
>・全OSで共通のソースが使える事
>・ルック&フィールがOS依存である事
MONOに何か用ですか?
Windows.Formsが不完全な上にネイティブでもないし
そういえば……LinuxにOS依存のGUIって、あって無いようなものだな。
リソースコンパイラの実装って難しいのかな、やっぱ。
それが簡単ならエディタ作ってみたいのだが・・・
別に難しくは無い。
>>791
Eclipseプラグインでキヴォンヌ
#defineをenumに置き換えてリソースそのものはCのリソースエディタでとかなら出来るかも
>>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
>>795
おお素晴らしい。構想に留まらずそのまま推進して欲しいね。
物凄い勢いで糞言語に成り下がるのが目に見えてるのに
おまいらそんなに期待しますか
少なくとも俺はC++から乗り換える予定だが。
おれもおれも

むしろ糞言語じゃないものが無い気がするがどうか?
しかしサンデープログラマにはポーティングの手伝いをする方法がいまいち分からんのが辛いな
ポーティングは非常に簡単です。既存のを参考に量産してください。
802でぃきち:04/07/13 23:13
よぅーし、パパはりきっちゃうぞぉ。
Delphiでいいじゃん
Object Pascalは変数定義できる場所が決まってたり予約語のタイプ数が多いのが嫌
805本7:04/07/14 01:13
むしろそこがDelphiのいいところだと思う。
なんでも簡単・自由になりすぎてPerl厨の糞コードみたいにはならないでほしい。
物事には手順があるってものだ。
COBOLでもやってろ
Cライクな構文でなければ生理的に無理だな
PascalやCOBOLはともかくとして、関数型言語やプロトタイプベース言語の面白い世界を
生理的なんて理由で敬遠するのは悲しすぎると思われ
そこでPrologの出番ですよ
スタチックライブラリ作るにはlib.exeってのを使うのか
じゃあFreePascalを改造して
beginを{に
endを}に
:=を=に
=を==に
みたいなことやったらついてくる人いるかな
>>811
既存のソースが使えなくなる「だけ」なのでついてくる人はいないと思われ
メリットがないと
本家の日本サイトへのリンクっぷりが凄まじいな
それだけアメリカ国内ではシカトされちゃってるのだろうか
>>814
それだけ日本人の言語評価能力が高い(相対的にアメリカは低い)、
と好意的に解釈しましょう。

(D言語が良い言語か否かの議論は置いておくとして。
自分はもちろん、良い言語だと思っているんだけど)
>>813
下側リンク、おもしれー、そーゆーときは始めからModula使えばいいじゃんw
817デフォルトの名無しさん:04/07/14 19:54
Longhornになったら.NET Framework、WinFX-APIがデフォルトで
付いてくるわけだが、そうなってもD言語はやっていける?
それともD言語もD.NETになって軍門に下るのか?
Mプラットフォームライブラリの強化に回るんじゃないかな
MSIL吐く実装もいつか作られそうだね。本家はコンセプト通りネイティブのままじゃないかな。
820デフォルトの名無しさん:04/07/14 21:06
>>819
安心した
マクロ並の template, mixin って、MSILで実現するのムリじゃね?

まぁ、.NET Framework が利用できればライブラリ不足は解消するけど。
>>804
予約語のタイプ数なんてエディタの補完機能でどうにでもなるよ
最近のIDEは予約語も補完されるのか?
俺が使ってるのはどれもせいぜいメンバ変数、関数の補完しかないよ。
>>817
C++みたいにM$や某が独自ライブラリ作るんだろ。
>>823
普通逆じゃないでしょか・・・
予約語補完よりインテリセンスのが高級な機能ですよ
予約語を補完するなんてエディタは寡聞にして聞いたことがない
サクラエディタやxyzzyはキーワードの強調と補完をする機能がある
複雑なアウトライン解析をするインテリセンスのようなものは、普通のエディタじゃ実装されんねぇ
マスコットの胡散臭さがたまりません。
http://www.levenez.com/lang/history.html
ここにD言語が載るのはいつですか?
1.0が出てからじゃね?
俺のDelphiはCTRL+Jですごいことになるよ。
Eclipseプラグインの作り方でも学びますか。
それよりもDでEclipseみたいなの作れば、Javaより以下略
D言語が使えるマルチプラットフォームライブラリで、
且つVBチックなRADが出来るIDEがあればWinの牙城は崩れる。
そのIDE自身もD言語で作られていれば鬼の様に普及する。

さて、EclipseのWikiにいきますが
835デフォルトの名無しさん:04/07/16 00:23
D言語がんばって欲しいね。
.NET構想なんかぶっ潰してくれ。マジで。
だからDelphiでいいじゃん。
彼はCライクじゃないという致命的なハンデを背負ってるから
Cライク、他はともかく変数宣言だけは読み辛いぞ、そこだけはPascalライクの方がイイ
俺がC++からDに乗り換えたいと思った理由がそれだな
int* p1, p2;
が、intのポインタ2つじゃないというのが嫌いだった。
Dではそれを俺好みにしてくれたので思わずマンセー
じゃあ俺もマンセー
それでもまだ、int[2][3] なんてのは逆順だから。
[3][2]int って書きたい。で、配列の装飾を前からかかるようにすると、他の装飾(ポインタの*とか)も
全部前からにしないとおかしくなるので、結局Pascalのそれに行き着くわけで。
>>841
int[2][3]のが分かりやすい
>>842
禿しくではないが普通に同意
固定長配列を使う機会なんて、激しく限られているからどっちでもいい。
>>837
じゃあFreePascalを改造して
beginを{に
endを}に
:=を=に
=を==に
みたいなことやったらついてくる人いるかな
>>845
既存のソ(略
847デフォルトの名無しさん:04/07/16 10:05
おい、WinFXは使えるようになるんだろうな?
非.NETなC#があれば乗り換えるよ
849デフォルトの名無しさん:04/07/16 12:35
そこでHSPの登場ですよ。
monoなんていらんからgcjのC#版が出てほしいなぁとは思う
C#は.Net Frameworkのライブラリのありがたみもあるから
gcj相当のだけで解決するものでもない気がする
中間コード->無条件に遅いとか勘違いしてるアホが多いんだよな
>>848
Delphiじゃん
>>852
実際遅いんだけどな
中間コードと等価なネイティブコードと比較すれば、無条件に遅い
DelphiとC#じゃ全然文法違うだろ
等価なら速度も同じ
>>852
こんなアホまだいたんだ。
C#だっていいんだけど
Microsoft .NET Framework Version *.* 日本語版
こいつがユーザのマシンにどれほど入っているだろうか。
全体の10%にも満たないのではないだろうか。
そして普及したらしたでM$の配下にそまることに抵抗がある俺。
そんなことを考えてしまうWindows XPユーザの俺。愛。
C#はなんていうかメモリ喰いすぎだし、起動が遅いんだよね。
走り出しちゃえばVBよりかは重く感じないんだけど。
まぁC#を使えなんて強制はしないよ。
しょぼくてセンスの悪い言語仕様と
C++の劣化コピーな乏しいライブラリと
劣悪な開発環境が好きならそれを使っとけ。
文字列というか、配列周りが気持ち悪いよなぁ>D
ただ煽りたいだけの奴が流入してるようだが
Delphiの人はボケに来てるのだろうか?
>>861
劣悪な環境が好きなんです。
ごめんDelphiはないわ…
C -> VB -> C -> C++ -> Delphi -> C#
とやってきたけど Delphi が一番よいと感じたよ。
MS製じゃないから将来が心配だけど。
逆にMS製じゃないからよいのかもしんないけど。
ここはD言語スレだ。D言語もやってから判断してくれ。
IDEに浸かってるならDはまだ無理かと。
ふーむ。
delphiがなんでいいか聞きたい気もしるが
さすがにスレ違いか。
>>869
マルチプラットフォームなライブラリにリンクできるIDEという点。
完全にフリーで構文がCライクならとは散々言われてきた。

BCBXはどうなってんだろう・・・
>マルチプラットフォームなライブラリにリンクできるIDEという点。

ビジュアルデザイン可能なIDEて意味でそ?
でないと>>866のすべての言語が満たしてしまう。

BCBXはデザイナ類はついてなかったはず。これはBCB系列でない。

でBCB系列たるBCB6は
CLXついてるからマルチプラットフォーム、というか
クロスプラットフォームか。これはdelphiも同じ。
というわけで、delphiじゃなくていいじゃんということに・・・?

WinだけのしとはどっちみちWinFXとやらで
既存環境での開発はアホらしくなるのか・・?

ヽ(´ー`)ノ オテアゲ〜
872IDE:04/07/17 15:55
つくっちまおうか
>>866
BCBは?
>>872
VCL(マルチプラットフォームなGUIライブラリ)が必要かと。
wxWidgetsのポーティングされた且つそれようのフォームデザイナがあれば神なのだが。
ああ、BCBアカンやん
Linuxで使えないやん
DelphiはKylixあるから問題ない、
とそういうことなのカモ
どうでもいいがdigが物凄い勢いでなかったことにされてるな
DIDEが無かった事にされる日も近いですか?
D言語界隈の人たちは飽きっぽい人が多いんですね
D言語1.0の明確なロードマップって出てる?
DMDScriptがphobosに組み込まれればアプリ開発言語としては鬼な気がする。
母体となってるECMAScriptが枯れてないから難しいのかな。
881デフォルトの名無しさん:04/07/17 22:50
D言語ブームまだー?
言語が登場して普及するまでには5〜10年は掛かるからなぁ
まぁ、廃れても廃れなくてもD言語は大きな意義ではあると思う
Eclipse対応まだぁ〜?
>>884
完全対応じゃないけど開発中だよ。
でも多分開発途中で飽きるね
中なの?eclipseDも放置組じゃない?
ほんと飽きっぽい人ばかりですね
いや飽きてるのは海外の人らだろ。ジャップにもちらほら飽きてる人はいるがw
>>876
いつLinuxをサポートするんでつか?って聞きたい気分・・・
>>876
激しくわらたw
>>887
そうか?最終更新2004-06-14だけどダメ?
組み込みECMAScriptを実現しようとSpiderMonkeyに手を出したはいいけど・・・
ヘッダファイルの変換作業が激しく面倒だと気づいて萎え気味。
この作業に耐えられる人はマジで尊敬します。
よく知らないんだけどEclipseってJavaで書かれてるんでしょ?
誤爆かな?でもその通りだよ。
896本7:04/07/19 00:13
WIN32版はネイティブAPIを利用してるけどな
>>893
DelphiでDMonkey使えば?
>>897

  ま た D e l p h i か !
ヘッダファイルの変換なんて自動化しろよ
dmc4d.exeみたいなのをDMが提供してくれてもいい気もするが。
そのうちツールとして頒布すると思う。
alias int Hoge(const int) hoge;
だと「const使えねーよバカ」って言われるんだけどコレは仕様として正しいのかな?
902デフォルトの名無しさん:04/07/19 22:36
D言語って誰かが個人で開発してるの?
903901:04/07/19 22:44
大ぼけかました。

alias int function(const int) hoge;
これで怒られる。
>>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;
で怒られるのと同じ。
905901:04/07/19 23:07
>>904
thanks

細かなところでCと互換性が無くなってるんだね
>905
言語互換性を期待するのは、そもそも間違いだと思うが…
作者はC/C++とは違う言語作ろうとしてるんだし。
「細かな所で互換性が無い」のではなく、「所々似ている」だよ。
>233
>    良く似ているが、少し違うというモノは、全然似ていないモノより始末が悪い。

アーゴの法則より
PERLが嫌われる一番の理由だなw
909デフォルトの名無しさん:04/07/20 18:40
点数データ(初期値代入)が入った1次元配列のアドレス・人数を受け取って、
その最大点、最小点 平均点を求めて返す関数を作成してもらえたら助かります
前はC++で作成してもらったのですが、今度はC言語で解かないといけなくなりました。
提出日が今日までなのでお分かりの方いましたらお願いいたします。

ごめんなさい スレ間違えました。
明らかなネタの提供だが、まぁ気にしない。
>>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;
}
min = int.min;
max = int.max;
逆だった。
min = int.max;
max = int.min;
プリミティブで型情報が取れるのは嬉しいよね。実際。
ちょっとここに書いていいのか迷うのですが、DでWS_EX_TOOLWINDOW
なウィンドウを作ると何故かTOOLWINDOWにならずに閉じるボタンが
付いたり通常ウィンドウとのキャプション幅が真っ黒になったりする。
これは単にリンクするライブラリが悪い(DMD付属のもの)のか、作り方
が悪いのかどっちだろう…。
ぐぐってもゲーム系が多いみたいだしなぁ…、通常アプリ(?)をDで作って
る人いないですかね?
>>915
std.c.windows.windowsにはWS_EX_TOOLWINDOW無かったんで自分でWS_EX_だけ定義してみたら
普通にツールウィンドウになった。自分のコードも疑ってみたら?
>>915
DMのリンカが吐くEXEの問題かも知れない。
PEヘッダのバージョンが古いので、表示がWin3.x仕様になってるというもの。

初代スレかwikiあたりに情報があったかも。
>>916
レスthx
portingライブラリはwindows.h for Dのやつです、書き忘れて申し訳ない。
なのでその辺は普通に使えました。

>>917
SUBSYSTEM Windows,4.0ですね、wikiでみかけて試したんですが同様。
ということはコードの問題か…。

単一ウィンドウなら普通にToolwindowが作れるんだけど複数出すとどうも
1つや2つ怪しくなる…コードを見直してみます。
thxでした。
int delegate(int, double)[] onEvent;
onEvent ~= &Hoge.func;
onEvent ~= &Hage.fuck;

onEvent();

こんなC#風なアクセスはどうだろうか?
>>919
わー、かこいー。
C#では、こーいうの普通なん?
C#だと+=で連結できるね
演算子をオーバーロードできるんだから
ライブラリでどうにでもならない?
>>919
>>921
そういう風に演算子の意味を捻じ曲げるのは
混乱をもたらし見苦しさを増すから避けたい、
とか書いてた気がする。

>919は素直にforeachループでいいような気もする。
foreachなら巡回してるってことが分かりやすいし。
onEvent.foreach();
捻じ曲げるってほどでも無いと思うがなぁ。
「通知」が目的であって、「巡回」は実装に過ぎないわけで。

C#のイベントの偉いのは、外部からは += と -= でしかアクセスできないこと。
= を使って、勝手に全置換えされてしまうことは無い。
まぁ、>>922 の言うとおり、ライブラリでどうにでもなるけど。
926919:04/07/23 22:43
>>919の方法では-=に相当する実装が難しいねw
-&Hoge.fuckなんてしたらそれこそ捻じ曲げだ。
そもそも加算演算子を連結に使ってるのが捻じ曲げだからなあ
といっても、D(とAda)以外はほとんど全ての言語がこの捻じ曲げを行ってしまってるんだけどw

加算と連結を区別するなら、減算と除去も区別しないと
DelegateQueue、FunctionQueueを定義すれば問題なしだね
最初からインプリメントしてくれたほうが実行速度を気にしなくて良さそうだけど
0.96のPerformanceCounterScopeはいいね。
最速OOPへの気合の表れと見える。と適当に誉める。
wxWidgets for D マダー? チンチン
あれはバリバリとマクロが使われてるからなぁ
wxDはwxGPLやwxQtを使わずに作って欲しいな
DMさんは作ってくれなさそうだけどw
http://andy.tadan.us/d/dfbth.d.html
これは += やってるね。
0.99 → 1.00のバージョンアップで凄いことが起きるんだよ!
0.99と1.00の間には0.991から0.9999があるけどネ
0.a0 じゃないかな
0.993141592…
0.99
0.999
0.9999

 .
0.9=1に収束するとか。
何気なく検索してみたらEiffel(一度C言語に変換するオブジェクト指向言語)用の
wxWidgetsのリンクが貼ってあるページをみつけた
Eiffel用のwxWidgetsならC言語へのラッパがあるはずだからそれ活用しろってことかな?
そのラッパを手に入れて、ヘッダをモジュール化するまでに挫折しそうだが
942デフォルトの名無しさん:04/07/27 00:39
自作クラスで、opIndex をオーバーロードしとるんだが、
組み込み配列みたいに、ArrayBoundsError を throw するのってどうやるんでしょう…
組み込み例外(?) のインスタンス化の仕方がわからんのです。
教えてちょんまげ。
import std.array;

int main() {
throw new ArrayBoundsError("File",10);
return 0;
}

なんだが、コンストラクタがprivateなんだよねw
dmd\src\phobos\std\array.d
に ArrayBoundsError が定義されてた。
うまくいったら報告よろしくね
>>943
_d_array_bounds から呼び出せ、ってことかねぇ
可能性としてはtryの中でなければthrowできないとか
947942:04/07/27 00:58
>>943
dクス。
俺の探し方が超悪かった。phobos の中探したんだけど見つからなくて、
組み込み例外なのかと思ってしまった。
948943:04/07/27 01:03
今のバージョンでは、他モジュールのprivateなコンストラクタも呼び出せるというバグがw
wikiのバグ情報のページに、それに似たヤツが載ってたね。
大分昔からあるような気もしないではないが、それとも単に
バグ情報のページが更新されないだけかね。
950942:04/07/27 01:10
あ、ちなみに普通に new できて throw できました(まだ catch してないけど)。

コンストラクタの引数って this(char[] filename, uint linnum) なんだけど、
ファイル名と行番号をエラーメッセージに含めとくものじゃない気がしますね。
やっぱり組み込み配列専用なのかな?
使用例として、 dmd/src/phobos/std/string.d の1823行目あたりに
 throw new ArrayBoundsError("std.string.sformat", 0);
というものがあったよ。
例外発生のモジュール名を突っ込んでおけばいいんじゃないかな。
line引数は分からない。
単純にエラーの起きた場所でしょう。
それはあれだ、コンパイラが解析中のソースコード中での
エラーコードの行番号を送るんだよな。
だから、利用元の行番号なんて知りようがないD言語ユーザ
側はてっきり使っちゃいかんもんかと思ったけど、とりあえず
0に設定しておけば、ユーザサイドでも使っていいんだな、これ。
ごめん、ArrayBoundsErrorは実行時エラーか。
単にメッセージを生成するのに使うだけだから、何でもいいと思うけどね。
>>940
nice. wxHaskel におそらくそれから派生した(か流用した)のがあったから、それでやってみよう
かな。(とりあえずwxcのコンパイルだけした)
957本7:04/07/27 23:29
そんな変なものばかり使おうとせず普通にVCLライクな独自ライブラリ
つくろうよ。
>>957
お前がやれ。言いだしっぺだしな。
>>957
digにあやまれ
流れを無視してすまんが、DのPhobosにはC#のConvert
みたいなもんはないですか?
Convert.ToInt32("ff", 16);みたいなことをやりたいんだけど
std.convのtoIntはDecimalしかとれないですよね?
int foo = toInt("10"); // ok
int bar = toInt("ff"); // ng
スマートな解決策はないですか?
>>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);
}

うまい方法が浮かばなかった。
>>961
やっぱりちょっと回りくどい方法をとらないとダメですかねぇ。
std.stringで使えるsplitやjoin等もwcharには使えなかったりするし
(toUTF8すればいいだけだけど)ちょっと標準ライブラリに弱さが目
立つような気がする…。
標準ライブラリに欲しい一覧を挙げてちょ
たぶん英語できる誰かが書いてくれるから
書いてみて「こんなの作ったよ〜」と送ったら、採用されるかもよ。
描画ライブラリ
マルチメディアライブラリ
>>964
CPLな自由参加ライブラリDeimosを思いついたけど、どっかの糞が既に名前を使ってやがった。
私は悲しい
Deimosはそれなりに良くできてるよ。
すぐ飽きちゃったみたいだけど。
Degital Marsも他の何かに使う予定でいたんだろうな
ライブラリを予約しておかなかったからこうなる
D界隈はいつも行き当たりばったりだな
>>969
よく言われる。今は反省してる。
>>969
行き当たりばったり出ないオプソプロジェクトなど無い
Dってオプソなの?
オープンソース( ttp://www.opensource.jp/ )ではないな。
ライブラリのソースは公開されてるが。