1 :
デフォルトの名無しさん :
01/10/21 23:33
C#との違いを語ってくれ
まず基本は ・C風味のシンタックス ・単一継承+インターフェース ・ガベコレ つまり、Java/C#とよく似てる。 人によっては90%同じと言うかもしれない。 C++/Java/C#を使ってる人ならすぐ使える。
>>2 一番の違いは、VMなしを前提としていること。
VMの有無は、理論的には言語使用と独立であり、
JavaでもC#でも機械語にコンパイルすることは可能だが、
やっぱりコンパイル/リンク/デバッガー/Make等を意識して
設計した痕跡があちこちにある。
例えば、DBCやUNITTESTを言語仕様の中に取りこんでいること。 これはデバッグモード/リリースモードをコンパイル時に 切り替えることを前提としてると思う。
C#ともうひとつ大きく違うのがテンプレートのサポート。 当初は演算子オーバーロードと一緒に切る予定だったらしいが、 現在の仕様書にはこれを入れると書いてある。 機能はC++と同じだが、書き方は変えるみたい。
7 :
デフォルトの名無しさん :01/10/21 23:58
これで何作るの?
8 :
デフォルトの名無しさん :01/10/21 23:59
リフレクション・RTTI関連の機能の説明がないような...
9 :
デフォルトの名無しさん :01/10/22 00:03
Dの利点はなんでそ?
よーするにネイティブコード吐くC#/Javaでしょ
>>7 設計者は、C/C++と同様のgeneral purposeな言語にするつもりのようだ。
しかし、ガベコレがあるのでカーネルやリアルタイムシステムには使えない。
また、サーバサイドではJavaに負ける。
JavaVMは、これからCに近いスピードになっていくからね。
だから、もし使われるとしたら
クライアントサイドの大規模プロジェクトだと思う。
gnome/kde/mozilla/excel/emacsのようなものを作るには
ピッタリだ。
>>11 >gnome/kde/mozilla/excel/emacsのようなものを作るには
そういう用途ならgnomeやemacsなんかでも
使われてるlisp系が良いと思うけど。
ところで、GNUな人はGuileを崇拝してないのか?(w
13 :
デフォルトの名無しさん :01/10/22 00:13
win用のGUIソフトって作れるの?
>>9 >>10 C#/Javaに対する大きな利点としてはDBCがあると思う。
DBC付きのインターフェース継承ってありそうでなかった。
静的な型チェック+Pre/Post conditionを使いこなせば、
単体テスト完了時点で、かなりの品質を確保できる。
開発者のレベルがまちまちの大規模プロジェクトでは
すごく有効だと思う。
DBCって何ですか?
>>12 凡人プログラマには静的な型チェックが必要。
>>13 JavaのSwingのような標準のGUIライブラリは作らないようだ。
しかし設計者はSymantecの人らしいので、
Winのことはよくわかっている。
だから、外付けのwin用のGUIライブラリは
すぐ提供されると思う。
>>16 静的な型チェックは(チェックする機会を作れば)lispでもできるよ。
使われないのは多分、読みにくいからだろう(w
Java/C#と同じ方向性か。 正直、マクロを取っ払ってるのは失敗な気が。
20 :
デフォルトの名無しさん :01/10/22 00:26
DはDelphiのDだろバーカ! パクるんじゃねーよ!
>>15 Design By Contract
例えば、平方根を計算するメソッドは次にようになる。
long square_root(long x)
in { assert(x >= 0); }
out (result) {assert((result * result) == x);}
body {return math.sqrt(x);}
bodyが実際のメソッド本体。
inはこのメソッドに渡すパラメータに要求する条件。
この場合は、正の数でなければ平方根は計算できない。
outは、このメソッドが満たす条件。
平方根*平方根=元の数になるはずという意味。
このようにして「お前がこれこれの条件を満せば、
俺はこういう仕事をする」ということをソースに表現する。
inとoutを発注元が書いて、bodyを下請けが書く。
発注元が頭よければ下請けが馬鹿でも大丈夫。
22 :
デフォルトの名無しさん :01/10/22 00:29
俗に言う「Hello, world!」プログラムをDで書いてみてYO!
>>20 「D」という名前はいろいろな意味で突込みが厳しいようだ。
どうも、それが狙いみたいだけど。
可変引数は取れるの? 取れた場合、型チェックは?
25 :
デフォルトの名無しさん :01/10/22 00:32
メモリ開放は手動で出来るの?
つーかいきなり出てきた感じがするんだけど。>D 目的はなんなの? 何か作られた理由でもあんの?
>>22 俺はドラフト読んだだけなので自信がないが、
たぶん、こんなもんだと思う。
import stdio;
int main()
{
printf ("Hello, world\n") ;
return 0;
}
頭文字D? もしかして作者はとうふ屋ですか? いまだに(80)86使いこなしますか?
29 :
デフォルトの名無しさん :01/10/22 00:37
せっかくDelphiの時代が到来したと思ったら、 C#だのDだの余計な言語を作りやがって!!! Delphi最高! 他はゴミ箱逝き!!!
>>27 うひょー・・・一行目以外はすっかりC/C++だね(w
argv/argcとリターンコードをDBCでチェックするようなHelloWorldを書くべきかな
正直、なんでimport`statement'にしたのかわからん。 ただ単にマクロを取っ払いたかっただけの勇み足にしか見えん。 マクロというか、プリプロセッサを無くしたのは良い かもしれないが、マクロ自体は無くす必要は無い筈。
33 :
デフォルトの名無しさん :01/10/22 00:40
して、そのコンパイラ等は何処に? リア厨なので英語チンプンなのれす。
>>24 CのAPIはコンパチで呼べると書いてあるので、
たぶんできると思う。
サンプルプログラムにprintfもあるし。
型チェックはしないと思う。
同じ名前で引数の型が違うのは、C++と同じでできる。
この場合は型チェックもやるはず。
>>25 俺も知りたい。
たぶん、できないと思う。
>>26 開発者がC++/C#/Javaが微妙に嫌いで使いたくないからじゃないかな。
自分がそうだから、みんなそうだと思ってるような気がする。
俺は3つとも好きだけどね。
35 :
デフォルトの名無しさん :01/10/22 00:43
>C#/Javaに対する大きな利点としてはDBCがあると思う。 これはどうだろう? 完全なUnitTestを導入するとしたらDの提供する機能では不十分だね。 どの道外部のTestingFrameworkが必要になりそう。 in/outはあると便利かもしれないけど >out (result) {assert((result * result) == x);} >body {return math.sqrt(x);} なんてコードが常に書けるとは限らないからね。
あと2ヶ月だって。slashdottedってなに? When can I get a D compiler? I'm hard at work on one. I hope in a couple months. I had not anticipated being slashdotted.
Delphi使いはこの先どうやって生きていけばいいですか? この作者はDel坊に氏ねと言ってますか?
>>30 正解!
>>32 マクロは何でもできる
→しかし、ふつーはこう使ってる
→「こう使ってる」所を言語に入れて後はステ
というのが開発者の思考パターンらしい。
言語を作る人は、自由度を上げて、ひとつの
言語要素であれもできるこれもできるというパターンが
好きなのが多いんで(その極がLisp)、この人はちょっと珍しい。
そのために、言語仕様がふくらんでいく。
ここで好き嫌いがわかれるだろうね。
俺も、この点はちょっとハラハラしながら見てるが、
ここまではそれなりのバランスを取ってるような気がする。
>>33 まだ、α版しかなくて未公開です。
でも、言いだしっぺがコンパイラ屋さんなんで処理系はそのうちできると思うよ。
40 :
デフォルトの名無しさん :01/10/22 00:56
slashって猛烈なって意味が無かったアルか? あとdotted は dot;点アルね アメリカさんは決まりきった語を省くから salsh dotted work ;猛烈な 仕事が 点在してる アル だと思うアル。。。
>>39 >でも、言いだしっぺがコンパイラ屋さんなんで処理系はそのうちできると思うよ。
おぉ。なんか安心できる。
しかし、せっかくDを名乗るなら、大改革をしてほしかったなぁ。
漏れ的にはAppleScriptやHyperTalkみたいな自然言語に
近い言語体系がよかったんだけどなぁ。
>>35 言語に含まれたDBCの機能を利用して、
外部のテストルーチンを書けば便利だと思うよ。
例えばclass Aがあるとして
A a ;
という変数に対して、
assert(a) ;
とすると、class Aの不変条件をチェックできる。
要所要所にこれを入れておけば、もしAにバグがあって
aの内部状態がおかしくなった時に、
おかしくなった所で検出できる。
日本も1文字の言語作れや。 い言語(欠番) ろ言語(欠番) まず、 「は」言語をCにぶつける。 「に」言語はDにぶつけろ。 Delphiには「フジヤマ」言語で対抗。 最終的に「スシ」言語で天下を取る。
>>37 Visual DはありえんがD Builderはできるだろう。
:=さえ捨てれば生きていける。
「ゲイシャ」言語はエロゲースクリプト
なんかつまんない言語だな。流行るかどうかは別にして。
>>8 俺の予想では、リフレクションはまずサポートされない。
RTTIはdynamic_cast<>と同じ。
>>47 実は俺もそう思ってる。
意外にレスがつくんでびっくりしたよ。
delegateもなさそうだな。 これではまともなGUIライブラリは作れないだろ。 このC/C++との絶妙な距離間のとり方 (コード非互換の上、アドバンテージが少ない) が災いして流行ることはなさそう。 ちょっと便利ってだけでほいほい移行できたら Cなんてとっくに廃れてるよ。
51 :
デフォルトの名無しさん :01/10/22 04:28
>>50 それは無いだろう。
Cより便利なシステム記述言語って何がある?
>>47 せいぜい、既存の言語の改良どまりっぽいもんな。
C#/JAVAのネエィテイブコンパイラがほしい俺には、 この言語は夢のように見える。
あと、小技的に面白いと思ったのが、 ・ ローカル変数を使わないとエラー 未使用のローカル変数を放置しておくと、ソースの可読性をさまたげるので、こ れはなかなかよいと思う。 ・ HTMLへのコードの埋めこみ HTMLファイルをコンパイラに食わせると、<code>...</code>を抜き出してコンパ イルしてくれる。JavaDocのようにコメントにドキュメントを埋めこむのではな く、ドキュメントにコードを埋めこむ。文芸的プログラミングの復活か? ・ debug行 debug(3) { ... } と書いておくと、コンパイル時にdebugレベルを3以上にした 時だけ、...の部分が有効になる。 ・ typedef typedef Money int ;としておくと、 void print(int i) ; void print(Money m) ; は、別のメソッドになって、引数のタイプで区別される。
DBC付きインターフェースのありがたみについて補足しておくと、例えば、 GenericContainerというインターフェースに対して、 bool empty() ; int size() void add(T t) post { assert(size() == before.size() + 1); } invariant() { assert(empty() || size() > 0); } なんてふうに、メソッドの意味を規定できる。このインターフェースを実装する 奴は、「要素を加えるとサイズがひとつ増える」とか「空だったらサイズが0だ し、0でなければ空とは言えない」みたいな、インターフェースの意味を満たす ことを強制される。 これをバリバリ使ってフレームワークを構築すれば、フレームワークの提供者と ユーザの責任範囲が明確になってかなり品質が向上するぞ。 KDEとかmozillaのように多種多様なコンポーネントが複雑にからまるようなソフ トにDが向くと俺が言ったのは、こういう意味だ。また、大規模ビジネスソフト でありがちな、小数のできる設計者と多数のヘボプログラマというチームを活用 するためにも有効だ。 なお、現時点でのスペックにはインターフェースの詳細は書いてない。DBCがつ くというのは、俺の勝手読みだ。
> ・ HTMLへのコードの埋めこみ これ,マジ面白いと思いました ただし個人的には <code>〜</code> の部分というよりは <pre><code>〜</code></pre> の部分だけを抜いて欲しいなとか思ってみたりして # 重箱の隅つっついて正直スマンかったです(笑い
c# ネイティブコンパイラが出れば不要だろ。
DBCは「規定」と訳すより「契約」を使ったほうがよさげ。
>>59 /. に出て、web page に、短時間の間に大挙して人が押し寄せてくることらしい。
転じて、/. に出てなくても、短時間の間に...を slashdotted って呼ぶらしい。
61 :
デフォルトの名無しさん :01/10/22 20:57
>60 まるでどこぞの巨大掲示板のようだね
ヲタ用語使う言語開発者って以下略
言語開発者なんてオタ以外の何者でもない
>>62 あからさまに少数の限定した人達がオタ用語を使ったところでどうだと言うのだ?
66 :
デフォルトの名無しさん :01/10/23 00:39
初期のC++がCのプリプロセッサだったように、 C++のプリプロセッサとしてインプリメントされていれば、 汎用的にどこでも使えて実用性が生まれて面白かったかも。 (既に過去形かい>われ)
67 :
デフォルトの名無しさん :01/10/23 01:28
わたし的にはテンプレートは好きだが GCの採用と演算子のオーバーロード廃止の二点で却下。 演算子を活用すると可変長引数みたいな醜い部分を 排除できるから素敵(はぁと)。
>>67 そういうの隠蔽されるとちょっといや。
GCは・・・まぁJavaで慣れたからいいや。
<<演算子が5通りの意味で使われてるソース (シフト、ストリーム出力、列のアペンド、ローテート、イベント送信) をメンテして欝になった。
>>66 GCCのフロントエンドを作るって書いてるから、
汎用性は比較的早く確保されると思われ。
る。
>>70 ほほう。
各UNIX+Win OS用のネイティブバイナリ必須のわしとしては
JavaやC#より魅力的。
GCCのフロントエンドということは、既存のC用のライブラリ等も
利用可能かな?C++ライブラリは無理かな。
しかし、C#とかDとかなんでC++の上位互換で作ってくれないのか。
気持ち的にはバッサリ逝きたいのはわかるし、そのままでは穴を
残しまくることになるけどさ。
>>72 > 各UNIX+Win OS用のネイティブバイナリ必須のわしとしては
> JavaやC#より魅力的。
ついでに言っておくと処理系をオープンソースで配布するとのこと。C#との最も
大きな違いはそこになるかも。
> GCCのフロントエンドということは、既存のC用のライブラリ等も
> 利用可能かな?C++ライブラリは無理かな。
CのAPIとの互換性は確保する(Cのヘッダファイルは理解する?)とのことなので、
CのライブラリはほとんどOK。C/C++とソースレベルの互換性は無いので、C++ラ
イブラリはたぶん使えない。
C#のネイティブコンパイラが欲しい人はWindows Javaのネイティブコンパイラが欲しい人はMaxOS X ってことじゃだめか、やっぱ
21世紀のCってかんじ
76 :
デフォルトの名無しさん :01/10/24 07:35
これって、UNIX畑の人達が作ってるの? 彼らが作るものは、ウィン厨の俺には使いこなせないことが多いんだが・・・・
lisp風にプログラムを動的に書きかえられるといいな。
>>77 なんだか良く分からないけど、ありがとう。
希望が湧いてきた、頑張ってみるよ( ´∀`)
>>76 作者の Walter Bright は
昔 MSDOS用の DataLight-C(広域最適化が優秀だった),
Zortech-C++(MicrosoftやBorlandより先に出たDOS用C++),
Symantecに移って Win32用の Symantec C++ を書いた人。
この人、たぶんGUIに興味なし。
>>78 C言語ではプリプロセッサがソースコードの置き換えを
行っているけど、D言語では?
>>81 Dではありがちなプリプロセッサの用途ごとに代替の手段を用意している。
・ 定数の宣言
const int BUFSIZE = 4096 ;
とかenumを使う。
・ 短く汎用的なロジックの定義(min/maxとか)
inline関数を使う。
・ ジェネリックプログラミング(複数の型で同一のアルゴリズム)
templateを使う。
ここまではC++と同じで、C++では推奨だったことがDでは必須になっている。
・ #ifdefによる条件コンパイル(デバッグ用のコード)
debug文という機能を使う。
・ #ifdefによる条件コンパイル(機種依存の処理)
機種依存コードをひとつのモジュールに入れて、そのモジュールを機種ごとに置き換える。
・ #includeで他のモジュールを引用する
import文。
プリプロセッサで処理すると、コンパイルエラーがわかりにくかったりデバッガ
が使えなかったりするが、上記のように言語仕様の中に組込めばそういう問題は
ない。
これ以外の変てこなプリプロセッサの使い方は、わけわからんソースになるから
D言語では禁止。
C#ではこのあたりをどう考えているのか、誰か詳しい人解説してくれ。
debug文はJavaにもほしいな。
84 :
デフォルトの名無しさん :01/10/24 12:07
>>82 >これ以外の変てこなプリプロセッサの使い方は、わけわからんソースになるから
これ以外、ってプリプロセッサ自体無い様だけど?
Dと言うからには、 やはりC/C++のスーパーセットでなければならない。 そうでないと、Cの次のDってことにはならない。
BCPL->B->C->P->Lと進むというのが定説
Basic→C→Perl→Lispか? 俺が覚えた言語の順番だったり・・・・
88 :
デフォルトの名無しさん :01/10/24 13:08
SunもBorlandもMSもSymantecも新言語を作った。 次はMetroworksの番だ! C++のスーパーセット言語作ってくれ〜〜〜〜〜〜 どこもやってないし、CodeWarriorならIDEも申し分ないし、 色んなターゲット環境へのポーティングも得意だし、 言うことなし!なんだが。
だから Metroworks はモトローラに買われて終わったんだってば。
ていうか使ってみて〜。 D言語でゲーム作ってみて〜。
Dあげ
94 :
デフォルトの名無しさん :01/10/25 05:18
が
Metroworksは終わってないっ! スンマソン信者なものでつい。 あれ以降Motrola向け技術開発も増えたけど、今もいい仕事してる。 でも組み込み系にフォーカスしているのは否めないか。
96 :
デフォルトの名無しさん :01/10/25 21:19
>各UNIX+Win OS用のネイティブバイナリ必須のわしとしては たとえネイティブでもGCがあるからにはランタイムの仕掛けが いろいろとあって箱庭的環境と思われ。
>ネイティブでもGCがあるからには そういやこの組み合わせってはじめて見るな
98 :
デフォルトの名無しさん :01/10/25 21:54
>>80 Walter BrightとBjarne Stroustrupが、コンストラクターに
おけるオプティマイズ方法案(一時変数生成の抑止)を
相談するエピソードが"The Design and Evolution of C++"に
出てくるね。アイスかなんか食べながら、ってのがカッコいいなぁ。
>>101 1990年、シアトル(!)で、ANSI C++ Standards Meeting後に
ふたりでSpace Needleタワーに登ってアイスクリーム・サンデー
食べながら、の話らしい。(なんかデートみたいだなぁ)
(Chapter 3の 3.6.4章" Efficiency and Overloading"より)
おやじ二人組がSpace Needleでアイスつつきながらっすか。 なんだかなー、周囲から怪しい目で見られていたりして。
104 :
デフォルトの名無しさん :01/10/29 05:00
Dage
>おやじ二人組がSpace Needleでアイスつつきながらっすか。 >なんだかなー、周囲から怪しい目で見られていたりして。 シアトルでは珍しくないと思われ(藁
106 :
デフォルトの名無しさん :01/10/29 11:38
シアトルに呪いあれ! おやじらしくステーキとワインで、アハン?ウフン !? エヘン!と語り合うよろし。
「はじめてのD」
「D Magazine」 って、もうあるか。
109 :
デフォルトの名無しさん :01/11/01 09:57
実装でるまであげ
110 :
デフォルトの名無しさん :01/11/05 22:40
期待age
111 :
ぞろめゲット :01/11/06 00:24
言語としてはObjective-Cのほうが好きだな。
112 :
デフォルトの名無しさん :01/11/06 00:56
113 :
デフォルトの名無しさん :01/11/06 00:56
ポインタはどうなんの? やっぱメモリアドレスなのかいな。 生ポインタとGCってすげえ食い合わせ悪そうだが。
114 :
デフォルトの名無しさん :01/11/13 11:15
実装まだかなage
>>113 「保守的」なGCアルゴリズムでよければ実装可能だし
C言語用のそういうランタイムライブラリ製品もある。
「疑わしきは開放せず」ってのはちょっと気持ち悪いけど
使い物にならないほどってわけでもない。
実装が無いと面白くないね。
本格的GCじゃなくても、 参照カウンタ見て解放してくれるくらいのでもいいんだけど。
118 :
デフォルトの名無しさん :01/11/13 17:01
アゲてみる。
他スレで Digital-Mars C/C++ にDLL周りの不具合あったとか 誰か言うてたけど、Winへの対応は本当に大丈夫?
120 :
デフォルトの名無しさん :01/11/20 13:29
空揚げ
121 :
Night2000 :01/11/20 18:13
もっとさ、→とか算術記号とかUMLっぽいのとか 既存の文字コードに縛られない言語表記でつくてほしいな。 色で指定とかも使うとか。 専用のエディタが必要でソースコードもバイナリなの。 そのかわり、とっても見やすいとか。 パラダイムシフトぐらいなら、それぐらいやっちゃっていい気がする。
>>121 そういう奴を前に考えたことがあるが
できあがったソフトのパフォーマンスが出そうにない。
CPUやメモリがCみたいな言語を想定しているかに思える。
>>122 それを言ったら文法が複雑な言語の方が
遅いってことになるでしょ。
見た目と関係なくすりゃいいじゃん
int *[]*[3] p;
>121 フォントで動きが違ったり……
>>121 Dはパラダイムシフトなんて考えてないでしょ
C++-ってとこか
127 :
デフォルトの名無しさん :01/11/23 17:03
凧上げ
128 :
デフォルトの名無しさん :01/12/03 12:06
俺はE言語ドラフトを一応読んだが、なにか?
129 :
デフォルトの名無しさん :01/12/03 14:47
C++のノリからいくと、Dって、落第のDだよな
130 :
デフォルトの名無しさん :01/12/03 16:07
あれか? 優良可不留放 ってやつか?
131 :
デフォルトの名無しさん :01/12/04 22:31
DBCと例外投げって,どっちがどう有利なんだろう? Eiffelやrubyの例外処理の方が確かに自然なんだよね。常に範囲を意識するし。 でも現実,例外の発生率で実装レベルを分けないとパフォーマンスが落ちますな。 一方,C++やJAVA系の例外投げは,どう見ても引数でステータス書くのと大差ない。 tryとかcatchとか読むとき引っかかるし,人(性格?)によって書く書かないがバラバラになりがち。 どうよ?反例よろしく〜
132 :
デフォルトの名無しさん :01/12/04 22:39
>>131 普通、例外って、普通に使ってたらありえないことが発生したときに
発生するもので、ステータスでどうこうできるものは
最初からステータスでどうこうした方がいいと思います。
>普通、例外って、普通に使ってたらありえないことが発生したときに >発生するもので、 んなこたない たとえばユーザーのボタン押下などのタイミングで 処理を中断するときに例外を投げるという考え方もある。
134 :
デフォルトの名無しさん :01/12/04 22:49
>>133 あーそれってちょっとエッチな構想じゃない?
一般的な手法?
135 :
デフォルトの名無しさん :01/12/04 23:04
131だよ。脱線してきたんで新スレ立てようとしたら,スレッド立てすぎのERROR。んご f(^^;) さてC++でassert使ってDBC的にコーディングしてる人居ますか?あるいはDBCより例外投げる 方がずーっと妥当だよってな考えがあれば教えてPLZ〜
136 :
デフォルトの名無しさん :01/12/04 23:15
関数型言語的には、意味のある値を返すとき以外は例外を投げますな。 たとえばRDBへのラッパ関数があるとして、RDBへのアクセスに失敗したときには 「null」や「ありえない値」を返すのではなく、例外を投げるみたいな。
137 :
デフォルトの名無しさん :01/12/04 23:26
>>136 アクセス可能か否かを調べる関数があって
それがboolean型だったりするなら分かる。
>134 多重ループからgotoで抜け出るくらいには一般的:-P 複雑なメソッドの呼び出しで # たとえばこんなの # ユーザーのコード→ライブラリ→ユーザーのイベントハンドラ ちまちまフラグor戻り値チェックするのが面倒なときに使うことがある。 >136 関数型言語的でなくても最近のOOPLならだいたいそうだね Cのgetc()なんてライブラリの仕様としては相当無理があるよな。 とかいいつつコードが短くなるから if(get_index()>=0)...もありだけど。 >137 それはそうだけど、コスト的にいつも if(can_do()) do() のように綺麗に分けられるわけじゃない。 なので一般的な手法としては無理がある。
>>135 >さてC++でassert使ってDBC的にコーディングしてる人居ますか?
前は中途半端にやってたけどassertで検出できるエラーって限られてるから
最近はUnitTestとして実コードの外でチェックするようになったよ。
正直文法レベルのDBCはいらん。
DBCでチェックされるのって、基本的にプログラミング エラーなのでは? で、本番リリースではコンパイラスイッチでDBCはずすと。 例外処理の使い方は136に同意。
>>139 横槍ですまない、文法レベルでサポートされるのがDBCの強みだと
思う。外部に書かれたユニットテストのコードではなかなかアクセス
できない所まですんなり入り込めるとかさ。
それからDBCによるチェックってユニットテスト以降でも有効でしょ。
>>138 > Cのgetc()なんてライブラリの仕様としては相当無理があるよな。
getc()系はsizeof(char) == sizeof(int)の環境(規格では認められている)では
EOFの判別ができないよね。
>>142 多分そんな環境ならEOFもないだろうし
文字コードもきっと128以上なんてないだろうから
心配すんなって
>>137 > アクセス可能か否かを調べる関数があって
> それがboolean型だったりするなら分かる。
RDBはダイナミックな存在だから、
アクセス可能か否かを調べたときにはアクセス可能であっても、
その直後にも状況は変化しているかも知れないんだが。
145 :
デフォルトの名無しさん :01/12/05 09:39
引数にconstが書けるようになってコードの表現力があがっただろ。例えば memcpyでどっちがfromか忘れてもconstを見ればわかる。DBCはこの延長で、クラ スや関数の仕様を明確にするような意味もあるんじゃないかな? 嘘のconst書くとコンパイル通らんからconst宣言は信頼できる。同様に、DBCに 嘘が書いてあっても、DEBUGモードでコンパイルしてUNITTEST通せばすぐ判定で きるから、DBCも信頼できる。ただのコメントや規約でなく言語仕様に入ってる ことは意味があると思う。 ただ、リリースモードでは普通無効化するもんだと俺も思うよ。
147 :
デフォルトの名無しさん :01/12/15 01:34
148 :
デフォルトの名無しさん :01/12/16 15:32
誰か使った?
149 :
デフォルトの名無しさん :01/12/16 19:21
ダウンロードしたけどlinuxは動作対象外だった(w オレも使った人の感想聞いてみたい
言語もやっぱWinからかぁ. 言語位Unix系の方で先に作って欲すぃ.
151 :
デフォルトの名無しさん :01/12/17 23:15
alpha 3 compiler release age
- interface calls, casts, implicit conversions, vtbl[]'s
- import object; is now implicitly done
- Object is now the default base class
- overloading at module level now works
ftp://www.digitalmars.com/dmdalpha2.zip
あ、NetNewsか
いまdmdalpha3.zipをダウンロードしてみた。 それにしてもcvs repoにでも移してくれんかのう。 もう前の版が置いてなかった。
っていうかこれWin版じゃん、もう。 UNIX上でコンパイルできるソースはないのか……
え、デルもどきじゃねーの(藁
しかも149でガイシュツじゃない…… SEHまわりはどう書きなおせばいいんだろ。
どっちかっつーと、こういうの試すのはWinの人より、Unix系の人だよなあ。 やっぱUnixの方が出てないというのは作り手の都合か。
この言語ってどんな分野で使うんだろう? GUIアプリのロジック部ってのは、二つの言語を使い分けなくちゃ いけないから大規模でない限り労力に見合わなそう。javaみたいな サーバサイドはフレームワークが追いつくのに時間がかかる。 後はCUIアプリとかコンパクトなサーバとか?
160 :
デフォルトの名無しさん :01/12/25 06:29
ほう。基本型に1ビット長のものがあるようだな。
162 :
デフォルトの名無しさん :01/12/25 10:06
>>151 試してみようかと思ったら、何やら他のパッケージも要るらしいので、
めんどいからやめた。
ドキュメント眺めた感じでは、何やら便利そうではあった。
型にbitとかbyteとか有るのね。
intは32bit固定みたい?
163 :
デフォルトの名無しさん :01/12/25 21:49
> Fixes long list of bugs submitted by people. Thanks! ^^^^^^^^^^^^^^^^^ To be continued... =) 藁った
165 :
デフォルトの名無しさん :01/12/25 23:16
ハハハ。 とりあえずサンプルはコンパイル通った。 コンパイラINCLUDEとか環境変数見てくれんのがイヤだが、まあβだから。
dlang.msiでも作ってくれないと試せましぇ〜ん
168 :
デフォルトの名無しさん :01/12/28 12:35
で、D to C++ translator でも作ればUNIX環境でも何とかなるんだろうか? 難しそう?
ネットワークとかWebがらみのライブラリが見当たらないけど。 Javaのサーバサイドでの興隆だとか、Perlの活躍にしても そういうのもが大きいんでないの? 標準で無きゃダメだよ。
170 :
デフォルトの名無しさん :01/12/29 01:36
>>169 まだそうゆうレベルの話ができる段階ではない。
言語仕様を決めてるところ。ライブラリについては
javaで言うなら、java.langがおぼろげに見えてきたくらい。
>>170 そうなの?失礼しました。
なんとなく期待するんだけど。C++の現状に不満を感じまくりなので。
とはいえやっぱりC#かなあとも思う。
いやだって、まだ配列の比較演算子決めてるくらいだもの。
なんか勢いが増しそうな予感 www.ddj.com/articles/2002/0202/ こんなのもある d.batcave.net/ ようわからんがスゲー
>>d.batcave.net/ ライブラリ周りはこの人かなり期待したい
gccのフロントエンドとやらは、まだ先になるんかのう。
176 :
デフォルトの名無しさん :02/01/19 06:44
期待age
179 :
デフォルトの名無しさん :02/01/30 08:20
The D Programming Language by Walter Bright Listing One (a) static int bar(); // forward reference int foo() { return bar(); } static int bar() { ... } (b) int foo() { return bar(); } static int bar() { ... } Listing Two (a) class Foo; class Bar { Foo f; } class Foo { int x; } (b) class Bar { Foo f; } class Foo { int x; }
180 :
デフォルトの名無しさん :02/01/30 08:21
Listing Three (a) class Foo { int member(); }; int Foo::member() { ... } (b) class Foo { int member(); { ... } }; Listing Four int i; Symbol s = null; for (i = 0; i < 100; i++) { s = search(array[i]); if (s != null) break; } assert(s != null); // we should have found the Symbol
181 :
デフォルトの名無しさん :02/01/30 08:21
Listing Five (a) class Year { int year; // years in A.D. } (b) class Year { int year; // years in A.D. invariant { // Our business app doesn't care about ancient history assert(year >= 1900 && year < 3000); } } Listing Six (a) byte *memcpy(byte *to, byte *from, unsigned nbytes) { while (nbytes--) to[nbytes] = from[nbytes]; return to; } (b) byte *memcpy(byte *to, byte *from, unsigned nbytes) in { assert(to + nbytes < from || from + nbytes < to); } body { while (nbytes--) to[nbytes] = from[nbytes]; return to; }
182 :
デフォルトの名無しさん :02/01/30 08:22
Listing Seven byte *memcpy(byte *to, byte *from, unsigned nbytes) in { assert(to + nbytes < from || from + nbytes < to); } out(result) { assert(result == to); for (unsigned u = 0; u < nbytes; u++) assert(to[u] == from[u]); } body { while (nbytes--) to[nbytes] = from[nbytes]; return to; } Listing Eight (a) class Year { int year; // years in A.D. void setYear(int y) in { assert(y >= 0 && y <= 99); } body { year = y + 1900; } invariant { assert(year >= 1900 && year < 3000); } } (b) class FullYear : Year { void setYear(int y) in { assert(y >= 1900 && y <= 3000); } body { year = y; } } (c) class FullYear : Year { void setYear(int y) in { assert(y >= 1900 && y <= 3000); } body { year = (y <= 99) ? y + 1900 : y; } }
このひとは、なにがしたいんだろう… もうすこし見てみよう。
>>183 なんでしょうね、となりの奥さん。インデントもしないで。
これが流行りの荒らしっていうやつですかね?世も末ですね。
185 :
デフォルトの名無しさん :02/01/31 03:24
>>184 よく読んで見ろよ。
D言語の特徴的部分をまとめて列挙してあるぞ。
インデントしてないのは、半角スペースが飛んでしまうことを知らなかったことが原因だと思われ。
186 :
デフォルトの名無しさん :02/02/02 13:20
ってたって、どっかのドキュメントからのコピペだろ?
思い出し age
188 :
デフォルトの名無しさん :02/02/11 10:10
思い出し age
190 :
デフォルトの名無しさん :02/02/23 21:11
悪くは無い感じかも。 MSが買収してメインストリームに採用されて欲しいかも。 C++の地獄から解放されたい。
>MSが買収してメインストリームに採用されて欲しいかも。 これやるならC#のネイティブ版出すでしょ。
192 :
デフォルトの名無しさん :02/02/24 12:07
C#にはGCがあるので、C/C++のラインからは外れてる。 Dはその延長を狙ってる。
DにもGCあるぞ
194 :
デフォルトの名無しさん :02/02/24 13:04
カエレ
196 :
デフォルトの名無しさん :02/02/24 13:07
とにかくDの発表はタイミング的に遅すぎのような。 せめて数年前にはリリースしてネイティブ+GCの有用性(無用性?)を 示してC#に影響を与えて欲しかった。
198 :
デフォルトの名無しさん :02/02/24 13:45
>>197 確かにね。
ただ、作ってる奴に動くものを作る才能があるようなので、
(ZortechC++→SymantecC++らしい)
その辺りはやや期待。
Borlandが買ったりしないかな。
あと、C++の言語仕様が汚すぎてOSに追いつけなかったMAcOSX
で三つ目の言語候補(ObjCとJAVAの次)として採用されないかな。
D.NET は出ますか?(ぉ
NewsGroupではそういう話も出てたな・・・
201 :
デフォルトの名無しさん :02/03/03 00:20
保守age
202 :
デフォルトの名無しさん :02/03/07 21:27
Windows API を呼び出すにはどうしたらいいの? とりあえず import windows; はしてみた。 で、メッセージボックスを出してみようと思ったんだけど MessageBox がみつからないって言われた。 windows.MessageBox とかにしてみたけど駄目だった。
アホだ(w
>>202 JavaとかC#じゃないので、まだまともなライブラリそろってません。
ええ、まともなヘッダすら。
悪魔の言語のアブリビエーションですか?
えっ!ランタイムは DMC++ と共通なんじゃないんですか!? てっきり DMC++ で出来ることはもうなんでもできるのだと思ってました。
だってまだ、アルファリリースでしょうが。 べつに普通でしょう。
某氏みたいにライブラリ自分で作って公開してみるととりこまれるかもしれないね
209 :
デフォルトの名無しさん :02/03/15 17:24
ageage
なんか寝た触れよ
COMを簡単に扱えるようになれば、 それなりの需要はあるかもなあ。
つまりDirectXが・・・
うむ。 そもそも日本では知名度が低いみたい。 1はよくぞスレ立ててくれた!って感じ。 そのうちゲーム用途にサンプルでも作ってみたいところ。 DirectXのヘッダのコンバートが面倒だが。
217 :
デフォルトの名無しさん :02/03/23 23:35
>>216 そうだそうだ、そういう手があるね。
ゲーム用に実は向いてるかも。
ゲーム機用としてどうだろう?
良い感じだと思うんだけど。
ゲーム中にGCが勝手に動くのはまずいよ。 フレーム落ちしちゃうからね。 GCがidleスレッドで動くならかまわないけど(無理か?)。 # 正直こういう考えが早く時代遅れにならないかなと # 密かに期待してるんだけど、当分そうはなりそうにない・・・
考え方というよりは機器の性能の問題ですな。
まあね。でもメモリが256あったらあったで 結局使い切ってGCどころじゃないってことになるような。 これは昔からそうだったしこれからもそうなる予感。
223 :
デフォルトの名無しさん :02/04/13 03:35
news://news.digitalmars.com/D
>>223 見てるよ。
しっかし、俺を含めた日本で何人が期待してるんだろうか・・・。
225 :
デフォルトの名無しさん :02/05/08 02:12
afe
まーた、新しいGUIクラスと統合開発環境を おぼえるハメになるのか。 どうせ出るのならば、 歳とって物おぼえが悪くなる前に、 早く出てくれよ。
sage
ujj
GUIとかはプラットフォーム依存が大きすぎるので*標準では*付けるつもりはない、 と1のサイトで見た記憶があるが、今見てみると見つからないな。
koredana
http://www.digitalmars.com/d/phobos.html No user interface windowing classes
GUI styles, philosophies, etc., are not portable from machine to machine.
A GUI Windows app should look like a Windows app when running on a Windows machine.
It should not look and feel like a Mac app unless it is running on a Mac.
Attempts to create a common GUI class library between Windows,
Mac, and other GUI operating systems have all to my knowledge failed.
Java has a successful GUI class library, but does so by creating its own GUI with its own look and feel.
This approach is fine for a web language, but not for a systems language like D is.
Windowing class libraries should be separate.
CLXみたいなGUIライブラリが付くといいんだが…
>>232 がんばって自分で書いてみれば?
Javaみたいに標準でダメっぽいGUIライブラリがあってもアレだし。
234 :
デフォルトの名無しさん :02/07/11 03:27
Dが流行出すまで何年かかりますか?
age
236 :
デフォルトの名無しさん :02/07/23 03:26
ago
237 :
デフォルトの名無しさん :02/08/18 20:36
Dってgoogleで検索するとき何て書いたらいい? ・"language D" gcc ・"D言語" gccで
238 :
デフォルトの名無しさん :02/08/19 00:58
D言語なぞ普及する見込みなし。 out of 眼中!
>out of 眼中! なんだこりゃあ??(w
240 :
デフォルトの名無しさん :02/08/19 04:44
早く普及しねーかなぁ。 デバッグする人のことをちゃんと考えて言語仕様を 策定してるあたりがいいよな・・・・。 これが出たらC#イラネェ。
タイミングが悪かったと思う。 完全にC#に埋もれてる。 使うメリットも無い。
243 :
デフォルトの名無しさん :02/08/19 12:45
C#とは競合しないと思う。どうせJavaがあるんだし。 優雅に普通のアプリ組みたい人向けだと思う。 似たような感じだとEiffel, Sather? C互換なのが大きいのかな・・・ でも、それだけで普及するとすれば、ちょっと吃驚するかも。
某陸は D Builder を作ってくれ。
×これが出たら ○これが普及してまともに使えるようになったら です。 C#は言語仕様がC++よりは良い感じだったので最近そっちになびいて たんだけど、Dが台頭したら俺はDになびくと思う。
246 :
デフォルトの名無しさん :02/08/19 13:17
お遊びでDでゲームでも作ってみるかなぁ・・・。 CやC++の資産はある程度まで使えるようだし。
sage
穂sひゅ
249 :
デフォルトの名無しさん :02/10/12 21:56
あげてみる?
よっしゃ、どんどん揚げよう!
安芸るのはいいけどなんかネタふれよ。
252 :
デフォルトの名無しさん :02/10/24 22:13
hoge
これ、ネタ?
なんかおかしいぞ!
ちょっと見てみたけど int[3] x; // x is an array of 3 ints が int x[3]; // x is an array of 3 ints と書けたりすんのはやめてくれんかな. int[3]*[5] x; // x is an array of 5 pointers to arrays of 3 ints をCライクに書き換えて int (*x[5])[3]; // x is an array of 5 pointers to arrays of 3 ints に至っては,アルコール入ってたらわけわからんぞ. 俺が年取っただけかなあ...
hoge
(´・∀・`)ヘー
つまりDirectXが・・・
sage
プリプロセッサ排除しちゃったみたいだけど、boost 見てどう思うんだろうね。
挟
263 :
デフォルトの名無しさん :02/12/06 00:18
アゲハゲハァ
D ってニンシンの事?
265 :
デフォルトの名無しさん :02/12/11 20:58
Dage
266 :
デフォルトの名無しさん :02/12/12 00:42
で、E言語はどうよ?
(・∀・)イイ!!
むかしG言語作ったことあるよ。 void sikosiko(int n) ; void dopyu(void) ; しか使えないけど……
(・∀・)ジイ!!
271 :
デフォルトの名無しさん :03/01/08 21:03
>>270 それってコンパイルできてるのでは?
上手く行っていないなら、そう判断した理由を書いてくれないとわからん。
少なくともそれはエラーメッセージには見えないよ。
とりあえず、こちらではsamplesはコンパイル、実行できたよ。
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
C++は保守に至難。Javaは使いやすいが速度に問題が残る。 C#はM$の思惑によりWindowsでしか使えないかもしれない。 そこでUnix系OSでもJavaライクに使いまわせるネイティブなD言語? assertの使い方がC++/Javaよりよさげに見えた。 これまたユニーク、という感想。
うーん、落書きにあぶり出しで住所書いてるような感じ? 見れる人だけ見れるように。 なんかいやぽ。
ID:ZBsKvw39のコピペは 笑い者になっていることに早く気づきましょう。
ここは過大評価されるインターネットですね
2003年1月9日より 計2731票 匿名性に絡む問題なので反対 27% 763 票 サイトのためになるから賛成 54% 1489 票 利用しないから関係ない 8% 242 票 2ちゃんねるってなに? 4% 122 票 アクセスログってなに? 4% 115 票 みんないい香具師がおおいのか?
>>230 それか!!!!!!!!!!!!!!!!
>225 貴方達が古いパソコンに侵入していたの知ってましたよ。 わざとJCOMのIP同じにしてた理由も分ります? トレースの実験してたらどうします。実戦積む事は大事です。(僕は素人だけど) これで自殺したら 適当に作った恥ずかしい文章や、幾つか足した嘘のアドレス等の文章が流出する、、それは恥ずかしい・・ そう思う為に結構痛々しい事も誇張して書きまくってましたがね。 おかげさまで持ちこたえました ・・最初はハックは貴方方を想定していませんでしたが 2ちゃんねるというサイトについてあまりに私は無知だった様です。 只、量子論は今日全て解決しました。
>>835 匿名性に絡む問題なので反対 28% 1093 票
サイトのためになるから賛成 54% 2142 票
利用しないから関係ない 8% 341 票
2ちゃんねるってなに? 4% 164 票
アクセスログってなに? 4% 160 票
サイトのためになるから賛成 54% 2142 票
サイトのためになるから賛成 54% 2142 票
サイトのためになるから賛成 54% 2142 票
では、貴方はそのサイトの何が好きなのでしょう。
本当の事を知ってる人が、恐れをなして何処かに行っちゃうよ。
D ってニンシンの事?
283 :
デフォルトの名無しさん :03/01/10 12:05
>>282 スレタイに `D言語' って書いてるやん。
お前は `言語' って読めないのか?
もういいからお前は氏ね ( ゚д゚)、ペッ
コピペ君が大勢に叩かれたショックで人の少ないスレに引きこもってる(^_^;)
なにくそ1000げっと
彡ミミミ、 (; ゚ ∀゚) < 遅ればせながら、腐れさん結婚おめでとうage!!
民家倒壊?
ひろゆき後ろを見ろ!
急にコテハンどもがおとなしくなったのは気のせい??
なんとなく、どこもレスが丸くなった気がするでつ。
そういわれるとそうでした。。
隊長のことハ○とかって言えなくなるのかな、寂しいな
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
そうなんでつか。さんくす。
一見まともなことを言って見てもアシはつくよ>yQzsmkAx
すみません、無知で。こんな便利なもんがあるとは知らずに半年ぐらいWinny回してました。素晴らしい。多謝。
もう2ちゃんねる無しでは生きていけません。
オマエ良く厨房って呼ばれるだろ。 逝ってよし
最後の記念カキコ
まぢかよ。
あーっはっは! 久しぶりに笑ったよ!
っていうか同じ人でわ?
_____________ ∧_∧ / ( ・∀・) < 嘘です。言ってみただけです。 ( ) \_____________ | | | (__)_)
最高裁への上告は認められなくなったから、これで事実上判決確定だよ。
逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。
二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm ようするに上告しても今の制度では100%無駄。
これで完全終了ってことか。
そうか・・・。
>619 釣りのつもりだろうけど・・ >ボランティアだから無責任でイイ? ボランティア=無責任に見えるんだな、<619さんは。 回答を求めてもループになるという罠
(^^)
俺らも人のこと言えないが年末年始に2ちゃんねるって恥ずかしくない?>アンチの皆さん
Error: Error reading file 'object.d' って言われる…なんだろ…
>>312 なんだろといわれても状況が解らんから答えようがない。
何してエラーが出たんだろ…
んーと、noahのサイト行って見回ってたらD Memo見つけて 言われるままに落としてきて解凍して上書きして AUTOEXEC.BATにPATH足してhello, world.の所を まんまコピペしてdmd sample.dしたらそう言われました。 object.dでGREP掛けても何も出ないしで困ってます。 まだド素人が手出しちゃダメなんですかね。。
315 :
デフォルトの名無しさん :03/01/14 00:36
>312 sc.ini の設定がまずいと思われ。 DFLAGS="-I%@P%\..\src\phobos" の部分がちゃんと object.d のあるパス(元のアーカイブでは dmd\src\phobos) を指しているか確認しる! ちなみに %@P% はdmd.exeの位置
その前に付属のサンプルはコンパイルできたの?
>>314 たぶん、正式版出ても状況は変わらんと思うぞ。
・日本語とか半角スペース入りのディレクトリにあるとマズかったりするのかも
しれないので、心当たりあれば変えてみてはどうか。
・おかしいのは明らかに、315氏の指摘通りphobosが
見つけられないでいるせいなので、コンパイル時に
dmd "-Ic:\dmd\src\phobos" sample.d
と手で I オプションをつけてみるとか。
・思いっきりとりあえずだが、dmd\src\phobos の中に sample.d を
置いてそこでコンパイルすれば通るはず。
(^^)
ごめんなさい。 PATHがE:じゃなくてD:だったり}が{になってたり死にたくなるようなミスばかりでした。 現在順調。 お昼に泣きながら買ってきたCとC++とJAVAの本どうしよう…
(´-`).。oO(IDEってないのかなぁ。やっぱ、みんなテキストエディタで書いてるのかなぁ)
>>320 無事使えるようになったようですな。
実は "linker and utilities for Win32" はDigital Mars C/C++の最新版なので
dm\bin の方にもパスを通せば C/C++ コンパイラとしても使えるようになるよ。
ただし、C++として使うなら STLport 4.5.3 も入れた方がいいかも。
(インストール方法は dm\stlport\readme.txt を参照)
323 :
デフォルトの名無しさん :03/01/17 00:13
(´-`).。oO(いまだにWindows onlyなのかな)
debug()とかversion()とかout() & bodyブロックとかunittestブロックとか、 色々面白そうではあるなぁ。
(^^)
326 :
デフォルトの名無しさん :03/01/27 22:02
dmd 0.51 release age ファイル名が dmdalpha.zip のままなのでわかりづらい…。 変更点は ・Added template value parameters (as opposed to just type parameters). ・Fixed several problems with templates. ・Added #line pragma support. ・D can now accept source files in various UTF formats.
327 :
デフォルトの名無しさん :03/01/29 00:34
Dマンセー
328 :
デフォルトの名無しさん :03/02/03 21:32
環境変数などのPathのところですが 例えば、C:\DMC にコンパイラがあるとすると、 %@P% の部分を、そのままC:\DMCで置き換えていいのでしょうか? どうしても、コンパイルしてくれません。
>>328 普通に解凍して使ってるなら、コンパイラがあるのは
C:\DMC\bin
なはず。置き換えるなら %@P% を C:\DMC\bin に。
つか、%@P% のままsc.iniを放っておけば自動認識するはずだけど。
330 :
デフォルトの名無しさん :03/02/03 22:12
331 :
デフォルトの名無しさん :03/02/03 23:58
C/C++ ・・・ Eiffel ↑ D?
332 :
デフォルトの名無しさん :03/02/04 00:04
C#に対するアドバンテージを提示してください。
暇なときに、少しずつ日本語訳をしてみます。>リファレンス
>>332 ・Design By Contract
・auto変数
やっぱりうまくいかない。 sc.ini の書き方を詳解してください。(とくに-Iの部分)
336 :
デフォルトの名無しさん :03/02/11 14:39
socketのプログラミングしてみたいんだけど、 sockaddr_in構造体のイニシャライズ関数が 定義されてないみたいなエラーがでてくる。 どうしたらいいの? あと、アロー演算子ってまともに動いてる? set->を(*set).に変換したんだけど。
338 :
デフォルトの名無しさん :03/02/13 13:37
ほんとうにごめんなさい! インストールが完全に終了できないのです。 Pathとか、環境変数とか、いじりまわしてもらちがあきません。 どなたか、手順を箇条書きで教えてーーーーーーーーーーーーーーーーー!!!! 当方Win2000Proをつかっています。関連ファイル(dmdalpha.zip)をDドライブのルートに展開する ものとします(D:\)
>>338 手順も何も、ダウンロードして解凍してPATH通しゃ終わりだろ。
まあ、もう少し詳しく書くと、
1. 「D compiler for Win32」(dmdalpha.zip) と
「linker and utilities for Win32」(dmc.zip) をダウンロードする。
2. dmc.zipをディレクトリ付きで解凍して
ディレクトリdmをD:\に移動する。(D:\dm)
3. dmdalpha.zipをディレクトリ付きで解凍して
ディレクトリdmとdmdをD:\に移動する。(D:\dm, D:\dmd)
dmディレクトリの上書き確認メッセージがでたら「すべて上書き」を選択する。
3.「コントロールパネル」を開いて「システム」→「詳細」タブ→「環境変数...」
「システム環境変数」の「Path」をダブルクリックして「変数値」の先頭に
「D:\dmd\bin;D:\dm\bin;」を追加。
以上
後はコマンド プロンプトを開いて
> cd /d D:\dmd\samples\d
> dmd hello.d
で hello.d コンパイルされて hello.exe ができるはず。
>339 確かに、サンプルの hello.d はコンパイルできるのですが、 import stdio; int main() { printf ("Hello, world\n") ; return 0; } を「D:\」において、339の通りに設定してコンパイルすると 「Error:Error reading file 'stdio.d'」 と、でるのです。stdio.d へのパスがおかしいのですか?それとも ファイルそのものがおかしくて読みとり不可なのかさっぱり分かりません。 だれか 助けて・・・・・・
import c.stdio; だよ
>341 ありがとうございました。まさか、27のソースコードが不正確だとは思いもよりませんでした。
日本語もきちんと使えるようだし、あとは英語のドキュメントを 日本語訳するしかないのか・・・。 ヒマなとき、D言語の日本語サイトを作ってみるかな。
実行速度ってどんなもんなの?
普通
>>342 不正確も何も、このスレの最初の方は、まだDのコンパイラすら出ていなかった頃だからなぁ。
347 :
デフォルトの名無しさん :03/02/14 06:41
添付のドキュメントも import stdio; になっているから、はまりそうだね。とりあえずコンパイルして見ようの人は。
とりあえず、GUIライブラリが欲しいな。 暇になったら作る・・・つもり。 JAVAに慣れちまうとC++なんてやってらんねぇし。
>>348 楽したいなら確かにJavaだが、Loki や Boost 知ってしまった身には
Javaは面白味に欠ける。
350 :
デフォルトの名無しさん :03/02/14 22:46
emacs用のd-modeとかないですか?
Javaも1.5でGenerics搭載らしいけど、C++のtemplateに比べりゃ貧弱だからね。 プリミティブ型不可、テンプレート型の生成不可、非型テンプレート引数不可、だし。 型引数に制限をかけられるとか、わざわざ> >とスペースあけなくていい、とかは進歩したっぽいが。 そういう意味では、DはC++の強力さを失わずにすっきりさせている印象があるので期待してる。
gccのFrontEndって今まともに動いている? unixで使えるのはいつごろだろ・・・。
>>349 Loki,Boost調べてみたけど、中々面白いね。
っつーか、これぐらいの機能は、標準で付けといてくれと言いたい。(;´Д`)
頭のいい人が考えてることはよく分からんな。
354 :
デフォルトの名無しさん :03/03/09 03:17
事前事後の表明ってコードだけじゃ不十分と言う意味でthrows()と同程度の重要性しかないよね。 だから仕様としてドキュメントに書いて入り口出口でassertするだけで十分だし assert(pre) try{ ... }finally{ assert(post); } 言語仕様として盛り込むには機能が不十分。 例えばローレル指数を計算する関数の事前表明は身長体重が正であること。 事後表明はローレル指数が正しく計算されていること???って意味不明。
>>354 > 事前事後の表明ってコードだけじゃ不十分と言う意味でthrows()と同程度の重要性しかないよね。
> だから仕様としてドキュメントに書いて入り口出口でassertするだけで十分だし
戻り値を使った事後条件の表明、を ensure... とか out( ) { ... } 無しで
assert で書こうとすると body 部分が不自然になる - (戻り値を
格納する変数を関数の初めで宣言しておかないといけない) -
ことが多々あると思うんだけど、そこんところどうするの?
あるいは、仕様としてドキュメントに書いてチェックコードを入れておく、よりは、
それに該当する言語要素があって、処理系のその仕組みを利用する、
という方が便利だし曖昧さも減って良くないか? (例えば Javaのfinal や
C++のconst とかを考えてみると。)
> 事後表明はローレル指数が正しく計算されていること???って意味不明。
そういう事後条件は普通書かんでしょ。
…というか、「言語仕様として盛り込むには機能が不十分」というからには
この場合にするべき適切な動作があるけれどD言語では実現できない、
って意味だと思うが、この場合何を期待している?
>この場合何を期待している? 何も期待してないよ。適切な動作を記述しようが無いから機能として持たせる必要も無い。 結局のところ >assert で書こうとすると body 部分が不自然になる - (戻り値を >格納する変数を関数の初めで宣言しておかないといけない) - >ことが多々あると思うんだけど、そこんところどうするの? が不自然にならない構文糖でしかないわけで。
> 何も期待してないよ。適切な動作を記述しようが無いから機能として持たせる必要も無い。 だから実際、「ローレル指数が正しく計算されていることを 記述できるような枠組み」なんてものはDの機能として持ってない。 それで?この話とcontractとの関係は? 「適切な動作を記述しようが無い」ものが「記述できない」からといって、 他の場合の適切な動作を記述できるDBCって機能が重要性がない、と 主張する流れがよくわからんのだけど。 構文糖だ、ということは、 finally + assert で出来る以上のことが出来ないなら無意味、ということか? > が不自然にならない構文糖でしかないわけで。 ワシは仮にそれだけでも非常に重要だと思うんだけど、ここは人それぞれだろうから置くとして。 finally - assert でチェックする場合、return で finally に到達したときには チェックして、例外で finally に到達したときはスルーしなきゃならんのだが、 その動作を out(..) {} という「構文糖」無しで記述する方法があるのか?
いい!
Dage
360 :
デフォルトの名無しさん :03/04/14 23:51
面白いです。statementsまでよみますた プロパティってのでShift演算子やらビット演算子を 大量に使わなくても良くなるかもしれません。 でもint.initなんにつかうんだろ?。
ぶっちぎりで流行らない予感
筋はいいんだけどね。 ただ、筋は良い言語としてはすでに Java がある。
いや凄く変で面白いっすよまじで 配列の内容のコピー int[3] s; int[3] t; s[] = t;the 3 elements of t[3] are copied into s[3] s[] = t[];the 3 elements of t[3] are copied into s[3] s[1..2] = t[0..1];same as s[1] = t[0] s[0..2] = t[1..3];same as s[0] = t[1], s[1] = t[2] ..の前のはじまりのインデックスは0ベースで ..の後の終わりは1ベースなのなんだろ
Dage
366 :
デフォルトの名無しさん :03/04/16 02:16
Dage
>>366 これをみると、既存の言語のいいところどりしまくりで、
ネエティブコンパイル可能という、まさにC++の後継だな。
開発環境と、ライブラリがなんとかできれば、
実務で使ってみたいな。
(^^)
Dage
>>370 三日ぐらい前からずっとDageってなんだ?「だげ」?とか思ってたんだけど、今気づいた。
D・age(D言語・age)って意味だったのねw
プッ(ry
>>366 Feature D C C++ C# Java
Multiple Inheritance No No Yes No No
C++ 最凶
Hello worldは出来ました。 Windowを表示させるにはどうすればよいのでしょう。
∧_∧ ( ^^ )< ぬるぽ(^^)
∧_∧ ( ^^ )< ぬるぽ(^^)
なんで動的なクラスローディングできないんだろう?
シリアライズの話?
>>379 Generates standard object filesを実現したかったからか
パフォーマンス重視にしたかったからでは。
Dage
そんなことやったって流行らないものは流行らないよ。 C#に潰されてアボーンだな。
384 :
デフォルトの名無しさん :03/04/24 10:12
けっこう望んでた言語かも。
Dage
D age
ダゲ
>>385-387 必死だな。
なんかネタ書かない限り頻繁にageても無意味だと思うが、どうか。
ここはひとつ、自作自演でもやってみろ。ちょっと悲しいが。
389 :
デフォルトの名無しさん :03/04/25 21:54
DのIDEをボーランドが作れ!!!
390 :
デフォルトの名無しさん :03/04/25 22:00
だげ
392 :
デフォルトの名無しさん :03/04/25 23:34
これってノートン先生が作ったの?
393 :
デフォルトの名無しさん :03/04/25 23:35
394 :
デフォルトの名無しさん :03/04/26 11:24
あれ?違うの?
VMなしでGCを実現するOO言語ってことでOK?
GCの実現にVMは関係ない希ガスる
397 :
デフォルトの名無しさん :03/04/26 11:58
GCじゃなく自分でdeleteできるの?
>>396 Bohem-GC 使えば C/C++ でもガベコレできるしねえ。
>>398 あーだからあれだ、それを言語レベルでサポートしたっつーか
まーそんな感じ? みたいな?
(゚∀゚)400get! みたいな
managed C++みたいになる予感。 正直、C++の後継ってことならGC不要。
malloc(new)してる部分をクラス化して そのクラス自体をnewしなければガベコレと呼べますか?
403 :
デフォルトの名無しさん :03/04/26 21:03
でーげんご
だげ
なんかつまんない駄洒落で得意満面でageてる奴がいるな。 凍える。
406 :
デフォルトの名無しさん :03/04/27 13:07
GCのオンとオフがきりかえられればいいのに
(^^)
山崎キター
で、コンパイラはどこよ?
火星にあるよ
>>411 バージョンアップしてるうちにalphaを付け忘たのかもよ
(^^)
415 :
動画直リン :03/04/29 18:26
416 :
デフォルトの名無しさん :03/04/30 17:29
そろそろE言語でも作るかな
(^^)
(^^)
(^^)
421 :
デフォルトの名無しさん :03/05/04 02:13
うんこ
(^^)
423 :
デフォルトの名無しさん :03/05/04 21:46
うんこ
(^^)
425 :
デフォルトの名無しさん :03/05/05 14:52
うんこ
(^^)
(^^)
(^^)
429 :
デフォルトの名無しさん :03/05/09 06:12
山崎はD言語できるの?
(^^)
431 :
動画直リン :03/05/09 21:13
(^^)
433 :
デフォルトの名無しさん :03/05/11 10:28
おお、いつのまにかlinux版ソースが出てんじゃん。 ……凄まじく汚ねえソースだな。 しかもユニットテストのところでasがcore吐いてしぬ。
(^^)
VisualDまだ?
D++まだ?
VisualD++まだ?
D++Builderまだ?
Davaまだ?
Intel D Compiler はまだかね?
D#まだ?
(^^)
Initial Dまだ?
まだです。 というか、D#なんて話は無いです。 Initial Dはあります。
D最強!C++房は人生の落伍者!!なD房まだ?
D最強!C++房は人生の落伍者!!
>>447 £
トサカニキタ━━━━━━(゚∈゚)━━━━━━ !!!!!
Objective-Dまだ? はじめてのDまだ? D Magazineまだ?
(^^)
つまんないね。 最近リア中の思考力表現力が低下してるんだって。 それと何か関係があるのかな。
(^^)
454 :
bloom :03/05/13 23:13
(^^)
(^^)
ここで山崎渉貼りつけてる奴って すごい粘着
(^^)
(^^)
460 :
デフォルトの名無しさん :03/05/15 23:20
/ ヾ''" ~`ヽ / _,,,... ヽ;: /""ヽ ヽ / ;'" "\ l /;:;;:::-'''ヽ, i / /::::::::-'''''"~ ヽ, .| / /;:;;:::''' ヽ ヽ | | ヽ | / ;/ 、 ,/ ヽ i, / ;:;:ヽ \, / ヽ i, i / )( \, 、 ,/ , ヽ ヽ | | ⌒ ,,___\l,::,l/___| | | |. ー-ゞ'-'">><ー-ゞ'-'"'| | | ;:| '""^ 、 | | | ヽ. ゝ( ,-、 ,:‐、) | | | /ヾ.. / ヽ | | | | ./ゝ二ニニニニ二、 | | .. | `、ヽ へ"\┼┼┼ノ/ / | | ヽ\ `\ ̄ ̄ ̄ノ / | | l `ー-::、_ " ̄ ̄" ,,..'|ヽ./ ヽ. :人 /`ー――''''' / /;:;:;:;;:;:;: _/ わ し の ホ ー ム ペ ー ジ で 何 さ ら し と ん じ ゃ キ サ マ ラ
461 :
デフォルトの名無しさん :03/05/17 20:42
sage
462 :
デフォルトの名無しさん :03/05/17 20:46
俺ガリガリくん。 君何ガリくん? 俺宇宙をさまよう五分ガリ頭のガリガリくん。
463 :
デフォルトの名無しさん :03/05/17 21:49
,;i|||||||||||||||||||||||||||||||ii;、 _/ /||||||||||||||||||||||||||||||||||||||ii;、 \ / ̄ ̄\||||||||||||||||||||||||||||||||||||ii;゙ヽ, / '" ̄ヽ ヽ!!|||||||||||||||| ||||||||||!!"ヘ < 処女ageるよ ヽ ゙!!!|||||||||||| |||||||!! iヽ── / |||l ゙゙ヽ、ll,,‐''''"" |||||||||処女ageるよ |||l ____ ゙l __ \||||||||| ||!' /ヽ、 o゙>┴<" /\ |'" ̄| ホントのちんこ 見せてくれたら \ / |ミミヽ──‐'"ノ≡- ゙'──''彡| |、 | |  ̄| |ミミミ/" ̄ 、,,/|l ̄"'''ヽ彡|| |、/ / 処女ageるよ ヽ、l| |ミミミ| |、────フヽ |彡l| |/ /_ \/|l |ミミミ| \_/ ̄ ̄フ_/ |彡|l/  ̄/ 処女ageるよ \ ノ l|ミミミ| \二二、_/ |彡| フ  ̄\ l|ミミミ|  ̄ ̄ ̄ |メ/ \トキメク亀頭に キラキラ光った | \ ヽ\ミヽ  ̄ ̄"' |/ / / \ヽ、ヾ''''ヽ、_____// /_精子をageるよ / ヽ ゙ヽ─、──────'/|  ̄/ . / ゙\ \ / / \__ ───'''" ̄ ̄ ゙゙̄ヽ、__,,/,-'''" ̄ ゙''─
464 :
デフォルトの名無しさん :03/05/18 11:35
sage
ageとるやんけ
Hello World
test
hoge
foo
470 :
デフォルトの名無しさん :03/05/18 20:31
P\x8DF\x04\x8B\x1D\xFC\xA9A\x00;\xC3r\x1Bj\x01\xB8`W@\x00\xFF\xD A9A\x00X\x89\x06\x83\xC6\x04\x895\x18\xBAA\x00\xA1\xD8\xA9A\x00\ xA9A\x00\x8B\r\xD4\xA9A\x00\x8B\x14\x81\x89\x15\xD8\xA9A\x00\x83 Z\x04\x8B^\x04\x89\x1A\x8B\x15\x1C\xCAA\x00J\x89\x15\x1C\xCAA\x0 0;\xC3r\x1Bj\x01\xB8`W@\x00\xFF\xD0\x8B\x15\\\xD2A\x00\x8B5\x18\ 895\x18\xBAA\x00\x8BZ\x04\x8B\xC2\x85\xDBu\x08\x8B\x02\xC1\xF8\x 8DF\x04\x8B\x1D\xFC\xA9A\x00;\xC3r\x1Bj\x01\xB8`W@\x00\xFF\xD0\x \x00X\x89\x06\x83\xC6\x04\x895\x18\xBAA\x00\x83\xEE\x08\x895\x18 04\x89\\\x81\x04\x8B\xC3R\x8BZ\x04\x85\xDBu\x08\x8B\x12\xC1\xFA\ x8BZ\x04\x8B\xC2\x85\xDBu\x08\x8B\x02\xC1\xF8\x04\x8B\x04\x81\x8 \r\x8B\x1A\xC1\xFB\x04\x8B\x1C\x99\x89C\x10\xEB\x03\x89B\x10\xC3
bar
j ,ィ/ | | lィ' ,ィ/j/ | iリ | /l / '"` | j / \ リ! /,ノ _,、-''''` /リ __________ | _.._ l/ ,.--;==ミ 、 ___,.ノ /{ .\ rV / ヽ,/`ヽヽト、 ´ {, ./ `‐ 、,.-ト| \,ノ < ハッハッハ! 貴様ら! ∧ ̄ ゙i, `ヽ,r'´ / ノ. ゙、--‐''´| | ごめんぽぉだ! ごめんぽぉだ! | | ̄ ゙i ヽ、 __,,、-'" ,-、,:‐、〉 / | ゆるしたまえ! ハッハッハッハ! \\/. | \\\ i \ \_'i ___\\\|  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | | | \\\ | | | \\\ | | | \\\ | | | |\\\ ヽ 丿 人´ / \\\ ヽ  ̄ ̄ ̄ /.;":;".\\\".;":;"." : ".;":;"." :".;":;". \ /.;":;".""\\\.;":;"." : .;".;: .;" \ ______ /.;":;":;"." :\\\".;":;"." : ;" .;".;": _.;.;_".;":;":;;":;;":;;":;;":;;":;;":;;\\\ド カ ァ ン ! .;".;": ..;.;".; ζ /_.;_/| .;".;", _ .;\\\".;.;".;":. .;".;": ..;.;".;": ;:'.;| ΓΓ | |;":从へ_/| . \\\"_.;__..: 从へ从へへ从 ; ζ | Γ从 | |;:.. |从Γ | | 从へ从∠___/| : ( ⌒( ⌒ ) ζ | 从Γ | |.:;. |从Γζ.;".. .;. \ |ΓΓΓ| | | ( ⌒ ⌒ ⌒ ); | ΓΓ | |.;;::|ΓΓ | | ( 从へ ;: |从ΓΓ| | |
__,,,.. -‐_',^ゝ -==-'''-´‐、、''' ̄ ./\ . ,、 .`i`i `i,') //" ,、 . ノ|===='========'´=='/ ,ゝ i':ノ ./i .|`f .`iヽ ,, ''‐_',´ . ,r:',:' | .'---~-::''、 ヽ`i " ."フノ_"_"_"_,、 ~ . /:、'、'''''''''フ ,r' ._,,-'-'´ `-,'‐'´:,'_ ''"___,,..-‐,'-‐'´`'ー=`,,ー‐.,r . '''""~´ ̄ `"~ ─┼─ __|__ __|__ ──┴── | | __|_ | ┌───┐ | | | ○| | | | | | ノ |ノ 丿 ○\ ノ ○ | ____ | / / 丿─┬─ | | | ̄ヽ \/ \/ /| | | | / |__ノ _/ \ | ノ ノ |ノ
うーん。コピペスレじゃないんだが。
477 :
デフォルトの名無しさん :03/05/22 00:38
ローカル関数は、それが定義されているスコープから外れると無効になってしまいます。 thisにアクセスしなければ問題ないようですが、これは仕様でしょうか? コンパイラは、Digital Mars D Compiler Beta v0.61 です。 import stream; class Test { char[] m = "Test"; void delegate(char[]) get_local() { void local(char[] str) { stdout.writeLine(m ~ " : " ~ str); }; local("inner"); void delegate(char[]) d = local; return d; } } int main(char[][] args) { Test obj = new Test(); void delegate(char[]) method = obj.get_local(); method("outer"); return 0; } ==================== (結果) Test : inner Error: Access Violation
>>477 仕様。スタック上にある変数(thisも含む) は get_local() 終了直後に
破棄されることになってるので、そーいう変数に触るローカル関数は
定義スコープを外れると使えない。リファレンスの
"Functions" => "Delegates, Function Pointers, and Dynamic Closures"。
この辺中途半端にC的で何だかなぁ、って気はする。
import stream; int main(char[][] args) { stdout.writeString("age"); return 0; }
480 :
デフォルトの名無しさん :03/05/22 22:13
r- 、 r 、 r‐, __| !...,,,,,,,______ i'`'ヽ, i'' ‐‐ '‐‐‐、 ,.---- ' '‐‐‐‐‐ァ ,r‐‐‐‐ '''''''''' ‐‐‐--ァ r‐''"´__,,,.........,,,_ / \/ | r‐i ロ ,.' ヽ_,. == == -、.,i |_,. -‐ ''''l .l'''' ‐‐ ..,r' | .r''"ri i''i_`'_' r‐‐‐ァ .| .| '" i (_,. -, ,--' ,.ィ''''''" `''''''''''ヽ | .レ''" "フi""_ ___ノ '‐‐= 'i_,! .|ヽ " / /''''''''''''''''' '''''''''''' ‐‐-ァ | r'_",.! .i_"_`'i | | .r‐ァ '、_ `"ノ !、 r'´ ,.- 、 /‐、 ,.、``フ ヽ_,.-ァ r'_´_´i i'‐- ../ .| |_,.- , ,---' | .| ! .!‐' .,_/,r' ,., \ ヽ-' _/ !.....ノ ヽ.`.......... / .r,. r‐‐ , ヽ | '‐‐''' '‐- ..,| .| _,._,r' .r- '| .| i'´ /| | ヽ >ヽ´ ̄, ,...., ....,,,,_ // /i _'_'_'. | 、 \ ! i'"´ | |`'‐ '| .| { ! .| .| '-' | | `'´ `"´_!_ `´ '--.ァ`´ | / l !---! |. \ `} / ! .| | | .| ヽ__,ィ' .!_,!. !..! `ヽ___,,. ‐- ..,/ !/ !_,.----、_| `''_ノ /. `''´ !_,! / , _____ 、 \ / ヽ / ヽ / / | | ヽ ヽ / ヽ / ヽ | ....ヽ | / 丿 .| | / ヽ / ヽ ヽ --十-- /_______ゝ / /  ̄ ̄フ /  ̄ ̄フ \.ノ | ヽ ノ ヽ / ノ _丿 ノ _丿
>>478 ありがとうございました。
仕様なんですね。
接続先delegateと型が少しだけ異なる場合に、
アダプタとしてローカル関数が使えないのは残念です。
うおお・・・久々にまともなカキコが・・・・
483 :
デフォルトの名無しさん :03/05/23 21:15
digって使いずらくねぇ?
1はD言語の仕様を訳して公開すべし
グッドジョビ
488 :
デフォルトの名無しさん :03/05/24 17:14
つーか、バグありまくり。
Cでいいよ。
Cの方が(゚听)イラネ
頭文字Dのパクリ
C++で充分。
流行りそうですか?
このスレの惨状で一目瞭然だと思われ
他の言語の場合は発表されてから 2 〜 3 年というと、こんなじゃなかったの? そんな事無い?じゃぁダメだね。
言語がインフレ起こしてる今じゃ目立たないだろ
ま、言語が発表されて流行になるまで5年以上はかかる。
マイブームです。
499 :
デフォルトの名無しさん :03/05/28 00:32
Marsからコンパイラ持ってきて遊んでみまスタ。結構良い感じかもしれないけど、 日本じゃ延々とマイナー路線を突っ走りそうだね。で、ここからマジレス希望。 SDLのインストール方法がイマイチ。諸兄方で上手く設定できたよ〜ん♪て方が いたら説明希望。ざっと"D Memo"のページやナンかは目を通したんだけどね...
>>497 それはインターネットのない時代の話。
いまどきαβの段階で流行らない言語は終わってるね。
ー┼── | ー─── | 、 | ー─- / | 、 / | _ |/ ̄ ー── | | | / | | / |/ \ / ー── | | | \ | | /^ヽ | ├ ー-、| | ̄ ̄| ヽ' レ  ̄ ̄ \ ヽ' / \丿 _/ O- ノ \__  ̄ ̄ ー┼── | | | ─|─ | | | | ー─ | │ |/ ̄ | \_ | | (___ _,,. -─‐- .,,_ _,,. -─‐- .,,_ |_____ ___l ┌───┐│___ │ ┌─┘ └─┐└─┐ │ │ │ └─┐ ┌─┘ l二二. │ │ │ ! ,! ┌─┘ │┌──┘ │ └─' . └───┘└────┘ ___|  ̄ |_○,○ | ̄ ̄ll ̄ ̄| |__ __|┌──┐| l.l | ,'⌒',│ │,'⌒', l_______l.l l | !_,. ィ ! l│ │! l l ,' | ,! ゝ_ノ│ │ゝ_ノ |__/. !、_,,. ‐' .  ̄ ̄
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
503 :
デフォルトの名無しさん :03/05/29 12:04
一応あげておこう。このまま落ちるのもなんだし
まともに実装されてないインチキ言語なんてどうでもいいよ。 「こんな言語あったらいいな」なんて妄想は誰にでもできる。
いや、俺は言語仕様見て萎え萎えなんだが。 10年前にでていたら飛びついたかも。
>>505 どの辺が気に入らないのか教えて欲しい。
DBCと、最近のOOPLの機能が含まれている事を除けば、正直Adaと変わんないと思った。 まあAdaは書くのがひたすら面倒な言語なので、その点だいぶましと思うが。
あ、それと、
>>504 。実際にコンパイラ作ってるのだから、新言語スレの住人とかよりは遥かに尊敬の対象と思われ…
>>504 的には、M$や某がコンパイラ作らないと実装とは呼べないんじゃネーノ
>>504 的には、標準ライブラリが少ないと実装とは呼べないんじゃネーノ
同人ソフトになんでそんなムキになるんだろう
し! _ -── ‐- 、 , -─-、 -‐─_ノ 今 何 // ̄> ´  ̄  ̄ `ヽ Y , ´ ) や え が も L_ / / ヽ で れ | あ や / ' ' i き ば 俺 る ら / / く る は ん ず l ,ィ/! / /l/!,l /厶, !? じ に i ,.lrH‐|'| /‐!-Lハ_ l /-!'|/l /`'メ、_iヽ .ゃ き l | |_|_|_|/| / /__!__ |/!トi i/-- 、 レ!/ / ,-- レ、⌒Y⌒ヽ な た _ゝ|/'/⌒ヽ ヽト、|/ '/ ̄`ヾ 、ヽト、N'/⌒ヾ ,イ ̄`ヾ,ノ! い か 「 l ′ 「1 /てヽ′| | | 「L! ' i'ひ} リ ら ヽ | ヽ__U, 、ヽ シノ ノ! ! |ヽ_、ソ, ヾシ _ノ _ノ -┐ ,√ !  ̄ リ l !  ̄  ̄ 7/ レ'⌒ヽ/ ! | 〈 _人__人ノ_ i く //! 人_,、ノL_,iノ! /! ヽ r─‐- 、 「 L_ヽ r─‐- 、 u ノ/ / / lト、 \ ヽ, -‐┤ ノ キ 了\ ヽ, -‐┤ // ハ キ { / ヽ,ト、ヽ/!`hノ ) モ |/! 「ヽ, `ー /) _ ‐' ハ ャ ヽ/ r-、‐' // / |-‐ く | > / / `'//-‐、 / ハ ハ > /\\// / /ヽ_ ! イ ( / / // / `ァ-‐ ' ハ ハ / /! ヽ レ'/ ノ > ' ∠ -‐  ̄ノヽ / { i l ! / フ / -‐ / ̄/〉 〈 \ /!
>>512 これ、色々バリエーションがあるんだなぁ。w
つーか、コンパイラは日本語通るの?
弘法筆を選ばず
弘法も木から落ちる
弘法の川流れ
うんこ
ぬるぽ
Cで何が悪い?
し! _ -── ‐- 、 , -─-、 -‐─_ノ 今 何 // ̄> ´  ̄  ̄ `ヽ Y , ´ ) や え が も L_ / / ヽ で れ | あ や / ' ' i き ば 俺 る ら / / く る は ん ず l ,ィ/! / /l/!,l /厶, !? じ に i ,.lrH‐|'| /‐!-Lハ_ l /-!'|/l /`'メ、_iヽ .ゃ き l | |_|_|_|/| / /__!__ |/!トi i/-- 、 レ!/ / ,-- レ、⌒Y⌒ヽ な た _ゝ|/'/⌒ヽ ヽト、|/ '/ ̄`ヾ 、ヽト、N'/⌒ヾ ,イ ̄`ヾ,ノ! い か 「 l ′ 「1 /てヽ′| | | 「L! ' i'ひ} リ ら ヽ | ヽ__U, 、ヽ シノ ノ! ! |ヽ_、ソ, ヾシ _ノ _ノ -┐ ,√ !  ̄ リ l !  ̄  ̄ 7/ レ'⌒ヽ/ ! | 〈 _人__人ノ_ i く //! 人_,、ノL_,iノ! /! ヽ r─‐- 、 「 L_ヽ r─‐- 、 u ノ/ / / lト、 \ ヽ, -‐┤ ノ キ 了\ ヽ, -‐┤ // ハ キ { / ヽ,ト、ヽ/!`hノ ) モ |/! 「ヽ, `ー /) _ ‐' ハ ャ ヽ/ r-、‐' // / |-‐ く | > / / `'//-‐、 / ハ ハ > /\\// / /ヽ_ ! イ ( / / // / `ァ-‐ ' ハ ハ / /! ヽ レ'/ ノ > ' ∠ -‐  ̄ノヽ / { i l ! / フ / -‐ / ̄/〉 〈 \ /!
522 :
デフォルトの名無しさん :03/06/03 10:26
Eiffelマンセーの独り言 DBCがあるのに、DBCを使って例外処理ができないのが中途半端。
523 :
デフォルトの名無しさん :03/06/03 11:08
D言語にもぬるぽはあるの?
し! _ -── ‐- 、 , -─-、 -‐─_ノ 今 何 // ̄> ´  ̄  ̄ `ヽ Y , ´ ) や え が も L_ / / ヽ で れ | あ や / ' ' i き ば 俺 る ら / / く る は ん ず l ,ィ/! / /l/!,l /厶, !? じ に i ,.lrH‐|'| /‐!-Lハ_ l /-!'|/l /`'メ、_iヽ .ゃ き l | |_|_|_|/| / /__!__ |/!トi i/-- 、 レ!/ / ,-- レ、⌒Y⌒ヽ な た _ゝ|/'/⌒ヽ ヽト、|/ '/ ̄`ヾ 、ヽト、N'/⌒ヾ ,イ ̄`ヾ,ノ! い か 「 l ′ 「1 /てヽ′| | | 「L! ' i'ひ} リ ら ヽ | ヽ__U, 、ヽ シノ ノ! ! |ヽ_、ソ, ヾシ _ノ _ノ -┐ ,√ !  ̄ リ l !  ̄  ̄ 7/ レ'⌒ヽ/ ! | 〈 _人__人ノ_ i く //! 人_,、ノL_,iノ! /! ヽ r─‐- 、 「 L_ヽ r─‐- 、 u ノ/ / / lト、 \ ヽ, -‐┤ ノ キ 了\ ヽ, -‐┤ // ハ キ { / ヽ,ト、ヽ/!`hノ ) モ |/! 「ヽ, `ー /) _ ‐' ハ ャ ヽ/ r-、‐' // / |-‐ く | > / / `'//-‐、 / ハ ハ > /\\// / /ヽ_ ! イ ( / / // / `ァ-‐ ' ハ ハ / /! ヽ レ'/ ノ > ' ∠ -‐  ̄ノヽ / { i l ! / フ / -‐ / ̄/〉 〈 \ /!
525 :
デフォルトの名無しさん :03/06/03 20:09
言語専用のフォントを用意して もっと記号とか書体に意味を持たせるような そういう言語がいいな 変数はアンダーラインとか ステートメントはボールドとか Enterキーの曲がった矢印記号で戻り値を示すとか
それなら APL 系だね。
し! _ -── ‐- 、 , -─-、 -‐─_ノ 今 何 // ̄> ´  ̄  ̄ `ヽ Y , ´ ) や え が も L_ / / ヽ で れ | あ や / ' ' i き ば 俺 る ら / / く る は ん ず l ,ィ/! / /l/!,l /厶, !? じ に i ,.lrH‐|'| /‐!-Lハ_ l /-!'|/l /`'メ、_iヽ .ゃ き l | |_|_|_|/| / /__!__ |/!トi i/-- 、 レ!/ / ,-- レ、⌒Y⌒ヽ な た _ゝ|/'/⌒ヽ ヽト、|/ '/ ̄`ヾ 、ヽト、N'/⌒ヾ ,イ ̄`ヾ,ノ! い か 「 l ′ 「1 /てヽ′| | | 「L! ' i'ひ} リ ら ヽ | ヽ__U, 、ヽ シノ ノ! ! |ヽ_、ソ, ヾシ _ノ _ノ -┐ ,√ !  ̄ リ l !  ̄  ̄ 7/ レ'⌒ヽ/ ! | 〈 _人__人ノ_ i く //! 人_,、ノL_,iノ! /! ヽ r─‐- 、 「 L_ヽ r─‐- 、 u ノ/ / / lト、 \ ヽ, -‐┤ ノ キ 了\ ヽ, -‐┤ // ハ キ { / ヽ,ト、ヽ/!`hノ ) モ |/! 「ヽ, `ー /) _ ‐' ハ ャ ヽ/ r-、‐' // / |-‐ く | > / / `'//-‐、 / ハ ハ > /\\// / /ヽ_ ! イ ( / / // / `ァ-‐ ' ハ ハ / /! ヽ レ'/ ノ > ' ∠ -‐  ̄ノヽ / { i l ! / フ / -‐ / ̄/〉 〈 \ /!
>>522 C# vs Java でもさんざん言われていることだが、
やはり 関数ポインタ/delegate と throws の相性が悪いのではないかと。
ただ、投げ得る例外まで含めて、関数ポインタの型にしてしまうべきのような気もする。
D++まだ?
531 :
デフォルトの名無しさん :03/06/03 21:22
D#まだー?まちくたびれたー
Objective-Dの方が先だろ。
スクリプトみたいに手軽に扱える言語ないかな。
>>533 「みたいに」?
スクリプトでいいじゃん。
そもそもスクリプトは言語じゃないのだろうか。
八木様。533の馬鹿が移りません様に。
>>528 説明不足で誤解を招いたみたい。スマン。
DBCを採用したのに、なんで try ... catch 方式の例外処理なのかなあと思っただけ。
あっ!
し! _ -── ‐- 、 , -─-、 -‐─_ノ 9 河 // ̄> ´  ̄  ̄ `ヽ Y , ´ ) 河 え 点 原 L_ / / ヽ 原 | 差 が / ' ' i !? マ 以 抑 / / く ジ 上 え l ,ィ/! / /l/!,l /厶, か ら i ,.lrH‐|'| /‐!-Lハ_ l /-!'|/l /`'メ、_iヽ ら れ l | |_|_|_|/| / /__!__ |/!トi i/-- 、 レ!/ / ,-- レ、⌒Y⌒ヽ よ る _ゝ|/'/⌒ヽ ヽト、|/ '/ ̄`ヾ 、ヽト、N'/⌒ヾ ,イ ̄`ヾ,ノ! ねの 「 l ′ 「1 /てヽ′| | | 「L! ' i'ひ} リ │は ヽ | ヽ__U, 、ヽ シノ ノ! ! |ヽ_、ソ, ヾシ _ノ _ノ -┐ ,√ !  ̄ リ l !  ̄  ̄ 7/ レ'⌒ヽ/ ! | 〈 _人__人ノ_ i く //! 人_,、ノL_,iノ! /! ヽ r─‐- 、 「 L_ヽ r─‐- 、 u ノ/ / / lト、 \ ヽ, -‐┤ ノ キ 了\ ヽ, -‐┤ // ハ キ { / ヽ,ト、ヽ/!`hノ ) モ |/! 「ヽ, `ー /) _ ‐' ハ ャ ヽ/ r-、‐' // / |-‐ く | > / / `'//-‐、 / ハ ハ > /\\// / /ヽ_ ! イ ( / / // / `ァ-‐ ' ハ ハ / /! ヽ レ'/ ノ > ' ∠ -‐  ̄ノヽ / { i l ! / フ し! _ -── ‐- 、 , -─-、 -‐─_ノ
ワロタ
>538 ワラタ
542 :
デフォルトの名無しさん :03/06/08 22:33
関数呼び出しがurlでかけるとかどうだろう?
ロマンチックsageるよ。
ー┼── | ー─── | 、 | ー─- / | 、 / | _ |/ ̄ ー── | | | / | | / |/ \ / ー── | | | \ | | /^ヽ | ├ ー-、| | ̄ ̄| ヽ' レ  ̄ ̄ \ ヽ' / \丿 _/ O- ノ \__  ̄ ̄ ー┼── | | | ─|─ | | | | ー─ | │ |/ ̄ | \_ | | (___ _,,. -─‐- .,,_ _,,. -─‐- .,,_ |_____ ___l ┌───┐│___ │ ┌─┘ └─┐└─┐ │ │ │ └─┐ ┌─┘ l二二. │ │ │ ! ,! ┌─┘ │┌──┘ │ └─' . └───┘└────┘ ___|  ̄ |_○,○ | ̄ ̄ll ̄ ̄| |__ __|┌──┐| l.l | ,'⌒',│ │,'⌒', l_______l.l l | !_,. ィ ! l│ │! l l ,' | ,! ゝ_ノ│ │ゝ_ノ |__/. !、_,,. ‐' .  ̄ ̄
「はじめてのD」
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
>>549 グッジョブ!! b(・▽・)
Wiki触ったことないのでアレだが、漏れもなんかネタあったら書くよ。
.NetなD Envワラタ そんなんでいいのか?
>>550 サンクス!!
とりあえずはD言語の実用化や疑問解決を目的として
自分たちのためにマターリやっていきたいと思う。
ちなみに漏れのスキルはへたれなんで、
情報集めや雑用に走らさせていただいきます(´∀` )
>>551 DIDEに期待。
あと、xyzzyのd-modeほすぃ
c#-modeを改変すればすぐか
俺もD Builderほすぃ・・・
eclipseのプラグインとか誰か作らないかなー。DDT。
555 :
デフォルトの名無しさん :03/07/25 21:58
デンジャラスドライバー天龍
, -‐- 、
/^8 / ヽ
. / ノ.//ノノ ))))〉 | ̄ ̄ ̄ ̄ ̄
'ノノ! ! |. ( | | || /同人をやっています!
`l |ゝ" lフ/リ < エロ過ぎるけど、見に来て下さいね!
iア-、 /^l水ト、 \
http://pink.sakura.ne.jp/~erotan/  ̄く `ヽ |l:|l、ヽ‐v'し'i |_____
` -ノニニト、ー┘ ´
// ! \
/ ヽ
. 〈 / ヽ i
ヽ/ i,ノ
` ァ‐ァr‐r ´
/、./ l .!
. l! l\ ll\!!
ヽ_)l__ノ
な、なんでこんなスレが伸びるのですか〜!!
558 :
デフォルトの名無しさん :03/07/25 22:23
>>559 wikiに置いてるものから進んでません。
ごめんなはい。
wiki自体の方向性もどうしたものか思案中。
d-modeサンクス!!
あぼーん
あぼーん
(^^)
当然、Dylanのことだよな
当然、だいなあいらんのことだよな。
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
569 :
デフォルトの名無しさん :03/08/15 20:57
なんとなくあげてみる
すぃぷらっぷらー言語はわかりにくいよ。 friend関数による対照的なインターフェースの作り方が未だに理解できない。 漏れはアフォなのか? あと、オーバーロード。 他人のプログラムを解析するのが面倒。おまんこ。
ってか アクセス修飾子の書き方が二通りあるのは何故?
まじか?なんかまとまりがないな。。。 Cの一部(?)の標準関数が import でつかえるようになってるが 新たなDの標準クラスライブラリとしてサポって欲しかった Javaみたいに不要な過去の概念はどんどん取り払って欲しかったぜ
プロパティの実装まだー?
576 :
姉さんニュースです :03/08/25 00:14
あべいらぼー!!
>>576 Linux用なのにzipかよ。
と思ったら、Win/Linux同梱で配布してるのね。
でもせめて別々のディレクトリに分けて入れてくれよ…。
Intel-Syntaxなインライン・アセンブラとobj2asmがステキ。
知らなかった…
B>C>D ってCが廃れんの!?
B>C++>D が正解
alpha-70出ましたね ほとんどバグFixだけのようですが
584 :
デフォルトの名無しさん :03/09/04 19:10
foreach キター!! age
char[]<-これやめないか? なんでstring使わないの?
string.dがあるからじゃないかなw 標準ライブラリのどっかでalias char[] string;しといてくれてもよさそうなものだけど
無名のdelegateが使える以上、foreachなんて必要ないんだが… List ar; ar.enumerate(void delegate(int element){ ... });
>>587 break や continue が使えるのは嬉しくないか?
もちろん無名delegateでも例外やらreturnやらで
エミュレートはできるが、煩雑だと思う。
んー、むしろ、無名delegateから外側に向けてbreakできたりしたほうが応用幅が広いような continueは単にreturnでいいよね
>>589 A: while( ... ) {
x.method_which_takes_delegate_but_dont_call_now(
void delegate(){break;}
);
// xの内部変数にvoid delegate(){break;}が保存される
}
B: while( ... ) {
x.call_delegate_which_was_passed_before();
// さっきのdelegate呼び出し
}
ループAの終わりに飛ぶのかBの終わりに飛ぶのか、
どっちにしろ迷惑な挙動な気がするのだが。
# A の終わりに戻る的な動作は使い道は広いのだけど、
# それは delegate じゃなくて continuation という別の概念だ。
どうせ無名delegateは親関数を抜けたら不正になるのだから、 「breakを行う無名delegate」を持ち運ぶことも未定義動作でいいような…ダメ?
>>591 そう制限すると、foreach を導入するのと比べて何も応用幅が
広がっていないように思える。未定義動作を起こす危険が増えただけで。
何か利点ってあります?
>>592 Rubyのブロック渡しのように使える、ってのはだめですか?
autoあるから要らんといえば要らんけど…
制御文を自前で書き足せる言語って好きなもので。まあ、それだけです。
>>593 Ruby のイテレータやらブロックやらでも、yield 式を使ったり、
Proc/Method (Dのdelegateに相当) オブジェクト渡しに加えて
ブロック渡しの構文を追加してたり、ってな感じで、delegate
渡しとは別のメカニズムを採ってるような。
> 制御文を自前で書き足せる言語って好きなもので。
は同意だけど、そのための機能をdelegateに突っ込むのは
賛成できないなぁと。breakやcontinueは何とかなっても、
ブロックから周りの関数のreturnをしたいときとか困るし。。。
いやなに…これ以上は見苦しいだけですが… EnumXXX系APIをラップしてforeachのように書きたい、と思った時 IEnumeratorなアプローチですと、EnumXXXを動かすために別スレッドを立ち上げる必要がありますが delegateが流用できるとそれが不要に… …ごめんなさい、もういいです。
せっかく新しい言語開発中なんだから、うちらもアイディアだしてみよーぜ
もうこの機能あったらごめん。 変数の変化についてテキストアウトしてほしい。 プログラムを実行しなくてもどこで値がおかしくなってるのかわかりやすいし。
統合環境を言語仕様に含んで(ry
この言語流行ると思うか?
この言語はやらないと思いますか?
D言語がこの先生きのこるには?
D言語 が この 先生 きのこる には?
なんだかんだで、Dのforeachの実装ではブロックがdelegateの形でやってくるので
apply中で
>>590 みたく保存されてしまったら終わりでは…(ボソ
604 :
デフォルトの名無しさん :03/09/11 10:52
>>596 C#のeventのような機能は必要ないか?
digではクラスを使って似たようなことをやってるけど。
あの半端な位置づけだと思われたPythonやRubyが結構普及してるから Dも普及する可能性はあるといえるのかな。 ポイントはライブラリの蓄積のし易さだけどドキュメントツールとRTTIがないのは痛いね。 前者は後付け可能ではあるけど。
while文 や for文 の途中から出るために break がありますが、if文 からも出られるのはどうでしょうか? // start while(...) { if(...) { // b へ出る // if文 で定数を持たない場合は if と その外のループなどから出る break; } else if(...) { // a へ出る // 定数のみ break の後につけられる。if も含めるのでひとつだけ抜ける break 1; } // a else if(...) { // b へ出る // 定数分抜け出すので while の外へ break 2; } // b へ出る // ループ、またはケースの場合のみ一つ外へ出る break; } // b
1以外の相対的なジャンプはバグの素。gotoの方がよっぽどいい。
breakは、switchから出る時を除いて、全部ラベル付きで使うことにしてる
609 :
デフォルトの名無しさん :03/09/11 16:51
実はA言語とかB言語とかあるんだろ? C言語にD言語・・・。
>>609 プログラミング言語の歴史を紐解くといい。。。
digを makefile や .\net 以下のファイルの変更無しにインストールできた人ってどれくらいいますか?
基本的な変数にも初期化がほしい。 int x[20](0); 整数型 x[20] の配列を 0 で埋める
なんか、ベンチサイトによると、ハッシュの成績が悪いみたいだけど。 誰か詳細きぼん。
ほしゅ
保守上げ
wxWindowsが使えるようになったら最強だと思う
えっ、何
ハッシュんところかなり非力じゃん
>>615 に続いてきぼんぬ
C版のソースも無いと比較しようにもわからんなぁ。。。むー。
アッカーマンだったら #include "stdio.h" #include "stdlib.h" int Ack(int M, int N) {if (M == 0) return( N + 1 ); if (N == 0) return( Ack(M - 1, 1) ); return( Ack(M - 1, Ack(M, (N - 1))) ); } int main(int argc,char* args[]) {int n = argc < 2 ? 1 : atoi(args[1]); printf("Ack(3,%d): %d\n", n, Ack(3, n)); return(0); }
連想配列って時点でメンドーじゃん
正直、言語自体に機能を付けすぎていると思う。 クラスにした方が便利だと思うんだがなぁ。
つか、Dの連想配列ってハッシュなんか? バイナリツリーのような気がするんだが。
そういやそうだな・・・
>>625 標準ライブラリで用意してくれるならいいけど、
自分でクラス書かなきゃならないのは嫌だよ。
>>628 もちろん。
Phobosにcontainerクラスとして、list,vector,hash,mapなどを作ってほすぃっつーか。
ソースフォージで GnuD ができてる事だし 2chD とかできないかなぁ? 日本での開発だから日本人にやさしいというか学びやすい
>>629 Dの動的配列は使い易いよ。vectorより便利だ。
hash?も配列の機能になっちゃってるので後はlistとmultimap。
いっそのことlistも関数型言語みたく組み込んでしまえば、multimapは無くてもいいやーって感じになっちゃうかと。
複素数のところを見てもわかるように、クラスにするより組み込んだ方がいいというのが作者の主張らしいし、
C++の文字列をみればわかるように基本的なものをクラスにしてしまうと乱立するしw
Dの配列って、静的配列は値型、動的配列は参照型なんだよね? なんか統一性ないような。
>>632 =~やlengthプロパティの変更で新たな文字列を指すように自身の参照が書き換わってしまうので、
厳密に参照型とも言えない気が。
自分はこんな風に解釈してる。
struct char[ ] {
…プロパティや演算子…
private:
int _length;
char* _array;
}
・代入時は浅いコピーがされるから参照型のように見える
・直接nullが代入できるのは特例
ただ、Delphiの文字列みたく、動的配列への自動コピーオンライトは実装されていても良かった気がする そうすれば見かけ上動的配列も値型として使えるので。 Javaじゃないんだから、int[]* が使えるのに int[]が参照型っぽい挙動をする意味がね…
逆に同じ場所を参照したいときの為にそうしたんだと思うよ。 それにコピーなら char []s, []s_2; s[] = "ららら♪"; s_2[] = s.dup; で複製できるから平気じゃない? D はあくまで C 寄りだから
>>633 自身の参照先のみ変更する、lengthプロパティが反則なんですね。
>自動コピーオンライト
のほうが細かいこと考えずに済んでいい気がする。
個人的には、配列のみならずクラスも、
参照型はすべてポインタで扱うほうがよいと思うんだが……
>>635 うん。自動コピーオンライトは、a[i]=n; するたびに毎回チェックすることになるわけで
そんな非効率なの手動で最適化させろというのはいかにもC寄りらしい
ただ、それなら、.dupではなく、その配列の指し示す実体が一箇所からしか参照されないことを
保証する、Delphiで言うところのUniqueStringが欲しかった。或いは参照数を得られるとか。
.dupだけで手動コピーオンライトやれと言われても、とりあえず疑わしいところでは
毎回配列全体をコピーする羽目になるので、逆に非効率じゃないか?みたいな
delphiやったこと無いからわからないけど、勝手に新しいメモリを割り当ててコピーされると気分悪い
Dのライブラリはほとんど go.bat とかで make install やりますけど make コマンドが無いといわれます。 みなさん make は何処から手に入れますか? よろしければ教えてください。 お願いします。
>>639 Digital Marsのサイトから落とせるけど
別にBorland C++付属のを使うとかMingwのを使うとかしても、多少文法に方言があるぐらいなんで
構わないといえば構わない気がするけど
>640 Digital Mars にある make でためしに dig をインストールしようとしたのですが 「文が長い」みたいな事を言われたので dmd に(dm\bin\make.exe)が付いていたのでそれを使いました。 ありがとうございました
http://hp.vector.co.jp/authors/VA031566/d_direct3d9/ のサンプルがそのままコンパイルできないと思ったら
自分のPCがHAL(ハードウェアー)に対応してないだけだった罠
assert(null != device);の前にを
if(null == device)
d3d->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp,&g_pd3dDevice)))
を加えれば良かったんですね。
>>638 Delphjのstringに関しては、使ってみると分かるけれど、
「何も気にしなくていい」のがいい。
とはいえ、Delphiの動的配列はオーバーヘッドを考えてか、コピーオンライトはないよ。
>>643 サンクス。
そこまで性能は悪くない……という感じだね。
例のベンチマークサイトはコンパイラが古くて性能が出せてないんかね?
>>646 rehashの意味がそもそも分からんわけよ。
木構造なら再構築することで高速化できることは知っているが、
ハッシュを再構築して高速化できるもんなん?
で、Sinはなんであんなに速いの? キャシュでもしてるんか?
>>649 ちゃんとfsin命令とかを使ってるからでしょう。
phobosを逆アセしてみるとよくわかるかと。
このスレはD言語を読んだ人が感想を述べる場所でしょうか? 質問や疑問に思った事をたずねたい時はどうすればいいですか?
ならばひつもーん Win32プログラミングの CreateWindowで WS_THICKFRAME を使うときちんとフレームが付いて使わないと本当に無いんですよね。 でも VC で作ると WS_THICKFRAME 無くても一応フレームは付くみたいです。 サイズ変更はしたく無いけどフレームをつけたい場合はどうしたらいいですか?
654 :
デフォルトの名無しさん :03/10/09 23:28
Interface紹介age
>>653 Dと関係ねーじゃん
それとも、windows.d のバグだって言いたいのか?
>655 ごめんなさい、説明不足でした ソースコードを test.d として CreateWidndow のウィンドウスタイルに WS_THICKFRAME を入れないで dmd test.d test.def gdi32.lib したときにフレーム(枠)が付かないです、って事です
WS_DLGFRAMEとか持たせてみれば?
>657 残念ながら付きませんでした。 ためしに windows.d 内の WS_ が付くやつを片っ端に入れてみましたがフレームは付くんですけどサイズ変更もできちゃう形です。 ついでにサイズ変更の為に枠をつまんだメッセージらしき WM_ENTERSIZEMOVE を DefWindowProc に渡さなければサイズ変更が無いかなと思ってやってみましたが、今度はウィンドウすら出なく鳴っちゃいました^^;
CreateWindowExかdigを使えばいい つーかDと関係ないし
手元じゃWS_DLGFRAMEで付きましたけどね。何が悪いんでしょう? ついでに、WM_ENTERSIZEMOVEを無視するぐらいなら、WM_HITTESTでDefWindowProcが枠線を 意味する値を返した時、関係ない値で置き換えてやるほうがいいんじゃないかな
あ、更に間違えてました
CreateWindow じゃなくて CreateWindowEx 使ってました
でも、windows.d は
ttp://int19h.tamb.ru/ のを使ってるし(MENUITEMINFOを使うために)
これ使うと CreateWindow が無いんですよね。
>660
ありがとうございます。
今調べてみたのですが、WM_HITTEST については情報が無いですね…
長期戦になりそうでつねつдT
目的がはっきりしてなかったようなのでしっかりココに書かせていただきます。
枠ありリサイズ無しの win32プログラム を作りたいのです。
WinMain があって WndProc がある、標準的な形でです。
Dコンパイラは dmd から落としたやつで、変更した点は 661 で書いたように windowsモジュール を取り替えています。
Dコンパイラに標準で付いている windowsモジュール は WS_THICKFRAME をつけていないのに枠ありリサイズ機能付属
http://int19h.tamb.ru/ のモジュールを使うと WS_THICKFRAME をつけると枠なしリサイズ機能付きで、WS_THICKFRAME を入れないと枠無しリサイズ機能となってしまいます。
>660 ありがとうございます。 何とかできました。 ソースは張ったほうが今後の為になるでしょうか?
>windowsモジュール を取り替えて 別にコンパイルしてwindows.objを渡してる? Phobosのに上書きした場合、ライブラリの再構築する必要あるかも? やったことないけど wikiを見るといいことあるかも
>664 モジュールは .d をさすんじゃないですか? 違ったらすみません^^; で、結局は Phobos のを取り替えました。 再構築というか、モジュールの中身を変更しました。 winutil にある memcpy が streamモジュール とかぶってたり、 コンパイルすると windows.dモジュール にもコンパイルできないエラーが初めからあり、 const int *** = 0x80000000 みたいな感じであって コンパイラは代入式の右辺を uint と見て、でも左辺は int だから式が合いませんと。 自分は "(0x" を "(int)(0x" に置き換えましたが、皆さんはどうやってるのかなぁ?っと、疑問に思ってました。
enum { *** = 0x80000000 } こっちの方がいいって誰かが言っていたような気がする
RECT rect; rect.left = 0; rect.top = 0; rect.right = 640; rect.bottom = 480; AdjustWindowRect(&rect, WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE, FALSE); window = CreateWindowExA(WS_EX_DLGMODALFRAME, "DWndClass", "Just a window", WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, rect.right - rect.left, rect.bottom - rect.top, HWND_DESKTOP, cast(HMENU) null, GetModuleHandleA(null), null);
関数名の重複はモジュール名を付けるかaliasでほとんどを回避できるよ
>>667 AdjustWindowRectではなくてAdjustWindowRectExの方が正しい
>>665 Dはリンカに関してはCのをそのまま使ってるので、.objも変えなきゃだめ。
Phobosの.dに対応する.objはphobos.libに纏められているので、これを作り直すよりは
別にwindows.objを作ってリンカの引数に(優先的に使って貰えるように)渡した方がいいかな。
私は
>
http://int19h.tamb.ru/ のモジュール
は使ってませんです。
>>665 >枠ありリサイズ無しの win32プログラム を作りたいのです。
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;
良く分からんけどこれじゃダメか?
いくつかWS_OVERLAPPEDと値が被ってるかもしれんけども。
スレ違いスマーソ。
>660さんの言うとおりに ウィンドウプロシージャの msg 分岐点に case WM_NCHITTEST: int result_def = DefWindowProcA(hwnd, msg, wp, lp); switch(result_def) { case HTBOTTOM: case HTBOTTOMLEFT: case HTBOTTOMRIGHT: case HTTOP: case HTTOPLEFT: case HTTOPRIGHT: case HTLEFT: case HTRIGHT: return 0; default: break; } return result_def; の文を加えて、サイズ変更できないようにして解決しました。
WM_GETMINMAXINFOという手もあるかも?
全然関係ないけどさ。 高校生プログラミングコンテストってのが開催されてたらしいよ。 同年代なのに、こんな質問してるような自分が鬱です…
状況が良くわからんくてDMD入れてやってみたら、ようやくわかりますた_| ̄|○
>>639 はこれで困ってたのか。
切っ掛けが無くて触ってなかったんだけどD結構良いね。
ちょっとずつ使ってみようと思いま。
スレ違いかもしれませんけど、Dを使ってる物好きだと言う事であえて質問です! 織田信長って作りやすい?実行速度速い?どうでしょうか?
つか、言語がエレガントでもAPI叩かないといけないなんて……。 SWTとか移植されるといいんだが。
すれ違いすぎ(w
メンバ関数を共有・非共有にできないでしょうか?
関数の前に新たな予約語を入れて共有・非共有と分ける(何もなければ共有)
共有と非共有は、内部の変数を共有するかしないかで、class のメンバ関数にのみ適応されます。
それで、関数を呼び出したクラスによって変数を分けるといえばいいのでしょうか?
たとえば非共有を owns であらわすなら下の通りで
import stream;
class A {
// turu なら i に新しい値を、false なら i を表示
owns void hoge(bool n){static int i; if(n) i = rand();else stdout.write(toString(i));}
}
int main() {
A a = new A; A b = new A;
a.hoge(true); b.hoge(true);
a.hoge(false); b.hoge(false);
return 0;
}
上を実行するとそれぞれ a と b で非共有になっているので違う値が表示されます。
という感じですが、
>>504 の言うとおり妄想だったら誰でもできますね^^;
? i をメンバ変数するだけではだめなの?
たとえば30カウントするプログラムを作ったときに class A {
間違えました^^; エンターキーが押されている間だけ文字を表示するプログラム const int FrameTime = 30; const int FrameNUM = 2; enum{FREE_KEY,PUSH_KEY,HOLD_KEY,PULL_KEY}; int KeyState(int vk, int *Key) { if(GetKeyState(VK_RETURN)<0) { if(*Key==FREE_KEY) *Key = PUSH_KEY; else *Key = HOLD_KEY; } else { if(*Key==HOLD_KEY) *Key = PULL_KEY; else *Key = FREE_KEY; } return *Key; } /* つまり大事なのはココから */ class A { // 変数 int c; int Key; // メンバ関数 this(){ c=0; Key=FREE_KEY; } void foo(){ if(KeyState(VK_RETURN, &Key)) { c++; c %= (FrameTime * FrameNum); if( cast(int)(c/FrameTime) == 0 ) stdout.writeLine("1枚目〜"); else if( cast(int)(c/FrameTime) == 1) stdout.writeLine("2枚目〜"); } else { c = 0; } } } といった具合です。 外からいちいち変えたりするわけじゃないと思うしそうなれば良いなぁと思うし、 メンバ変数も一つ減って良いと思います。
>>684 関数スコープのstatic変数をインスタンスごとに共有したいってことか。
まったくいらない機能だな。
オブジェクト指向では、メンバ変数で十分だし、
内部状態なのだからメンバ変数にすべきでもある。
なんにしろ、スレ違いだからもう来るな
>>639
訂正。 「関数スコープのstatic変数をインスタンスごとに独立させたいってことか。」
639の一連のレスの、どこがD言語に関係あるんだよ? しかも、くだらない内容ばっかりだし。
メンバ変数があるなら、関数内のstatic変数はいらないっしょ。 C++の後継の言語の初スレだし、ちょっとはOOを踏まえて話題に参加してくれやってのはある。 くだスレや初心者スレなら別にこんな質問もかまわんのかもしれんが。 でも、まー広めるには、質問者みたいな人もとりこんでいかないといけないとは思うよ。
D言語でOOやるなんて馬鹿だろ。 OOやりたいならSmallTalk使いなさい(プゲラッ
何にせよ、639氏の使い方(
>>681 )だと、呼び出しが初期化なのか使用なのか区別するための
パラメータ(bool n)を設けちゃってるわけで、そんなの旨味無いと思ふ
で、初期化と使用を明確に分けたいとかでごてごて機能を足していくと、メンバ変数そのものになるし
ついでに、俺は「関数内のstatic変数は要らない」に一票。
関数の中で宣言するのに終わっても生き続けるのは気持ち悪い。
classのstatic変数にするなり、モジュールレベルのprivate変数にするなり、代替機能には困らないし。
>>689-690 まあ、C++からして何でも取り込むマルチパラダイム言語(ただし元がCだけに構造化寄り)だったし。
DはC++の基本機能を(細かい文法は違えど)踏襲した上でさらにDBCとかGCとか追加してるし。
なんかD言語って流行りそうにないんだけど。 D言語の特徴って何? ガベコレはBoehm使えばC++でも使えるし、Managed C++もあるし。 存在意義有るの?
ほっとけ。普通の頭ある人間ならDylanをやる。
694 :
デフォルトの名無しさん :03/10/18 16:14
D 0.74 リリースage New/Changed Features ・Added support for Unicode characters in identifiers. ・Version declarations can now wrap attribute : and they'll stick. ・-offilename switch now accepts any extension. ・Added D.win32.registry
.h とか .hpp の死滅
ヘッダが無い場合ライブラリ作者がユーザーに公開したくないprivateな部分はどうするの?
>>697 privateな関数の中身は空っぽにしておけばいい。で、.objとペアで配布。
リンカの仕組みはC言語から変わってないので、OKなはず。
ただし-inlineはコンパイラが自動で判定する以上、使えない。
>>698 Dで書かれたDLLやスタティックリンクライブラリから、
> privateな関数の中身は空っぽにしておけばいい。
相当のものを自動的に生成してくれたりはしないんですか?
>>699 C++の後継狙いのネイティブコンパイラだから、そこまでメタ情報を残してない。
(そもそも.objはそういう情報を残すように作られてない)
TurboPascal/Delphiはその辺、.objではなく独自フォーマットの中間ファイルを採用して
それに公開部分の情報も含めることで上手く対処した。
Dも、ニュースグループに、TurboPascalみたいな仕組みをどうこうというのがあったので
そのうち対応されるかも。
…今ふと思いついたが、/+コメントはC言語の仕様には無いので
/+
#ifdef PRIVATE
+/
とか上手いことやって、cppを経由させればOKな気もする
ホシュ
早くプロパテー実装してくんないかな。
せっかくDBCがあるのに、気が付くとassertしか使ってない…
早くSWT移植してくんないかな。
>>705 せっかくJavaより表現力のある言語なのに、SWTで満足できる?
クソ重いGUIライブラリ使うより、API直たたきの方がナンボかまし なわけない
クロスプラットフォームとかいらんからさ、 Windows用の使いやすいGUIライブラリが欲しいね。
WTL
「使いやすいGUIライブラリ」って、GUIビルダまで含めた環境が必要なんじゃないかな。 ポトペタじゃなくても、せめてVC+MFCレベルの、ハンドラの自動追加のような。 Dの貧弱なリフレクション機能では、Delphiのようには逝かないかもしれないが…
VC+ATLでもメニューからイベントハンドラ追加できるだろ。
>>712 そういう意味じゃなくて、
「もしD用のGUIライブラリがあったら、ただ単にライブラリの設計がいいだけじゃなくて、
イベントハンドラ追加機能みたいなものが欲しいね」
って話だよ。
そのあたりはBorlandに任せるか。
BorlandがD言語IDE作るわけ無いだろ。 まあDigitalMarsとかComeauにでも頼みなさい(ワラ
オロナミンDまだ?
717 :
デフォルトの名無しさん :03/10/29 02:46
インラインアセンブラとかtemplateとかautoとか、 C++の強いところだけ持って行って、あとはJavaに ならえ、ですか。 面白くはないが、使える言語だと思うよ、これは。 MacOS Xあたり、採用してくれないかなあ。 Objective-Cみたいな過激なのはうんざりだもん。
CかC++のトランスレータとか無いの?
ほしゅ
|ω・`)
721 :
デフォルトの名無しさん :03/11/06 12:48
D 0.75 リリースage New/Changed Features ・Changed to new standard library package layout. ・Changed apply to opApply. ・Fixed foreach so it can have multiple parameters. ・Added etc.c.zlib, a D interface to the C zlib compression library. ・Added std.zlib, a compression module. ・Added std.zip, a zip archive module.
zipライブラリ追加?
すみません。singletonパターンをDで実装しようと思って 次のようなコードを書いたのですが… ----------------- single.d ----------- class Singleton { protected this() { } char[] getData() { return "Now Testing..."; } public static Singleton Instance() { Singleton me = null; if (!me) me = new Singleton(); return me; } } alias Singleton.Instance SI; ----------------- test.d -------------- import c.stdio; import single; int main() { printf("%.*s\n", SI.getData()); // こういう使い方をしたい Singleton s = new Singleton(); // これができては困る printf("%.*s\n", s.getData()); return 0; } -------------------------------------- 上記コードが正常にコンパイルできてしまいます。 Singletonのthis()をprivateにしてみても結果は同じなんですが、 Dではどのようにすれば外からの生成を禁止できるでしょうか?
う、すみません。上記コード一部ちがてました。 - Singleton me = null; + static Singleton me = null; こうしないと毎回生成しちゃいますね…;
・interfaceと実装クラスに分ける ・折角DBCがあるのだからassert書きまくる でなければ、singletonなオブジェクトはモジュールのprivate部分に完全に隠してしまって、 そのクライアントクラス(複数生成されても平気)だけ公開するとか… しかし、private this()が無視されるのは変といえば変なので、 本家ニュースグループに投げてみるのはどうでしょう?
>>725 thx.
実のとこsingletonのことよりも、private/protected this()
の仕様がどうなってるのか気になったのでした。
本家ですか…
ひっじょーに恥ずかしながら…えーごが…||orz
関数スコープのstatic変数ってあったっけ?
>>727 ---------------- single.d ---------------
import c.stdio;
class Singleton {
protected this() { }
char[] getData() { return "Now Testing..."; }
public static Singleton Instance() {
version (FunctionStatic) {
static Singleton me = null;
} else {
Singleton me = null;
}
if (!me) {
printf("Create new instance\n");
me = new Singleton();
}
return me;
}
}
alias Singleton.Instance SI;
---------------- test.d ---------------
import c.stdio;
import single;
int main() {
printf("%.*s\n", SI.getData());
printf("%.*s\n", SI.getData());
printf("%.*s\n", SI.getData());
return 0;
}
(改行が多いと言われたんで続く)
>>728 続き
---------------- 実行結果 ----------------
C:\>dmd test.d single.d
C:\>test
Create new instance
Now Testing...
Create new instance
Now Testing...
Create new instance
Now Testing...
C:\>dmd -version=FunctionStatic test.d single.d
C:\>test
Create new instance
Now Testing...
Now Testing...
Now Testing...
…もしかして、これ仕様と違う動作なんでしょうか?
>>729 ファイルスコープstaticがprivateになっただけで、
関数スコープは使えるみたいね。ごめんなさい。
Static data has only one instance for the entire program, not once per object.
Static does not have the additional C meaning of being local to a file.
Dはじめたんだけど、だんだんソースが長くなるにつれて エラーの表示が一個ずつってのが激しく面倒に... 皆さん平気ですか?
>>731 大抵10行に一度くらいはコンパイルしながら開発してるので
あんまり気にならないなぁ。コンパイル速いし。
>>732 100行(もしくはそれ以上)書いて、エラーを一気にチェック、とかやってたので
どうもイライラします…。
>733 がんがれ。 とはいえコンパイル早いのでこまめにチェックさせるのが良いと思うぞよ。 ところで、 struct A { int aSize; int a2; int a3; } な構造体に対して auto A a = { A.size }; ってできないんですね… > variable a is not a static and cannot have static initializer とか言われます。 DirectX系の構造体とか、C++だとよくこうやって初期化したんですが…残念。 // エラーメッセージにしたがってこうすると: // static A a = { A.size }; // const A a = { A.size }; // コンパイルは通るんですが、それだと変数の意味が変わっちゃうし…
ハンガリー記法は「ダメ!絶対」って書いてありますけどなんでですか?
>>737 structとclassでソースがいま大混乱に陥りつつある
&付いたり付かなかったり
どういった命名規則がいいのかな
えと、オブジェクト指向などなどにより型は無限に増殖するから
その型にいちいち合わせてたら逆にソースを読みにくくなる
って事でしょうか?
alies で別の型に見せているのはもうハンガらなくていいと思うんですけど
予約語としてある型 char, short, int, long などなどはつけてもいいんじゃないかなぁって思いますが。
やっぱり人にソース見せて解りやすくって言う感じにしたいので、ソコのところは知りたいです^^;
まだ、
>>737 読んでる途中なもんで、中途半端なレスすみません。
下へと読んで言って見ます
>>738 &ってことはポインタで保持…ってことだろうけど、
複数から間接参照されるようなのは全部classでいいんじゃないですか?
でも、structは時に凄く便利ですけどね。
>>740 Dは、「予約語としてある型」も、かなり多いぞw
C言語の全ての数値型に、それぞれ複素数と虚数バージョンがあるし。
ちなみに私は、ハンガリアン使われるよりは、変数名を省略無しで
品詞とかにも気を使ってくれたほうが、読みやすいです^^
確かに予約語多いです・・・ 虚数の事を考えてませんでした^^; ハンガリアンで、rcと前につけるって言ってるけど 自分は clientRect とか childWndRect とかつけちゃいますね ところで struct の時に酢僕便利って?気になる木
743 :
デファルトの名無しさん :03/11/12 19:54
最近Dはじめました。 ディレクトリ以下のソースを全部対象にコンパイルをしたいんですが、 dmdのオプションやmakeの書き方でできる方法ないでしょうか? よろしくお願いします。
>>743 自分あまり解らないけど、ディレクトリ以下って事はサブディレクトリも含めるんだよね?
make で指定してコンパイルならいつもやってるけど^^;
sample.exe: sample.d resource.d
dmd sample.d resource.res resource.def gdi32.lib -release
run:
sample.exe
と、コレは win32 ですけどね
#define マクロが無くなったのがイヤだって人いるよね #define Release(a) a->Release() ってやると a メンバ関数 Release をやってくれるから ・・・・ これかなり使えるのに、使えなく成っちゃったよ
746 :
デファルトの名無しさん :03/11/12 21:25
>>744 >ディレクトリ以下って事はサブディレクトリも含めるんだよね?
そうなんです。
こんな感じのディレクトリ構成のとき
makefile
+--src/
+--pkg1/
| +--hoge3.d
+--hoge1.d
+--hoge2.d
src以下にソースを追加した場合に、makefileに個々のファイルを追加せずに、
全部含めて、コンパイルしたいのです。
makefileの書き方に詳しくないもので。。。
教えてくださいー。
>>745 C++でCOMか?未だにマクロなんてつかってんの?
template <class T>
inline Release(T &t){
t->Release();
t=NULL;
}
もしくはComPtrだな
>>748 CComPtrって調べて覚えて使うといい。遥かに便利で楽になる。
COM使うのなら他プラットフォームへの移植を考えなくて良いのだろうから、 C#使うことを考慮に入れてもいいかもだよ。
751 :
デファルトの名無しさん :03/11/13 00:38
クラスライブラリのリファレンスってどこかありますか? たとえば、リファレンスには、 assert は、AssertException を投げる働きをします って書いてるけど、そのAssertExceptionってクラスは、 何をimportすれば使えるのか、 というのはどこ見ればのってます?
>>751 まだ、まともなリファレンスはないっす。残念ながらソースを読むしか。
…で読んでみたところ、assert は AssertException でなくて Assert を
投げます。ExceptionやErrorの派生クラスじゃないのが謎ですが。
しかも import std.assert; が必要なのに assert が予約語だから、
import すらできない。。。
assertの失敗をcatchしても、ロジックエラーを握り潰してるだけだから、受け取れないようになってるとか…
>>753 しかし catch( Object x ) { ... } とすれば握りつぶしは可能なんだよね。
とりあえずnewsgroupに投げてみますた。
>>745 「プリプロセッサをなくそう」ということそのものには反対しないけど、
boost/preprocessorみたいなプログラム自身を生成するプログラムを書く、
という目的で使える何かがあると良いと思うところ。
まあ、メタプログラミングとまで言わずとも、せめてこういうことくらいはしたい。
-------------------------------------
#define GETADDR(x) fp##x x = (fp##x)GetProcAddress(hLib, #x);
HINSTANCE hLib = LoadLibrary("My.dll");
GETADDR(DllFunctionA)
GETADDR(DllFunctionB)
GETADDR(DllFunctionC)
// 展開すると
// fpDllFunctionA DllFunctionA = (fpDllFunctionA)GetProcAddress(hLib, "DllFunctionA");
// とかになるハズ
#undef GETADDR
-------------------------------------
プリプロセッサそのものはなくてもいいから、代替手段が欲しいところ。
なんかありましたっけ? 3つくらいならいいけど、数増えると大変なもんで…
aliasがそれっぽい気はしてるけど、ここまではできなさげだし…うーん。
>>755 そういうのは完全に既存の文法を逸脱するからなぁ。
Lispのマクロのようにピタッとはまるようなものが出来ないかナァ
新しい命令文を作ればいいんだ。
そういや、Dは文字列switchをサポートしてるんだから、
従来のプリプロセッサと合わせてこういうことができるとうれしいよね。
何でプリプロセッサなくなっちゃうかなあ。
----------------------------------
interface Animal { void cry(); }
class dog : Animal { void cry() { printf("bark!\n"); } }
class cat : Animal { void cry() { printf("mew\n"); } }
// 他たくさん
#define CASE_CREATEOBJ(x) case #x: animal = new x(); break;
Animal sampleFunc(char[] arg) {
Animal animal;
switch (arg) {
CASE_CREATEOBJ(dog)
CASE_CREATEOBJ(cat)
// 他たくさん
default:
}
return animal;
}
#undef CASE_CREATEOBJ
// 各caseはこんなふうに展開されるはず
// case "dog": animal = new dog(); break;
// case "cat": animal = new cat(); break;
----------------------------------
え、こんなことできてもうれしくない?
テンプレートとかで代用できるならもちろんそっちでもいいけど…
>>756 そっか…言われてみれば文法逸脱って問題がありますね。
Lispのマクロは知らないけど、そのあたりの整合性も含めて
上手い代替手段が用意されてくれるといいんですけど。
コンパイラのチェックが入るならなお良い。贅沢かなあ。
プリプロセッサとIDEは相性悪いからねー。 どっちか片方を選ぶなら、後者を選ぶ人は今は多いだろうし。僕もIDEを選ぶな。
760 :
デファルトの名無しさん :03/11/14 01:45
>>754 リファレンスはまだないのですね。
JavaDocみたいなの欲しいなぁ。。。
しかし、catch(Object o)って、何かすごい。
try{
doSometihng();;
}catch(Object e){
e.print();
}
↓実行
Assertion Failure calc.d(5)
761 :
デファルトの名無しさん :03/11/14 01:49
ソースってC++なんですねぇ。 assert.dを見たときに、 それがどのパッケージ(モジュール?)なのかってどこ見たら分かるのですか?
(ケースa) import stream; class Hoge { public this() { stdout.writeLine("hoge"); } public void print() { stdout.writeLine("foo"); } } int main( char[][] arg) { Hoge a = null; if ( a == null) // (1) stdout.writeString( "null"); return 0; } 上記ソースを実行すると、(1)でアクセスバイオレーションで落ちます。 nullチェックできないのがかなり不便なんだけど。。。 (ケースb)また、 int main( char[][] arg) { Hoge a = new Hoge; Hoge* b = &a; a = null; // (2) if ( b == null) stdout.writeString( "null"); else b.print(); // (3) stdout.writeString( "Hello, World.\n"); return 0; } こんどは、ポインタ使ってやると、(2)でnull代入すると、(3)でアクセスバイオレーション STLのlist見たいなものを作りたかったんだけど、オブジェクトをnull判定できないからどうしようもないんだけど。 ポインタで実装すると、実体を別に持たなきゃ(ケースb)のようにアクセスバイオレーションになるから駄目だし。
>>762 スマン。
if (!a)
で判定するんだな。忘れてくれ。
>>760 assertはどうせ-release時は投げられないし、受け取るのは…
そうか、GUIアプリの場合、受け取ってMessageBoxでも呼ばないと表示されないのか…
>>761 ?…phobos\std\assert.dだから使うにはimport std.assert;(予約語だから使えないけど)
>>763 ===演算子
>>758 自分なら
Animal function() [char[]] new_table; //グローバル変数
class dog : Animal { ... ; static this { new_table["dog"] = function(){ return new dog(); } } }
class cat : Animal { ... ; static this { new_table["cat"] = function(){ return new cat(); } } }
Animal animal = new_table[arg]();
…かなあ?
連想配列+template+無名のdelegate(function)で、かなりいいとこまでいくんだけれども、
「名前」を外部から与えられないので
>>755 みたいなのは確かにキツいですね。
文字列と識別子の違いが合っても、同じ綴りを二度書きたくないし。
ちなみに、templateがあるので、それなりにメタプログラミングらしきものは可能…です。
コンパイラのテストが不十分らしく内部コンパイルエラー頻発ですけど…
これでオシゴトすると仕様変更が減るなら俺はいくらでも応援するぞ。
Dは本当にメモリの事をCほど考えなくてもいいのがいいね。リーク起こさないし。いいね
終了時にリークしないだけで、メモリの事をCほど考えなくていいわけじゃない気が 解放忘れチェックならCでも問題ないわけだし まあ、標準でついてるからラクといえばラク
文字列のコピーとかで開放無し(GCまかせ)です
>>769 そんなことぐらいなら、GCのないDelphiでも出来てるからな。
(あちらは、参照カウンタ+Copy On writeだけど)
いや、別にD嫌いじゃないよ。ちょっとつかかってみてるだけ。
772 :
デファルトの名無しさん :03/11/14 22:19
>>764 >?…phobos\std\assert.dだから使うにはimport std.assert;(予約語だから使えないけど)
なるほど、ディレクトリ、ファイル名ですか。
(まだそのあたりも分かっていませんでした)
>>771 ありがとうございます。
Ant起動時間が入っちゃいますが、目的は達せそうです。
コンパイル処理をIDEに組み込む場合は、
ユーザーが作成したビルドスクリプトをたたくより
ディレクトリ検索してmakefileを生成してmakeに食わせた方が便利かなぁ。。。
どうでもいいですが、
IEで"
ttp:// 〜"って入力すると、勝手にftpになっちゃうんですねぇ。へぇ。
stdout.writeStringを乗っ取って、UTF8→MBCS変換入れれば、 ソースコードをUTF8にしたままで日本語表示は可能になるのですけども その時、リダイレクトでコンソール以外に出力した時の文字コードは、 UTF8とMBCS(SJIS)のどちらが正しいと思う?
>>774 winならプロンプトのプロパティの現在のコードページが正しいと思う
テンプレート内のクラスのユニットテストを書くのは難しいな。
778 :
デフォルトの名無しさん :03/11/21 00:24
これいいね。age
D + DBC よりも C++ + VCのほうが遥かにデバッグしやすい。残念ながら。
>>779 まあ、今はDの方にはあんまりいい開発環境はないからなぁ。
そのうちDにもいい開発環境が出てくると良いんだけど。
VSに匹敵するようなD開発環境が出てきたら、
是非また改めてレビューしてくれよ。
class A { // プロパティとして public int number() { return 10; } } // Get プロパティ を return で返すと warning int check() { A a = new A; return a.number; // NG : cannot implicitly convert int() to int //return a.number+1; // OK ( これはいいのか・・・? ) //return a.number(); // OK } void main() { printf("%d", check()); } これって仕様なんでしょうか…。 # 本家のフォーラムとかはまだ見てないんで既出だったらゴメンナサイ
関数と整数で違うじゃん
>>782 > return a.number;
が、propertyとしてではなくdelegateとして認識されてるみたいだね。
「intを返すdelegate」は「int」ではないのでエラーが出る。
+1してるのが通るのはdelegateにその演算はないから
intを返すpropertyとして認識された、ってことなんだろうけど。
だったらreturn文でも戻り値の型から推測してくれても
いいんじゃないかなーとかとか。
どうなってるんでしょうねえ。
# 同じく本家見てない人でした
>784 プロパティが追加されたときに、混同を避けるために delegateは必ず&演算子をつけないといけなくなったんじゃなかったっけ? returnの戻り値のときだけ解釈がおかしいのかな?
ありがとうございます。 もちょっと調べてみます。
0.76 あげ。すでに和訳してある。すげ D 0.76 での変更点 Nov 21, 2003 新しい/変更のあった機能 std.assert は std.asserterror へ改名されました。 予約語 is の追加。=== と同じ機能です。 演算子オーバーロード用のメソッド名を変更。 std.process に system を追加。 std.file への変更点: 幾つか関数の追加。 std.file で byte[] 型が使われた部分を void[] に変更。 std.file.getSize() は ulong を返すようにしました。 バグ修正 ライブラリモジュールの名前が全て正しくなりました。 ライブラリモジュールは全てprivate importを使うようになりました。 > 演算子オーバーロード用のメソッド名を変更。 全部変わってる!マジ勘弁して欲しい T_T
こんなクソ言語でオナニーする連中・・カコイイヨ
鬱氏
トランスレータも用意できないようなバージョン1.0以下の言語使うなよ
うっ、しばらく様子見ですなぁ(;´Д`)
void[] ってあるのか。びみょーに違和感が。
>>787 > 演算子オーバーロード用のメソッド名を変更。
いやいや良かったよ。前のなんか微妙だったし。
+=はaddassだったし。assだよ?ありえねーよ。
演算子オーバーロードは大分まともになった気がするけどなあ。 まあ、今まで使ってた人は…修正頑張ってください。
結論は、マクロはやっぱ手放せないってことだな。 #if VERSION < 076 #define ADD_ASSIGN addass #else :
…マクロ欲しいな。
797 :
デフォルトの名無しさん :03/11/24 07:18
Phobosのstd.zipの仕様書にある、 ZipArchive archive = new ZipArchive(data); foreach (ArchiveMember am; archive) { printf("member name is '%.*s'\n", am.name); } ってあるんだけど、 foreach (ArchiveMember am; archive.directory) の間違いでした。 どこに連絡したらよいのでしょう???
うわ、ageてしまった。
fuckass
Dすげーよマジで。 和訳多謝!! …C++のmutableとかconstメンバ関数ってどうなったの? と改めて聞いてみるテスト
マクロはやっぱり偉大だ・・・。
#define for if(false);else for ↑コレくらいしか使ったこと無いよw
それってokなの?forが再帰的に展開されたりしない?しないか。
しないっすよ〜。 糞なVC6では void hoge() { for(int i=0; i<10; i++) { /* ... */ } for(int i=0; i<10; i++) { /* ... */ } ← ここでエラー } iが二回宣言されてるとかで。 それを防ぐテクニックでしたとさ。。。 って、VC使いには割と有名(だった)気がする
>>801 Walterたんはconstメンバ関数が嫌いなんだってさ。
マクロの代わりに version() {} じゃだめなのか?
>>806 うーん確かに
・constの書き忘れでコンパイル時エラー出まくり、
とか、
・constコレクトネス守ってないライブラリに当たると(MFCとかw)泣くハメになる
とかはあるけど。。。
>>755 むずいっす・・・
#define NEXTLIST(a) (a->prev ? a->prev : a->next)
もできるとすごい楽ですよね。
次のノードのアドレスを返してくれるやつです
>>810 それは
Node next_list(Node a) { return a->prev ? a->prev : a->next; }
でなにも問題ないのでは?ってゆーかこれが何の意味がある関数なのかがわからんが。
>>811 Node_a型と
Node_b型と
Node_c型がある場合は関数を三つ作らなくちゃいけない
もし更にあるばあいはもっと関数を作る・・・めんどい
>812 え?テンプレートじゃダメなの?
>>812 そこでテンプレートですよ。
template TNextList(NODE) { NODE getNextList(NODE a) { return a.prev ? a.prev : a.next; } }
…Dのテンプレートってこうでいいんだっけ? まだ使ったことないから良く分からん…
ところで、あとマクロが欲しくなるのはコンパイル時に決定して欲しい定数だと思う。
たとえば
#define MAKE_VERSION(me, mi) ( ((me) << 24) | ((mi) << 16) | ((mi) << 8) | (me) )
const int g_my_version = MAKE_VERSION(3, 2);
グローバル変数ですがまあそれは例ってことで許してください。
要はコンパイル時に決定される定数を計算したいのです。これを
inline uint makeVersion(ubyte me, ubyte mi) { return (me << 24) | (mi << 16) | (mi << 8) | me; }
にしても、コンパイル時に決定されないのでconst変数の初期化に使えないのす。
…テンプレートでできる? この程度のシフトはともかく、もっと複雑だったら?
とまあ、こういった感じのことをする代替機能が欲しいなあと。
プリプロセッサじゃなくていいから、言語機能に上手く組み込んでくれないかな…
マクロがほしいのは定数じゃないと思うんだがなぁ ”置き換え”がほしいだけだと思う
ソレカ!! その"置き換え"機能、上手く言語機能に組み込まれんものだろうか?
現状では開発環境が負う仕事なのかなあ。
>>814 マクロがあったとしても、例えば sin(PI/4) なんてのは定数展開されない。
どうせなら、もっと汎用的な方法を組み込むべきなんじゃないかと思う。
関数型言語なら意識しなくて済むのかな?
自力でプリプロセッサ書けってこった。
>>819 馬鹿もーん!
そんなんが通ると思ってるのか?
運用できるのかよ?!
余計な仕事増える!
そこまでしてD使う意味って何?ねえ何?
おしえておねーちゃーーーん!
>>822 ワロタ
つまりマクロ使いたいなら他言語ってことdeath.
>>824 せめて置き換えみたいな事ができるといいんだ
擬似関数みたいな感じで
つまり僕等が欲しいのはプリプロセッサというよりは コンパイル時に動作できるプログラムなんだ!
特別に囲まれたコードは、コンパイル時に実行されて、埋めこまれるとか? real sin45 = compile_time{ printf("%f", sin(PI / 4); } ; ↓ real sin45 = 0.707106781 ; Haskellにそんなのがあったような。
Expression Templateっすか。。。
Lokiもそっち系じゃなかったかと言って見るテスツ
>>820 だからそれはテンプレートで出来るって言ってるだろう人の話はちゃんと聞けよ
条件コンパイルは絶対必要。 テンプレートとか言ってる家具師は何も理解していない。
つーかデバッグやリリースとかでマクロ付けたり外したりする需要が 無くなったとは、とても思えない。 テストとかどうやってるんだか。 マクロが無い言語は非常に効率が悪い。
>>832 コンパイル速度などを取るか、実用性を取るかだよなぁ・・・
Walterたんはそう言うの嫌いそうだな…
#ifdef USE_SAFETY ・・・ //より安全なコード #else // optimizing ・・・ //ちょっとヤバめだけど無茶苦茶速いコード #endif こういうのとかね。
>>831-832 Dでも条件コンパイルはできるだろ...。
それこそDebug/Release切り替えとか。
>>836 バージョン設定すれば?
バージョンに文字列設定できるみたいだし
なんだよ!version文ってのがあるじゃんか。 馬鹿みたい。クスクス
const/mutableホスィ... そう思うのは僕だけですか。そうですか。
>>839 よかったじゃん。
わかって
>>830 ごめん
そしてありがとうございます
今はちと試せないので時間とやる気が出たらクソして落として入れて試してみます
でも。 #define FOO do { 長くて複雑なコード }while (0) こういうのの代わりにはなんないよね。 あと#undefで別の意味に置き換えたりもできなさそうだし。 テーブルみたいなファイルを読み込むとか。 #define DEF() ・・・ #include "〜dat" #undef DEF #define DEF() ・・・ #include "〜dat"
#undef は確かにあるといいかも知れないけど 大規模になるとソレが何を示すかがわからなくなるような物はやめたほうがいいね。 でも D は別に企業の為じゃないから必要かな?・・・なんかよくわからなくなってきた
結局
>>843 で言いたいことは、el みたいな事ができなくなるぞと言ってみたい
elキターw ヘッダファイルに実装を全て書く時点でアレなんだけどな。。。 マクロの使い方までは知らないからちょっと読んでみるか
結局
>>831 が何も分かってない家具師だった訳ですね。
implicit instantiationもどうにかならないんだろうか…
家具師ってナンダ
>>842 >#define FOO do { 長くて複雑なコード }while (0)
普通の関数でいいだろうが
>テーブルみたいなファイルを読み込むとか。
そもそも他のファイルを愚直に展開する#includeが無いし
>>850 ちと el のヘッダを読んでみて、関数じゃ無理やから
,∩ O O ∩ ⊂ニ、 ニ⊃ ⊂ ゙`―‐ 、 __| | / ;" ̄ヽ,.ヽ O O O /,――' (./| | ノ.,; ヽニニ⊃ ∪ (_ノ ,∩ O O ∩ ⊂ニ、 ニ⊃ ⊂ ゙`―‐ 、 __| | / ;" ̄ヽ,.ヽ O O O /,――' (./| | ノ.,; ヽニニ⊃ ∪ (_ノ
関数じゃ駄目です
まぁ何だ、マクロ取っ払った言語はD以外にもアホみたいに有るワケだし、 今更どうこうということはないかと。 el読んだけど、 大抵の場合const/enum定数、関数、alias、条件コンパイルで何とかなってしまう感じがしたよ? 具体的にどれが問題なんだ。。。 そもそもelってのが超初心者向けなので問題外。 // ベル #define BEEP\ \ elSound::Beep() // メッセージ表示 #define MESG\ \ elSystem::Message 論外。
むしろ
>>755 のような
>#define GETADDR(x) fp##x x = (fp##x)GetProcAddress(hLib, #x);
みたいな「'#'をつかう系」(何て言うんだっけ)だと、
マクロじゃないとダメだけどな。。。
マクロって引数の並びとかも関係ないからね。 #define FOO c,b,a f(F); 関数で書きなおせって言われても無理
ageちまったぁぁぁスマソ。。。 吊ってきます
>>856 じゃあ D は brew みたいな物だといいたいという意味でいいの?
D はそんなもんじゃないだろう。
C にとって代わるわけじゃないが、 D でプロジェクトを進めよう
初めてのD言語 D言語プログラミング D言語入門とか
そういう物じゃないのかなぁ?俺は織田信長よりはDのがユーザー(プログラマ)思考だと思うよ。
言ってる意味通じないだろうケド、つまり初心者から上級者までが使うものだ
あと el は超初心者ではない 初心者 だな
んでもって、大抵の場合 const/enum 定数でって、俺が言いたい意味わかってた?
もし通じてなかったらもう少し詳しく言うと、elmain って所の置き換えをどうするんかな?ってこと
大抵の場合どうにかなるじゃなくて全部出来なくちゃまずいんじゃないの?ともつっこんでみたい
>>852 elMainとか最悪なマクロの使用方法だな。こんなん出来ない方がよいよ。
age厨が着たからもういいや
つーかDなんか普及しないって。 1.0未満の言語で何を作れと。
そもそも el なんて例に持ち出してきている時点でどうかと。。。
>>860 もしelMainが良いプログラムだと思っているんなら、お前は超初心者。
>>866 まいったな〜、別に良いプログラムだとかそういう問題か?
なら俺は超初心者でもいいぞ、んでどうせ初心者はD扱うな出てけとか言う香具師だろうな
んでもって良いプログラムといってるあなたも超初心者ですね。
良いコードなら通じるのに…まぁ揚げ足とっても意味ないけどね
>>864 DirectXとか楽に出来ればいいんだけどねぇ。
型のチェックが厳しすぎる所為で常に型変換を余儀なくされそうだ...
言語に含まれたDBCの機能を利用して、 外部のテストルーチンを書けば便利だと思うよ。 例えばclass Aがあるとして A a ; という変数に対して、 assert(a) ; とすると、class Aの不変条件をチェックできる。 要所要所にこれを入れておけば、もしAにバグがあって aの内部状態がおかしくなった時に、 おかしくなった所で検出できる。
と、1が言ってますた
ヘッダ一つ47742行か。初心者がこれを良いやり方だと思って真似するやついたらすごい哀れだ。
別に悪いアイデアでもない気がするが。>el 余計なリンク作業いらないのも売りだろうし。
マクロの例としてelを上げた人は何が言いたいんだか。 ただヘッダ大きいだけじゃないか。特殊なことしてるか?
>>868 余談だけどリリースコンパイルだと assert 外れるね
>>869 >>1 さんいるの?
>>870 哀れがりお疲れ様
一つのヘッダに集まってて楽だよ。
勉強になるし DirectX 使うならコレを初めに使うといいね。
メンバ関数内でどういう動きをするか見るとなかなかいいよ。
874 :
デフォルトの名無しさん :03/11/26 21:24
余談だけど elMainみたいな事は、 C++なら template使えば(多分)出来る。(多分ね。。。 template引数がtypename以外でも(intとかでも)OKなワケで、 それがExpression Templateやコンパイル時の計算etcの深遠な世界への入り口だったりするワケだが ・・・でもこういう使い方は明らかにダメダメだよな。。。 Modern C++ Design(そもそもコイツがキワモノなんだけど)なんかだと、 マクロを使わないと切り抜けられない例が幾つかあったとは思う。 Dは初心者向きじゃないことは確かだ。それはドキュメントにも書いてあるんだけど。。。 でもJavaが分かってるなら多分十分使いこなせるな。 逆に、C++をC的に使ってるだけの厨房にはまだオススメできない。 DBCの有用さとか分からんのじゃないかな。 あと、ヘッダに色々書いてあるのは論外ってことを十分承知して頂きたいものだ。。。 gcc/mingwの様にプリコンパイルヘッダが無いと死ぬ。 VC6で、テンプレート使うのなら仕方ないんだけど。。。
いや、elが良い悪いってのはどうでもいい話だよ 本題はマクロだよ マクロ
sageろよ856
スマソ。。。
すまないんじゃなかったのか856
>>873 じゃあお前も全部一つのヘッダに書け。
大きいゲームになったらコンパイル長いけどがんばれ。
DirectXはもういいよ
>>879 別に一つのヘッダに書く意味が無いので書かないよ。
>>879 が何を言いたいか理解できなくて悪い。深い意味があるなら本当に悪いね。
別に俺は他の人が作ったヘッダを利用してるに過ぎないだけであって
自分が作るなら自分がわかりやすいよう作るのが当たり前じゃないかなぁ?
el信者のせいで話が変な方向に行ってしまいますた。
問題は、Dでわざわざ書く冒険をする意味だな つーか何でゲーム屋が出てくるんだよ 失せろ
スルーしたけど >implicit instantiationもどうにかならないんだろうか… implicit instantiationて何だっけ?
テンプレートも分かってないのにマクロじゃないとダメとか馬鹿なことを言うやつがいて困る。ちゃんと勉強しなおしてください。
>implicit instantiation 調べた。 Dでは、テンプレートはinstance構文で明示的にインスタンス化しなきゃならんのか。 template<class T> class Base {}; class Derive : public Base <Derive> { }; こーゆーことはできないのか? 意外に使うんだけど。
>>888 それはできる。
class Derive : instance Base(Derive).t {};
できないのは、これ
template<typename T> T max(T x,T y) { return x<y ? y : x; }
int n = max( 1, 2 ); // どこにもintと書かずに暗黙にmax<int>をインスタンス化してる
>>888 単一継承しかできないから、その使い方は有効とは思えない。
891 :
デフォルトの名無しさん :03/11/26 23:23
すげーよDスレが賑わってるよ。 あげ。
>890 だなぁ。 そもそもテンプレートクラスの継承なんて全部、実装継承だし (だよね? よくよく考えてみるとこのやり方使ってたのって 「Singletonをテンプレートにしておいて継承」、とか そんなのだから無くてもいいかも。 継承パスが勿体無い。
template Compare(T) { T max(T lhs, T rhs) { return lhs<rhs?rhs:lhs; } } を、もし一行で使うなら、こんな感じ? int n=instance Compare(int).max(1,2); 普通なら、 instance Compare(int) intcmp; int n=intcmp.max(1,2); こっちか。
マクロか オレは条件定義はあるがマクロがない言語使ってたから気にならないな 確かに、テーブル埋め込みにincludeはほしいけど、 m4でも使えばいいからな・・
みなさん開発環境は何を使っておられますか? 決定版のIDEがない今、やはりemacs系(vi系)のエディタが無難なのでしょうか? コンパイルやデバッグもどうしておられるか気になるところ。
897 :
デフォルトの名無しさん :03/11/27 10:33
>>896 がエディタ&コンパイラ&デバッグ総合環境を作れば良い、コンパイルはdmd使えばいいしね
>>896 さんガンバっ
>>894 もう一つ選択肢を追加
alias instance Compare(int).max intmax;
int n = intmax(1, 2);
関数にされると迷惑な例 #define HOGE asm { ...} f(){ HOGE HOGE HOGE }
もうマクロはいいよ。。。
黙れ856
あ、856って俺かw 正直、他のネタが良いかなーと。 マクロなんて前近代やん。 m4使え、ってゆう猛者も居ることだし(漏れはよくしらない
m4でもcppでも好きなマクロ言語使えば〜
マクロす
すみませんが一度だけ光臨させてください。
>>909-910 紹介ありがとうございます。私はD言語を先週始めたばかりで超初心者です。
いまD言語の本家のNewsGroup(57000通ぐらいある)を読んでいるところなので
知らないことばかりですが、ご指導、ご鞭撻のほど宜しくお願いします。
ち、本人の居ないところで陰口たたけなくなったか(暗)
居ない所で叩けなくなってはいないでしょ。 ここが「居ない所」ではなくなっただけの話で。
914 :
デフォルトの名無しさん :03/11/29 03:20
やねうらおキタ━━━━━━(゚∀゚)━━━━━━ !!
915 :
デフォルトの名無しさん :03/11/29 03:22
これを広めようぜ!! 日本人の特徴 ブーマー TVから流れる若者カルチャーを鵜呑みにし、 その枠から出ることのできない人間。 ブーマー的人間になるのは、 友達から仲間はずれにされたくないと言う気持ちからなる。 日本の若者カルチャーが遅れている以上日本の若者もまた、遅れている。 ブーマーがそれ以外の人間をホロコーストしようとしている。
やねうらおって実在したんですね
>>916 2ch にトリップつきで書き込みしたら実在した事になるのか…
トリップがやね本人の掲示板のものと同じだからな。
919 :
デフォルトの名無しさん :03/11/29 10:41
>>911 スレ違いで澄まないが、
坂田っておぼえているか?
マクロネタ以降一気にレベルが下がったな
注目してる人のレベルが高ければ良いんだよ というわけで見捨てないでw おながいしますw
D言語のDはDefineのデー
Dのlongって64bitだったんだね(つд`) Cの関数の呼び出しでlongの長さが違ったせいで正常に呼び出せなかった… 5時間くらいはまった…
>>925 リファレンスちゃんと読んでないからだろ・・・
>>926 完全にCとDで同じだと思い込んでた...
あえてDはlongを64bitにする意図が知りたいなぁ。
>>927 自分でリファレンス嫁
俺は丸2日ずっと読み続けたぞ
(その割りに使い方解ってなかったりするが
>>927 Javaもlongは64bitなんですけど
そもそもCだって環境によってはlongは64bitなんですけど
>>929 よく知りませんでした。調べてみたらそうみたいですね。C99
>>929 そだっけ?(・ω・`)
long longじゃないの?
>>929 まじすか
cのlongは32って決まってなかったっけ
32ビットはどうなるんだ・・って事になるな。 Dは32をintってしてるが C で 64 が long になったら32ビット整数つかえねーじゃん
Cの型のサイズはいくつかの例外を除けばせいぜい大小関係が保証されているだけ。 最新の規格であるC99では型サイズを明示した新しい型が導入された(uint32_tなど)。 そして型サイズに関連するCの移植性の低さに辟易した最近の言語設計者は ほとんどが型サイズを言語仕様に組み込むようになった。
>>932 32bit以上、というのは決まっています
とりあえず自分の作るプログラムでは intとポインタのサイズが違うと困るんですが、 IA64ってポインタだけ64なのね。 ・・馬鹿じゃねーの?
>>938 >とりあえず自分の作るプログラムでは
>intとポインタのサイズが違うと困るんですが、
そういう厨な設計をされると困るんですが、
・・馬鹿じゃねーの?
>>938 intptr_t を使え。
ただ、GCのある言語では危険極まりないが。
「assert() の カッコ内に、副作用のある記述をするとコンパイル時エラー」っての、 もう実装されてる? つうかconstメンバ関数もmutableもないのにどうやって実装するんだ?
代入メソッドには汚染フラグがたつんじゃないの。
そしたらリンク時にしか判定できなくないか。。。? interfaceとそれを継承したクラスが別ファイルだった場合とか。 メンバ関数がconstであることの保証をどうやってんのか興味アリ
というか、関数呼び出しはassert() 内に書けない仕様になるとか ・・・んなこたあないか。
>>945 リリースコンパイルすると assert なくなるしねぇ・・・
>リリースコンパイルすると assert なくなるしねぇ・・・ ひどい仕様だな・・・ AVよりはassertで引っ掛けたほうがいいケースなんていくらでもあるだろ。 やっぱこの作者センスなくない?
>947同意 どっかの誰か(Ian JoynerだかMeyerだか)もそう仰ってマスタ
>>947 AVが起こる事を前提にコード書くなよ…リリース時にはそんなバグは取れてるのが普通でしょ?
(それでも嫌なら-release付けずにコンパイルしたものを使えばいいし)
プロは始めからリリースモードで作成する。 原因が特定できないバグが発生した時、 初めてデバッグモードに切り替えデバッグする。 素人はデバッグモードで作成し、リリースモードに切り替えると 動かないプログラムを作り上げる。 素人はそれをデバッグせずに納品する。
>>952 GDBなんて使ってるから毎回起動するのが面倒になるんだよ。
もっと高度で使いやすいデバッガ使え。
つーかassertが消えてなくならない言語の方が少ないだろ。 ゼンゼンひどい仕様じゃない。 むしろ無くならない方がひどい仕様だ。
話にならない。言語仕様にケチつけるやつはせめてDのリファレンス全部呼んでからにしろや。
>>956 は、どう「話にならない」のかをこれから考えるD厨
それでいいからとにかくリファレンス嫁よ。読んでないのに偉そうに語んな馬鹿。
>>955 C の assert は NDEBUG マクロの有無で切り替えるぞ。
>>959 JavaはVMオプションに -ea で(ry
で、次スレ誰か立てるの?
いいよ痔すれなんていらね
962 :
デフォルトの名無しさん :03/11/30 10:32
>>955 ArrayBoundsErrorやInExceptionなら言語仕様にあることを確認。
VC++はライブラリ仕様でC++自体の仕様ではないが、Dはちゃんと言語仕様になっとる。
debug/releaseが粗いというのは、言語に対してじゃなくてコンパイラに対して言うべき批判。
別にDの仕様では
「コンパイル時のスイッチによって、実行時の境界チェックを ON/OFF できるのが望ましい」
となっとるだけで、オプションの指定の仕方についてまでは言及していない。
Dで出来てるそれなりのソースがポツポツと出始めましたね。
966 :
デフォルトの名無しさん :03/11/30 13:26
>>968 なんでそういう厨が寄りつくようなスレタイにするのかなあ…
>>971 3サイト目とかなんか変なのも混じってるけどな(;´д`)<DゲンゴノDハ デジモンのD
>>972 そういやD言語って調べるとD言語ってサイトが見つかって、ライブラリとか調べるのうざかったw
新スレなんか死滅スレになってるな・・・ sageでスレ立てたら板の最下層から始まるとかって機能があればいいのに。 まぁネタが出るまでは荒れるに任せるか。
タイトルが死滅スレっぽいからねぇ…
このスレ埋めようぜ
>>976 ネタが無いね。
とりあえずまじめにDでなんか作り始めた。
新スレ盛り上がってきたから、そろそろこっち梅ればいいんじゃ?
うめーる
余計なトラフィックを発生させるな馬鹿
あとは dat 落ちを待ちませう
goto 1000;
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。